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>
457 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.1.html [deleted file]
doc/html/changes-4.2.2.html [new file with mode: 0644]
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 1a017ee024e4c4f6c8b3b7cb984b4f406aa8e38a..ce8ef9ab8c503430eec36755691ad8dd6e02a7e5 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 d1a2965e85d4f0a2e73b4c05875032eee37b26f8..47abd12a0e54beae2f2b1deff87f0487b41356ff 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 2f2eaf6c7f34255d28bfc2ebdcf1fe49fc535e43..876d8bf9b80259c633eaec5e22e84e889c9f729e 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 c99ee6252605af2fe0ab6fdd5466ccd92d8a0332..9cb4a7d4e84d42c76fea075bb7ef4a497e76f566 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 b151ff59e34564efe666d994145de4644bd03ad4..1c110e1642257c57b00e32288211b60276990ca8 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 f8b2ceaf187f13e67ceb70fdf92b22182736cef9..61ba3754a4f1274deb61954fefff7066cb90cd6f 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 e2f5bd05fa2b545899b76bd137414bd5e12b5623..f8edf1841fb242fb8d4b139fcb1acf2e5e6b3bca 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 b8defad9586089ae60bcbad8c8158753777a5e59..3aa0502613a7fcd8e51cc43ac37e756921666e06 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 25ab913626f0b93f4862ec5da5acf327f866a9d2..3cd2a8618fba1866efec90deb1ba451eada16e0e 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 06f4bb30075e7aed7696da087c2084003869743f..deae3cb80d8206284b1534b477e777640a6386ae 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 c2550ec66b61e497d0a9c931db00c445112d4d02..2e16b093989a73b7563305169270f7d25c8fb915 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 7dcc4969a911f60ed2316ccc31130e62ca5797d8..cef96acdc9a7bbb57b057702ec5864c4c764edc0 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 a46ef360f5177ed8a3ec7d58987d7b7a1626059d..2876dd032f84f1b613548a8fd43f417a59797bc1 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 57941f878163e1e5769f1f654a459ca9d97f64a4..f1d015c340624f2f27124538dbf866ea1e30b2d9 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 f98a2a4818feb523c00b01b63df956c409baef24..83c7f79c71327880f3861172add83d4b9a2e610c 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 85b0c8ecd72579465be07494f0aa363ca070f199..2837758e8e4a33d8c41140eab7b48c3218b17db7 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 c26f5f1135090efda5374916a86d7a00c9435ed5..2ac8b532f7748b927178417303cbdb5181a8efd2 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 c5f05614529b8d738e7aa19552205847bf98c4a1..a123917ee0852f509d8c19ff66908ca44c4eae07 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 1f2ce096c5cd8cca70f1fd5d9953b0418e5b66c6..027fc3ff046e4a9de270289334482d3d0db5582f 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 2cfc48e821f3aa99cf02efb6b340dd95dbb3c121..ebc86d24e2210ba04b42e657fcc911d3b9b9a751 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 0fbd7075d846b894899069f022fc551569788e5a..3f3415ee12b29488889f9506ce0593af8d3887e2 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 598b2d6518c4474f1ef54e357d235baf726b719a..596b883f766b335df344bbf9067effdb539cbf85 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 d197635081beb22cf297f4cd78426da60971faae..1e3e0eaa996973713d3cb1585bcc6b9fad3bc1d8 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 a920e31c20c82e2e08a7f0102d2e41bfa51a2caf..a54134d605222f13d38e3f29e56334a01182876c 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 8ed03c6d8752a31b6b64e28efa24c61cfdc12da5..606c3ad004ae7d0481a7cb25e4a9f25f598b420a 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 98920fe2f4ffc9e7c5da183545c51337254d7fd5..8af8b31ad83bf4b3f56300fbc790d281939be4c2 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 ed66a51a7f154b824b2f8daff53712f66134ca18..d5b6690e532e6f703181b21917a0cf37dc3afa09 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 165ce9d9b717e25bb292c5bc7178b391ba14e959..b57be90cdce9cc1bdb57f2bf2528db27b52949a0 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 b50caefded2b555d3068d2d6013b42b9100b6d42..b83880535e7efaa0f6d210b5b732aa9d6683d554 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 c7b7f43ea4c4965e1d323205c01d771756184039..2173f061ebc84de567987bdabb31023caae9c9c0 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 fef5d400ca6d3ec020a75be37a24d6a7bfe7d50a..9acdf0faf741ef6161ca82ee36f79fdbaff20c59 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 7da8def5e723f7c59e9a26d18b070946dce0592f..1c24ddd45fe82386132e4e8f0fe05a3f23c88291 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 53b66cbfaae6a9b0d614bd47c34a2993cebef5bc..954d53a4fb5d6c079781bc369c702dc0fb2bad52 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 caacb6a7ece399f245188a4f3e36481b5b56a6cc..fbae72780ce1dfe35a85388819a5904d28f933b7 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 6f286ba8f5b3fbb3c20e4e1ccee2ff1540691a37..b9d8b558e20b61999179be69c4f267a5ae5a07e2 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 661eb41ed4c4d588c117ad7173023bf5830d6c4d..5fd0624e9d21a6e039917e4eab05af51c81eadae 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 0989d808c830d992c62940af231556bd1200e20a..9b2e85ae226b0174114f3285494deaf956aa454e 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 8e0964d92244c767ebf001c94e88bf92903bbf57..2c2fae5130f6f1c4f9d1e2cfda7a0a50aaa3b1e2 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 61e28555ccfee86441ef3bf341f5dcd2b2265292..466184663f07ef13d81e5b2dfbf3bf5360ab5cc6 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 9d45fde76aac00433cf95bc294105c7de1759064..df37094e61a9ba68b54cdeeab615a3ecc7baa9ed 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 5068b2234ecba59ddc741bfa474b281a2d98926b..4c35ce0014389e77d099c52af01262129f1eea79 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 44b501781f1379dfd62e440d893a7422f6073501..1b8868ba5824c6a12eccf59d5529211d4587cb82 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 d50c85931b0832d4e0cb23b9a3ecf4ab9c37c2a6..b6d0084eae92e6bd9c807b70d0224a6f76c7ef29 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 87c22ea2b83374d6771356be764046385da72192..b776727cacdee97859c4796479c746202666ed40 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 8e98198fe8702b6ae5421b873e2247679ba19880..2518da4adab3bdff4b7de29855e829a42ef5e057 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 55fc5fb6aaa77d30adf5cb4f26e061027a3f8a45..714e0071530a8e7638d8b99bd70f0b605fa5dbab 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 0198248ccb1fd3174b2eef83e352f9a85ce3883e..a44cd963fcd01cb9eb586cd7e3b783256c4a9746 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 4cb450dd0c3e6fcd8382d89ff51a469dd2281141..2a8fdd953a6d41945892377d78824e9be257c8bf 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 219e2f2ff30532b9fbe3817dfef2319033eb07c5..24189e441f24d5290a949cfb73d1a67b2740db84 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 a249d1f8e537e9dee208c724b04c6a5482e72465..3fa9cbe8820879af1ec7cad6d01b45427b8011d0 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 243d459d0af4a2a866ecaf715cf1136e8bdf19ca..6ebc3d7db6dee66a4420d2cb5a7133252c8bedde 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 9bb7add19633ba5ed2708d73032226a10df16910..a97893c9d55fdd6d34d5a2d877061c67a033317a 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 a5c6ec4d557fa7607e8f68562e63e3ef397fb33b..d63d48068b8ef4aebca7a1eb2cf8f697cff73194 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 d6d80dc26bb3539b8b69078bfd73b2a481569b1b..1e913a2564ce49302b9926196773f675b0e20c01 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 64aeff7fa4c421c338dc27e19f266146b21becfe..2aceb5b412c17be0cb6f06e0313a8f9afba3e9d5 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 b0e1a08f231e4764c681142c44912e8f88dd33a9..83531fd6be95434fd454800291bf9c1cd3af6ce8 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 cc9139ddd53b7c997b7d567d39fb3490cf0a6e39..c17dd01eb3b7dd4e79ce26f351a91ba815e8a326 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 85c2ca2ed3343b10f6852a8b8001f0a840007a0c..8d8560ebf4a2a94b864a7b6703ddeac6cf1e5c40 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 d54b32c6741da79f0ee5b7f88653959992a47ef4..97007d30f2cfe0973d470d3f0b69268e626fee84 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 8f4f7228ced540f698482ce03194efa3f9bcb266..31c6dcf617792cdc4e50d9324f963bdef51add77 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 c2eb1afdb53882d377cca5154908a2fd4499b1cb..302b245da4d126407e19f122d7a3ec26726d1ff5 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 340043803caf7c20511fc33f0cb55d9fe4e9f475..fbce42ecbe9a86d97a95c75c3de16f8982b64b5e 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 72765f6058094b1f2124c0084a448e95ae731bc1..ba3060b385165357718ea36cc7e0e4f1ff0370f1 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 ebdfaf1adc1cbdcf097220b15eee3a54d9e39eee..c7b495566bf124dfc1703c87129aaa892d9e1c0d 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 17fb618d85af9ec697762d996173f11f6fd11a2f..caed5f793649bd2e4fac365370524597b31cde78 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 2b97cc0de533a287c2d833d82f758f49dfb0f47c..8cc006566b1d1bd9aafe861e1ee5c9ddf906c0d6 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 324e75fac755d8d1dd03a4f91391e69c5e42f9b8..23ad4a90447334233c8be7f37f51191d2a1e5eb6 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 a101b71b617662805f7f9cfcce1e716d0ba440c1..a9ebf7cccf9368eb8d515d907ca986ae8d682cb7 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 c821a6d6b4ba3f05d43d394561972411b2640ac5..ca5469989bdfa14f1ce7f3365094634b3f3bd3bf 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 1a094c1a02d3cfd74436e787ad84cae0aeed8956..bed58fc789180c2b5d6c3b73358259afdab66b5c 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 5977243f4f0de5f8c66b43ea0ef21ff20df41ddc..8a6490352ed85ea6a0598c410149586bc69d9963 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 ae2b8486e723dedddd3ddeaec8649c56a00a4393..563e9e2bc51b54f39f36fa5a59298a035a5a7577 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 94151288d0385233c14d9c9661ff1a15320f6e15..4e3bc9456ac3bac72d23da5f897d1c9a90c634bc 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 8d9afa4766f304fad640d5a1bc666e00fe5e8b4d..d9dfbd46cad2bf32f686cd7aa9055d5f5923c017 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 8e09abaa6e09efcbe9ca546433f92b7084cfff36..64d02ab2b54fabd677e9b2922136cffdddd1598d 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 d1b12505f4079c2aabc344e61d250c4b2e5133f4..830d09287cfc3cf5422af59a04e2cb611071553a 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 d7053d07a348fb1d043f64bfbf2a3c2f31e0d206..d540a8cf879eadab44114415a74687cabd2a530e 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 009a7c8e2ad64c0c142324fe7c5d5b7bd0ae98b4..fef8f091e9818bad1309cc7b79950d731a2c6111 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 8d4800b94fc46f54c1ff0765fd949ece8b1170ec..5e700d4c5aad79414329f18dad635e778405a57e 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 8c30def4b839b33cc55c1d07ec0cad49756e7420..86e9a9f3a49788a5cd71a99f62c4fac738755426 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 b9865aaa3c5dcbbc375463361e3a796117139496..b6ed2d585b4e95d2355e1e990f9b8662f142a1ef 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 2d89e92b6baf3fdb6927c04dffa8a2c0a523d6dd..640eb61ce3b5d1e9e2a9be4940b110eb02f46ccd 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 a7dc5f73ede1ff6b9d8ea37c571476074d1c5aea..6a2961ed037fe33dc54ff4338aa8fe067997c94a 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 22623ce62f15b97a85cc733a121c33912747c7d6..2dac99a445f9c7d584d9694e796d96a60bb1fb59 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 c936e046d68f266b57b4e4aaa0d8a6004dd5e306..387bdb8bafcecb063cbb3831951f53b1e6598682 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 65c76c0cd590ae1eff178975a201b7cd28e8da35..7461fecc0db055b03034feb02acce79f9822b5dd 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 4af72323c5af6c5bda35fa5b167e532bad75c231..6a6fdd75cc3fe465123383f217d55fe1d9fe3c62 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 12891c520bdcbc0e22cd27def965681d250b1bf0..dec73e878484188d57c3f5865cdd43caf3a5d68a 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 142ca528599e113ead3a78c6ac7432af589880af..460db28cd9e19a6f589891787b25b2a97c3c5fe2 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 ba98b7b39a46680c2fb5bac01005c81ab50095a8..c6d8d85a4e84e6d75e0924ca7c9aae36386943f7 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 29ffc16dc286e66ffeb10cb78e2ee13a6b34a131..ced5ddef328e60cb65fc84aac5c684874e5b9a4c 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 7027ec9bc8b2faa170c9f181f5b32e89a1c14f9f..8efac180b1ab4d12d4ffe3bca44c2eeed3d49cee 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 8927deffa37aba87272db500b5153ca71611ba38..04f6aa91cb5f82ee723c9726d355e2070aa4d58c 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 60f33bf0b5b68ff548da198836660bf0461513ed..96e490acc42cefa11c8142076458def51325c74f 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 203d49eff2faad18a3df871324fee33791e5d77b..aaf30f3afd9f8c51846b48138db299d1f8879efc 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 89e377668e582ed9b5cb57e5bdca1326026f100e..88bb683f54f9a1075467985327e96194ace8bc1f 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 3156bbd0a2d1c6da4107deccc3ad1f509f69c42f..b68494b673976fb8b38624a559aaf85135173deb 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 7306969eaee76a69d9561f5f99289881a86ad67e..3597ed816bc17961f27328735e0e7a55fc4a5723 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 0892d04ce51fb42189ced43f60fde3ebc7ca4970..0650472601e180eb95bdf7f3aeea514b1fc9f83e 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 4a371c3ebf2eb5b2f1b9d431eabbe924e86481a5..8ec662e6da95321d4f96979f341d3cee2bb6979f 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 82f65580905eb281a7af37b6969d8d26f66b499f..1d11953cc51db5a2a1002fda4bd5c0b5c26c2ea8 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 adb2977ac48a9cc2a21c38a97d6086ade5b5b2e4..33b89b5bb7d558b5e98078545e6bdb3c026b6530 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 8a6c3432b30409ebf1ccd761285e1dbd67287ec7..2d0c25a6d0763f761d9177f1135de1aa37f44694 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 6f5b33739c2b28e66e49365a4161def76b4016cc..0aed260983752b1fe839f54f373c2e43fe41d653 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 daa6a40def6eed838785826457f86c92cedb0d7d..0639be3b6e1fe37425a42129531f2e50e91b72a5 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 0724c165fe2415f80a28ccf627351f62c974a593..e6f10a4a65075a9f120df2668c5b6f4c558bd7ad 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 9af9000f2059179ee45684dfff4506ca663a3cdf..523b8e7b8e9bf0fe50db96be56a1d41f74518a40 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 5a9f229b71d8b32bf00bd3792e6d5f2e72bfe922..eb7beef15d0607e4c9e5ba49ffd949f8ba68e140 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 8b4c8005231d2e896d5254e2c37bdf0606d86c56..addc752bf661e2e52de0a754d7a096cce92670c2 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 6293f65ddc58c3c541c8c0ed726bb72706681f28..117c96a0287ae2bcd7dc98e870f6e603878aedc1 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 720f301a4f7e28a7052de7244053c425e502be4b..dddbd1d42468fb6cced0d1ffbee0e0cef5332f2d 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 0b07e1f3bb377fac84446e0242183f7d117c75ad..9c322023564f2437d603ee686a0601bea7caed28 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 9e5df5c437373045a059937a88f014a0c2e098fc..e3c883d09abed2d173cd8da0fa6f92a6cadbd17e 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 a2d4c77525aa7e3b0a75152091acca892e62fb04..a8593102922acbfa3f51d6b7e42851f400eeafaf 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 e7e7be9871454f19ca7d6b292739a93ddcef03e7..6cf4f603c7a5eb76c25275bb19fca53f2f1919f2 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 28569e802bc4b7887b11b2aa203d6e68631d5ee8..ae0ab29524270c1443c0b29d5e63abdca5670f3e 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 02a0b470d4657e6ddcf7ded740f61e78c1005502..409a3e72a77fca9329bec17ee01dfcf30238a6a0 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 33fef833dfbcd13cb03637d306854eff0f1b8a51..b7ec8464416eeef491bfb9a3a8f1a4219d2425b3 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 f0f3907c822590d952a94fad4f6a206a36a502e0..65d9e7e99c97f48dad2589f0a01e92a2146d8aba 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 8448100e2d7e42921e4e00accc94b7cbfc900543..ad4651854fd98624852f2c6837a7e9b17b99e3b5 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 8f2bc0d9b963a03682041c9fb1c80717acda46ee..92302930dc5e80e8ff05fc01749989da85c3459a 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 19d1db0bbeadae0e62426daaa721cc3abb5a0d95..169da7fdb382f3fa78538823acfedf5de7cf07fe 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 b4ab4d1e4b61d2e242aa02769f3dba57ea105b75..166596c64366e5d41af2170fb43adb155f34b4f3 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 76c3ede355e04d07016a4a5437904396cef2d146..ba207c54056a7848fe44d459af0f6aec9ac8cdd0 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 3e4be177bfaac1ce0d6a608f5c22fafca5f9c180..1fd160217a3a81b254e58d3b8591a21244f3b2da 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 f7fbc6315fe879a9b9611c85b98f891ee6b93559..52247cd53209f551668189d162e907284e9181ce 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 8b988f0d52c8353dcea68fe22b417e069b1c4c90..9adbf99fd60535b31607c1039f5e846fa5d94efd 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 15526b94d91811daa0a091ee2d8a82b1d18e02d2..0f6fa2fe378fb673f0ffe73e196adfbca6135e0c 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 ce1e1d7fdd1d673c0619ba84dcb473237a926981..caaed6ead5f3807e9581645fd5a530a1ba4f37d6 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 ff9ffae40c110d8c9fb12cc82130a117799756a2..8e3e6dd4abac202fcffd71a0417d8f4b33286467 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 b374158aa5aec5d2b5bdcef9e03b6e7c93e60da5..3f12cc897dfbb56b3f720c81355455507cc2fa08 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 d4c4b300fe619059edf14f67ef634ece279b826f..17539ad177e67c2b0713b303da18728ce3339386 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 75a485ec0cb072c63e214ed1ebabbe906f7107d3..09cf1db465a0e1b9a315a27c07f3b980d3b90161 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 0f169e0e0e17c30c992f2ea00d4f44d35afb8117..bf28c434b0a49e2e60c335060454b085c6c8d2df 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 ea94f78c8cbb62ec699e8444a037f332739c1ba8..8db2524a9145a95db20e93f59cd9e4cca1b23c64 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 7140d8aac87c59c8cbff58a107ed7297ad987c26..b9846afd8269a5b96a0eb9e92e5ace7631c42b1c 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 a1beeffc69a308f39a4b042d71db08d7cc5e7d82..39669ee6f9b7ccdc41583dfac432c7c7c22c3e75 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 bbe7839de496046591a6aedc50a314ffaa1e2a2d..4a8e478707c3e1dcfc11def94b4b753a782187f7 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 df82f070452dcf885443735c679fdd50da9d9c52..b7182c9f21dfc2203f8969d54010c504877c3dbb 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 992a09b75d6c88873d5db8ec0c04672d01c8ce08..fd77710d95c0428b6b75a3be9d3e83458805fd6d 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 f1ba7c60abb3bdb4c52c037d770d3ab4f24537b7..e5e6ad376bd901ab87b702597fe93ffc1bac1406 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 98a9c9245c7ce70fc8c32872d91be1d4e9f3383a..5f4a78f9b8cb720309f3b7b4df579029fb62f6f0 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 1eebe6260dd852e62ded814657f79a34426047a0..36a22e2779da9493c82c89f1c291d8c64bcf177d 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 48ae837b1a2819352283a570e4ba4a7c105f7ec5..f3c4bd090b5d70e5cd991bab97ff6b85efcfbe23 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 2cb4b67421451124d6bf63593eec83a506beadb1..143d7f2ce27227b9761130c13bb539e067b8ba43 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 fd82149456ca8381cb8938e49a30104d6f76502c..99f3fbf6ce92ce11828b31ec383f6d6b03617291 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 7f9246e562d12efce7e741c8965808d74e7d6b9b..1afce86290c9b5cd394035b46a6d812b8d9e0626 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 73e0fb26fd09a24c9b5892ad51d26dffa6195d68..1b080a534fd3874fe084c5b0bb72881f89da1a87 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 15f6fc53213880f9ec257c1127c8bf2005305ca7..46e3ce6a834184b94b0de2b032175834e746633c 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 d64b3a386b954ad031808aed677d3bae657a00d3..7c5d2063dfea3adae296a23225ab513d53f5701c 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 45c98a9155eac3244d518ba508adb987ac060276..77c37100eb606cf053fd54bade4d82a49780dee5 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 39d00eb25904a24f821023b10fa12a41fcc89479..2e767a28dec018783d155d980ac4fce7ff90bc91 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 43637948859082c3db781dfc677f4f4139648d4b..4e952420b29856b7217bb33b8e159ec248db6a95 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 ce70957b20bd0f28e998d68365e773d434422624..c6c4229cbfc6e30d47599a96c325df2a5c68e687 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 6ca66622af8b92d212bdd59a406327cc9d8dda67..706caadac29703205e9ff8710e31905ac0935778 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 1eff41ffc6d5da195d96fbd51f66b168c0e99d6e..8113a64d46e11e41fc328efa07aa1750be67af72 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 85ee1e3c77615da64aba3df222be7e8d0f59c3ec..8d188367a37d2406419fb9e86f56d1cc99ba4b53 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 2c70460032f7dad920ec4f93fc8b9bb155966342..86dbb260db4acba36f75acb57955d59a63562ef8 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 1ced27dc2e902cf8104589734fbd752dad46884f..599fba97809c7b6fdc59eabcefb6bf31c73bae06 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 ac5d7d4728fbdfeefd9cc8e5fd7179566d5ef4e2..3a0c92c121a92fb30ec4f42311c94fec858553fc 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 934b99a7d759cf42305ea691669ad42babd0f5d5..16fda2dd4471e52ae8525dfedb72eba7e03f12e1 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 99adbdbae3136c9183dc2347d19c97c4fc26f1f5..288dc2247564aaed0cd0324ada1d03c281230d46 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 39fcb464327c4ba55f8e4aff24dbe1bb587606af..9f1655af3fb4630eb71eed0c26a0365b1fd2d5a8 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 319e0cf2eef08abb6585c237cc9e153da0b4895c..d438f9f5d2db0363c2145904cc36a48c2ce48a16 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 7b479d5dfbecbe1460abfb7641ea4e91b0383dca..26315b329eeafd50b4b33ddb7fc7c35fce7f6a5a 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 5f858c61bf9b540ab51d792472a8345d765f679f..6603a65faa23ab9fffc99f5e7e906bb8555fe882 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 caea6f145137a129214885956e359665a07e33d1..b69cba5f76c831ac8365fefabb202a7ec3863802 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 695bf8212398bc8db79ae79ab5dde37dde6858f7..98ee91a2f8562da0231749da10145ffa93fe1414 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 d4142df25699566550a742991413536623bd5b07..e289f8b63738012bf06dc80fb9c35bb12cc27e59 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 9cbc3acc9a7012fcffe224e92bde7782ebf69a81..10f162e48c06c8756e60cd8df1310fb799be48c8 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 9b5df39e5f83f9fd1a57cdc3544ea018295d4040..49ad62509c332fcde66cb525170034e62fc1fc4e 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 33b85a83a2a37a7f4d88ceb13a6795c5c811762e..104f512d721ada3567653afd246fe6376b249663 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 48170e1de1c2e1f1b85795ef2af02681f9db5fe9..da44f599bacbbfa2b609f546d542d919e2e9bff2 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 0b1aebf1cd36b61a1fdb2cdf60ab24f0798c4450..b75f00a08399daf17d2f6426676b3af7b3bc2b2c 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 68e9ad8836667cb3ec58311257270d981e20c0c0..129ae0a64c0b473aa9ac56f8c99ff00b8561a49b 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 b48977dd4d78a9a2d2f7b3bcd74e5994c8a0ad55..117b050cfea1374a619916b164fd1ec51c182b34 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 fd98e00e218a130fdd04cf65a1c5b86669bc6607..ca979ecbddf740d74b62b5e0a25cc22c408f669e 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 cba067c560d8cec46ebf1a2e99db4627da57b813..f5bd55af76d00b8206609259e8aae73ac81554ab 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 c0e40eec1ead8d25ed62152424f542a024ca26de..649ecea3328c0d307a1316f2337e8c4a55618208 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 e8a7bfb1aa5587f115ebe93278c34fa583ab9ccb..a76a789249670ca2422d210052da9c4957d200fc 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 a771fe7c31ff311f31e5d968c2b1528d0bee4416..5c3c888d1c70b91466238658414a409c6ec40ea2 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 02813df925bde0e83558789463d4e2b9bc628d05..5912a9723b6914674ed98b94065334705b6d67d8 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 1d74318382424ccccac4c16c66cb0ebfcb3a1756..98cdb311604627b85125222babfa2fc9f520f522 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 6e46ed22f5c13b9cb249064bb844ab429eec52f1..4da160d8a5ae711d76f30a690c66659e0de8d09d 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 d41e9e6de92c4b87a4de9661a2e59689ca16277d..9e856ca2c0999d8d675b24e7b1141f4a642bcb44 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 e3b8c4c03157e3a140f71cb6b329d09fa45b13e6..8b710280e49fbfde3cf3b3f35f995104ea35460a 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 a8cf4f771d0bf0c332205182d53b2625fd9657e0..45dc123f354d40a95e073dd0d8d511b5feb2309c 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 02d426f0c3c2d354895262b1044736b90e0dce9c..735cde126917e0e3f0cc82b4d292f9fd4727fd32 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 1936c069bc11922dc1f1eff44a924fd340d85d95..9821f3cc85f5148eb38f5ce7f33bcedeea11e8c9 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 a8f1a013b0ffbc55732a24d08dd24ba907f1e577..19029d9e0b1c83a72831ba306e5b4b8c58bcfce2 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 e2e87d7ef2ae254bb9b78068fb41520b3eb5294f..9252f188bb4a763ba8f48fce9db4682e33c3babd 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 e0baf4c929732fb7816303f8aede5272ba9ae14a..ba344963d626b411e7569e69a36c0cc5318b10c9 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 5bb6f588ab110fe0dd792482c7ec7ab80b86e941..eeebacb898242675711a20281eca21e4976a2e6b 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 3e43ff2e0e0e67d973c61d6c72d5a127c2da1c38..4a1e466bc2749ad7f0aaad1df6ddd01a43c4c092 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 1ff113160ce2e588fd3216cb99c2c118dc8c560b..dad64a509c477c5f73b40b57f1227e0015604c35 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 a391b5707a9cb4fbecf65676d81901e8db7cfc92..471d89743ac3a675f587866d0bc254a5961759a3 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 dda0cf151c30bf3dc18385d3abb52303296063b2..230fc6dbc712ad3667db4c5dea38d1409bdaf369 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 76505cfb7f25b49e173d305a299bfc5703ea7ef1..9cb82d22df963efac9a95b29beee719040f5186c 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 50b8ba1c48cf1f2a5d7ad2e1a3b1be5cd34ce0e3..7e967e5eec07dc624315dbc3c6288b51cf522198 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 dbda815ccadd902ecb7966b9fa33835ca2c49908..fd2e6ed31c2123b6628ccc133beaa579ff6764d9 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 1c57d34b22f26a8f928cfe00e5d27ca30e6f5356..f7ae7824cfb6d7b68007d93fad017ba53a6dac47 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 4e529244fd326e3a11c0f26fb9806cbf128b847b..92f407fecaf6a9e19560f19b1eb3f2e52927538d 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 5a444a4a3824ff0c9069f50dd5f20981eed1a1ba..a0089c15b6ff6e8192a54a73493b152130d0f96f 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 fb3d632715e67df7267482be279e3c6cc885bd30..89023a1632cd7c7260fb3784d6f91a30b3033461 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 6d7b68cd2badb578d5f8fb3c7497e7e6459d4ac5..356fefc3a0651f87947762186665b28b91a73b1a 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 bd1e63a48029137c3fd0983972204614b99e3a0d..36fc24ad2d0df5d0a6f97fd865158fdde9bb8874 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 d1ad668386f5a0061630cb57e1c3d1370506f32f..a10f492440f81b3b178336a4876a6804c6c58f00 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 d5fe28e691220a3f5566f9c4271fb8db86fdcb0c..88a55ef1ede71e406309a7f40e7528594ca1cb97 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 0614f44b1b1905188685c615138458770b4554b5..d2db861cd34a8d3913b50c37d416fa6597e12f4d 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 836540f5b0ac3c207ef819f0552c56a1c7b55f54..e905088d5f400bd9bdb25ed24bd5f148210feaf0 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 ed61d644046da65bab28f34e5a868a7600a8cfa0..21bad858abcba31d5e3063fce3ca1928e7e140ae 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 fb22d089e9d3ea3a6c9a409fcd6c99b42f72a3ba..0d3f002622e207477538aeb5dadaa4644f51ec00 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 cc6ad649213eb4e4d22893fc5cf472c078d7ccae..e1bb3a08df7027f65bd3e4f0e43a64f51436358e 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 d95869bae4fb2da2346de332badffd0352b427f1..d7fde8f6aa6e701992828164b6b64096832e9c47 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 4ee5e7747adbf1111d7c212e01749ce89617c11a..24458bcf856c9b56589a941bdcfbef38f28def17 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 71a2370fc1d8167500eb0c8b7719d80c94e06c47..000ef3bb2af5e796bfc729adae37c655ff5976b7 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 60122d4a162a7daecd8890e98912ec8addbef329..20b2f5b0b1a6a75e41dc68657a57c618f3a9d7eb 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 57ba1fd524711fc899b0748b6a44dc1a399156be..d2f0c3c34a1357a1c0c0fb94a917677a07bb8fba 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 ace1a498cb32914f0594258bd4bdcef53e383c85..592190c5f11e5adb92a611d91c0a004d4f8c7b65 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 efdfbc6d0680b8bec17b526a8dac53576022f81c..37a16a0edbdc682a4f203b5522acf21ff49499bc 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 264e8cd6fb56dae67b5e9b1b2281ccaa2c095575..6a8f2c2b48883b4cade688b25c4f6dad22813df9 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 9ea985e65a5037ab985fc461f7fbe9d501bf0673..143b34428c065223d4aa97d90e3b31eccd1f60d2 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 b0dd6aca3cc492ae7d36ac7a1f74ddc49eb02b98..5c3971f5688b809c42f22d4352a04ad8d4090c4c 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 db58cba95d8794f333b00e5b503fdc3df399ad52..c2fd7afed50377ab1202335bb5a807f268b91a7e 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 3387e399277de828a49aa84a29ca1a545f301ab4..5008233d44363c24c126d369e2b74230c77a058c 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 f0f61297ad3f7364039b663a8031ae3a5ec8d077..67fd41101d38cb47c87f05d9ba7c6610619674b4 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 8c504e2d8b4a6585315902563a965fd980a67ad4..b9a76d87c63a1b6cff9b01675ad043a979560666 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 889deaf2ada3229f36b5d03191ea2f70a612b899..2b026105aef39606a696a86e253651cb594251f7 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 b030e048b6ce74a96777ad528b6be29d46b5a63d..32eb205599c824d83f54078b8e44f00d8f498c63 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 46301a1f8aec5a5c49dd8f26d700bfda51e54e6b..4e428827c931f2fc5b2cdf5b3a23f8d6b45b67f4 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 770a3d0cd62dd7eac0059f18247baea7182a79eb..5ca389777b8aca6df0737fe97ea55ebafd8b3931 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 207a96db29149511562c566bea220eca196a4c6c..bc9ce76f318353545de43eb97276f36620750050 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 1ed2adcd9cb025e9104461f70b7897c9f31fa29d..9703ffe0d5e5266fd7c16274bef04ecc3812b8ea 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 4f9a186c9c1dc987cc91c3fbd6e5a40b1a8030a2..18cc5ee2fab39e52c924ff5976f926d09b8f6350 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 c41b49233eab29bfa61e9569974595e8374401dc..1cb4e6c6c40ce53ace62000e17b5fe7c5ce9051a 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 5425dbdc6f5614416ea166b8282ae9eed39900cb..ef773dd8ac25ce4ae128ffe97016f501b2095b0d 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 4428031a899c9c49a5bfe5fa7cd43242d9afdf8c..c06bff216913ce53b38c6a33df35caed21c8a859 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 55b733a69f2df60d5fc4dab752fb745c213a1b59..1008b52ce805650766aba0005917a9071bd52c91 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 00b331aa2597c10e0e8255c9aec94831e24007b4..608c868b4d7f59852481b0da438131a3b7bb53df 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 de295dee36c6205bd212476bdad9ccf2c75a71f7..2105553677c9ed7fb066c6789c6607cbf240b7b5 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 19125b38710cb3e1313c5828c9fa90ea2472b4a7..84305e9ca8efa2b0ac35a59aab290dceb2d2ef8e 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 02843eb58af8bf348747af02329ba4d98b9c4643..05e269556631e9c0430746f6cb0fe926f431bf34 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 d7561850e04752ed4839b64fe910d1430b588561..ccc3ddf38f36bea7e6140925353a222ef9db627b 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 fc525d0793d4f8e259075e3326b08f4b85d85933..d6f46188a9f4c5bac60989f3db416de5fc2cfaec 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 2b99f3d2a950114d138932ec51bbc4cece2ecc03..f01ae394a642c3a6e067f2e26b638bb4d18dacdc 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 86d932a66857dcf7ef4c33e740afda0d35072a91..00b386ec663fa8e0313e960adaac4e4bd33b1969 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 b06f7e63229962c9db9e6ddc57269c7cafe1718d..a54b32274f2e8941bca3ecf144611cea53b43522 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 d75b6d3397ddbd91fe9e053abdd768bffb7e7989..b88477cfb72730cc6deea3c693b8a2fc01b822d8 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 036b6fec049f09e5adfe2030c7b0bf78178fbbd1..cc8760e9659ac02058418305425ae0e06fb71b3b 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 72a5a196e1009b87d91cb01f3de6bd66c966b8c4..99d2cfae9b01d30305d5617fc876b919fa8dc7e1 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 69a944c544fc66063949054bd9a2031de2d874bf..baccb1741096f736f7a4a7ba998bfcfa8498a0a6 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 afbcfcd8eab15ec02109f133a2d66021ca3f5776..d77814966e13e00de2a56c77d8e5daed05caa59b 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 d42a9a661df9fef469b52a9b021cb620165f71ff..3614a00a7b0b4d506af877f6c6d9ede9c641382e 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 064ee2523903544d7c3f350772d1ff3153fc3c23..ba4734f9974d4bb18e43386b4ff5d2920606da02 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 18245dd474f0ca6cb0014a023c5e9c8c75782f7c..45d4047fe643dd0db16ce42a40230799adfba1ca 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 e320662ee607acda4485aa7ccdff4b46fc577f89..cadc967d04d5cd372220a8ad30b1d2a6a97fd573 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 5e26c217da216d95841526d1dce3e61583a14f43..67c08bff5ee9d5534d9730453e1fab87bc89ba41 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 c801279a42954611fbcbc0cbb1baf20bf990b966..ced2d95ebd717b60ad4d102e5db48129f7b0bfee 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 e8bc411f8b1b488dc7728be4609b97c1ad66fd89..daa0d6344343eeec3e79667a440031a6f0c28f30 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 a105252a86210a5fc7fd26be7e9bf130270e99af..bebd8d2c208a9e26b6ea770801c963251cef51bb 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 f76169d55531e1acf92d079fd29018da369d6eb0..d417755a3bd2b28918b976f97fabdbcc3924e902 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 ff3289a4e1c78e812ed809714931ba30cad6e69b..6e2a8575fd0ba64540f145fa4687aa0f51a0b355 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 847469bd51d0108efe8d238daa5dd6a439fb952f..1f3586748e0dca326a7459344ac4cd54a9794b9b 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 1dd26fa9a3b8714ab0b76b11c705aed9ebedaabd..b43c7161132b0b0d5c20f4d9b757aae960b08752 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 cdb1cddc9d06aefa6fe5792fac8c626c89e4834f..ba9ee7ca0b0a091c253540b8b02cd015e31d6ad9 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 35b5328d352e07051534bd008101c1f8939c824f..7d2e3cc47f876646b9fbbbb0ae62895702356f71 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 b4287f2290f0812f0cfb6a0b95b11dd60a09d56f..309a30cf1d513655228a9174e580f1131a02977a 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 0ba953efa03470a26289bf0edca3f813044143fd..94dbdd673c851f0a5f1607b2071a58da14af697f 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 356737ba3690e4f514b546ece39410e823a2c7a3..6d16d58399387aafbf1b9f4805568fc8d12cf7ef 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 358541c7f484bc558307f699ab2f8cf694b075ac..d6c9b55f2353d1cbf89016f7d01e42e93db7e33f 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 2f0189fd883d55decb0b49ee5dce3edd7f356698..c61d2ebacb52b9a1186103d7870c622ea8aba011 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 4c380ef6079783612424ba6729fdeccf381c94a0..90898c658563000904f657b37267042290238be4 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 a6b3d6ca538d8e686edecfee7ff8512e63da6f08..ddad24f199a7862a1b0487db4c76919a91adf07d 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 a1f67c40c4446d5129d2a96389f1976745a61256..5518013dce8ddc42c6deb1fe55bef469add34869 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 92fdeaa182d85d080436392ff973b38209a7a745..0d8302379bba0f33c9d47dce4deb54515e754447 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 c97e1fb9867947d5384de38e6cf6c8f0b21e46a1..e09f4d87c861bc88e679bc78e1c7531779ce332a 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 63ea058ce1dcbf73f4f47fdabf3cdd74a85f2684..db5bb449a8f73d041d2de9b2eed612b7b112e0c4 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 61a2ce214873708c4af8b9052f4dccb99e6d22e2..01651747fbfb33cd48989c31a83205aaa779e18c 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 e1d28286f553e5f76cc24d086376c5c93dadb9ce..ba6c11bed3d0497cac50d3bfe79a534b0df76c2d 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 f5217b85c589a3a6eb8903b3e9fc859606b3068b..f1bd3cbd34240934d83c45ecbbfa8b4d01dcec7d 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 b4634f20c6963fd5815865433a37f8eed0eafd0c..886822b605f52673ffafe009fe9f0c194bcc1d79 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 778910831d30013e3973670897257c172064c5d2..c680f5809be77e0257652861496258acbf8ba9dd 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 3077018bfab33d385340d13ab65a447b2904ffbc..68da69a6c32c3e3b471184af56049d779f0b23ce 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 b7a4b3bd175b7c1957e0f7ec035e6d592a1bba5d..4b535ee13561545ae5e9607c6596abd06c262966 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 febbd7da82ce656f824d2776e5e43aab1827fe71..580df7157899bce41930f00a652abb1730c68ff6 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 a58b3265a0e29440730716c52f1dd3dc4e325c06..af61e34c3399dcb6ce5522d5fe49db4132588eae 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 896d6a978b8f9bdca1f850c476397ecde763cf63..b63d05f4f8d6a5a9c188d869091ad0ff512ff36e 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 14c0e6ef0350cc3ff1727f19fd3d1613bb1921ed..95b76540d943a43e5e57598281f6012cbf936e2f 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 e725ac992675d3616be1e71ffee788fa244c7dc2..069f451edd901d503e2355da4c1fb99cc7228633 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 9b3a346ae3d634f614a77d2381a57afe9a698e02..29cf50660fc4be63b3ad7ca3ef13d342a3ba80f8 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 c3da4307c5201881d474064acdde89cd68df33a3..a8607acbcad160943096cf35c56c09eac96d14a8 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 093d344c4ee80da9c0fe2c1cd9f70e5754c5f865..59f048a0de99c9fad15085b55466aae6a791dd42 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 fe7f3a293d6e62e004fa25f36eff3b3a5e272afc..a8ac319081c3fff51159745dacbfc84742502ac8 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 8f61fd129c95c83e11904f03bfe08048d71ce000..906ed795040f4529ccb2632d1f6a4bdf7769c8fa 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 d145a3a0e5607c6eb4863d71d31ba8fadcf44e77..ef83a934f27684abcb1362bc2d5026b5e17a044a 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 0e28cb2cc1bb0903fd96206b6b65946d94e1825b..1a2fe3a48dd2f47e38b091beb07d2f42b28299bf 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 588c416dd282d88b643456d473582d4254525620..f2a06e7c3ac63705473f11e9181ebc6fa1a8127f 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 e5ed6c2d85151506c6e8b09b35655416061aa8da..3e373369eb30d16dc3f317b36a0909bee0165255 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 2747c330392579d6020d936ca4d7cc4f97646614..ca1d8964afa356d9a08bf4f03bf50f291425751c 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 8a5f5d7a4f829ff05cde53bc893a18f58a2426f4..e183405f4d5d2f930830559dea607eea5a580f52 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 02b6ecf37bef23af8898cdfe30616ec4ad94f39e..80d36b990b8758491db6731faf8b11702b1a5076 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 3b74c2244c8be449fc92648b8fbee2da20754b5d..7dd60b318600397a2526de4ea1699cd6d7ed8e85 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 365ffbf524bfb0f010381740aefcbeaa10ac51e7..19f0ebee7981dd043000c23095defb9ed9086bd7 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 e12e2745215fc1a96bbb149e237dc32b66c2e8d3..f0ca23b4deefc075590e2f9033d6dadcafbf986b 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 d8f5c3388198af9f9a42b4caa27e3390de29e8bd..2fa25d2d4c0ea5b0e802b7c93a20906fc22652ce 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 d8572fb8b06174a0ee81092ee69c01ef1d547cfd..7ae77fec3b35c19ff503a016939b5faf50920a83 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 563088424fed940d155a5a57c7b8dc1c4a53f1e6..324d1b18742a0e693d71ce62d3b03dfd4b46e48d 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 a9d6bab2e38107902731f911b5774e0a0ca573a2..127bdb746d4f47913776a363386a6b6354ff7770 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 f420a8f1d277961e3312fa76910f25e2358d4d51..9bfd9a5dc8cf0a5e487d6adc901fa404a78b096a 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 9c608cc84ab54a53d89c3bff14a2aef7e4c616a1..2b6bcd2db8282474176fbb113fe536baf885c14c 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 a68584417c18252613136e17f835a99530ec2b27..1daf107011b105e70420ab061839955226dba1e5 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 21e02476d418887e7a2c5179152fe67477b522b5..1852b0288ead726fe4aaec74f1dd971714be6421 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 6f1097533dc059528365778370d4de1580ec82d6..a82be0e5b64f589e49ed3d3d4721845312061b66 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 78959b104ff051f54c4ab118f9e9db5c5001c310..f2cbc8004fff81bd947b5d6444406257d5ebbf61 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 49662c8ef575270f2487d32de20e86fe89f2501d..5782442cf999d7e7e775b72a4127c1e45b236424 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 9a08bf39d40365d5dd7d4612a984b8b51b0304db..56a1775c53aecb05f9497b6d30505c38ce9b0f13 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 c89b12171cff7f0054800a3f780d0dc86f6fa2f9..dd10824178f8e05c8f52fe3aae5d7f587da907d0 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 ba8cc215a205271d0b5bc9cbcaf1a3690bd0a28b..0b0b60438679eebc0b52acfc636c253cc5e1d3b1 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 7d1a9251c5cf7c73ca11825cb9dca26bd1c7596a..93a6447d1813eaa9cb4d2f41f6ed0d2acd3ec447 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 fcb53733a4509b2e06b30f8348895e509c49c2cf..6e85898596714487b22be09fc0fc40339bacfd73 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 ae3e55aa3c65619841a76fe03aec733c7ca21e89..6fc675fd57aeb1fe49595e68336dc83b7734eaa9 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 e8124c810979c86cf6ad2c473e56d6e2de15ddc2..ffe51dd39f079588257e923d48571e8a0b134ab9 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 db3e05c003290a61315b31e0bc48bebe8063a9b8..b9f4b0f1e9ec7f18c3a7f58e96c0fe0318eaf139 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 74e126ca80d8a7f899ace64ae2b19815ba1e91e4..483a986183e61e68f7a95dd7ebc43ec1d5c00edf 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 8223cd645ce2fbcf0200c138861acf74801b4a76..e20fb68e8eebdf3b217b00fd2e2cae93d468db73 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 8e5b2e2d438b94de5c8fac27c3359e0f6c0c3b9a..0b5d79b1107a38d45483812f53c158d6ca5bfcc9 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 e3a95720de7f2c377de0d5e2354ace06aa68edb0..3210e425dd770eef9457a2697556373df364fc0d 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 455e7fa22374cf7d6dd8511844358da4b39dbed4..8429e7a9fe04cf1c309206f37421de6a9cfcc69f 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 8a06291517d400c0ea57a3ceb6611a18a23c1ae7..51b7df1d665819a2d39f50d290b6ea71600bb532 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 f91d8c49bcf825eae2d99dbbe500fbd1dac7d9ea..294892ef8623dd5d8ae1fcb628b3b15ca35b54f5 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 dc5a49c3d3ad9e2002c47a873cb863699099252a..f0488cb06d4c6fdf35b7d2636c5c05ed0469fb40 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 74251881a2578241cdbd1a568966730db89f4a9d..00680ae8cc66f79c0a20aef62824a92ea2202c3c 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 7b3633e7dfdf6139b6a5f3021b8ec2da52a9f6ed..5a847d46978977dabdab1321aaec0164ca1bde27 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 91f02ade0e191f89325ff84c23929f217f4b8def..9f2b5dd723399e064d600b80407a6a48425a92a1 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 57325c78a6726510f614afbb937564917c028dc1..20cfe958be87113511d0cd25a708a9efc33aa123 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 f1e41f04cf62e2820c1f0cbe7a1b1f737ab65dd6..4dde892714f43c1d9d7aa9d7472fd9e67e59ada9 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 d80d722edb85bb1fa6c8fa64d4ad5048d839b286..520bbbd14e854c099c6e2d343b48ad9845be6802 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 02cbc84a3057834b45a680a8a5d3785165acac4a..4724b411bedb91e1182be6a9159cfc1ceb8ca2e8 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 cc645a72a798f1a96006f22ff635290d579892ab..b3345915f20e51d6c53b5e18d86d390dfa52e7f6 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 0119eb80260b548d9383c8fad0b57fffdc0a3021..f2e646dc19935ae30a8937296795d57e5147003a 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 b0ea024754c7a8f8b012f3565ee7151757f8290a..d7af64b0bd7f1f7a7f0cf038e08681fded38f6f6 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 055237a3987b98ce288b553b410f47f088d0e624..cce7f129d179c38369198390b4c20f3279bc6271 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 0e4ebefb5e629044aeaff7a3f6b13918ce1cfe81..d9d59967d3d4df69d718281757d7119e27f053b4 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 5b1570ea5bd5e39c1e48d306d629081bd49260b1..37799fdaeb630cd32538d2d3c9b5c8a555451949 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 3870ffaf34cde8c1b6204a6fcd5c83c42f90c397..2f1abe4bd679ab9ae5320914507356125062ea28 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 8242d49b93238a54d473c02d7c7a3bb25c2f7a44..58c901ed4b2e83e4b7ffe455a01b1ca6eb550d65 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 d7b8c7c009c7335c56145973c1e1b1b02a8ea44d..6b183fff56fb6fde972a9340acc02be17e66d82e 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 394ea127810239233974c509f41919d14c007b32..00b8ef4872fc3b5289d8c8d3c5c79556ed8efc98 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 8f4950a0782e784baca96cf7a27409c3e7b5d844..37f37b3a0291624afeaf472b58a16cd77f370130 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 5cd87ed99f3494efcc865b64149f536d405e9e11..0b08e82e771237719d5d606f2fe1a3a8d2796ffb 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 aae5e0d0a3a88c171078a99ff8fd70d9a47c2b58..f33fb356091680a61f8f1fd3514615de37bbb5d4 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 f67cb9b92b15972b4ce656b30b4f268f53271028..8a8438f19a814d7881371864d803e3d255aa5825 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 53f561b9bdb9d5be6f219ab09d96853a277f9552..0887edb87b6ac5e380f11445bc9b5d799ff022d5 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 d5a3b6cb344a2fd6a4ca0d230ce88b04ffc760a2..a61e7f00c6637c799d621cdc95cf617f8f4cbcbb 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 89975e0201a17daeed1ce878932661bd66cce61c..ea298b18afef8d5b4f6e62a298b7f3ded2112c7c 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 115b17fe05127dee7a1837e0c7b507c18eeb8a1e..d82359d66f9456e35fca1294a8105f6311bc1d98 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 0a09693f9e3f504bf1ac778da0c6e65c84bcff10..4b8d3f5d9aac9f28ff0da9d6c3f7d58bad4e22ee 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 c7d3105fa876573b8f97cc7617367262c5dbcafb..ccf635acceccac711d7f4fd5254b5e745a28d672 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 0aafb07b9ab0692b79f6b11ff990ba34c5239e43..d1a2a67df5448ecb4b781d80c73aadfb4dc3db29 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 155ab994630b27ab62978067619bec382e543483..d77c6d415e02f9dd9a678306fba78428e3c8c623 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 66309a6f0fa66684996cba39fd8bbc319c90503e..74daa78b0eaeace961cf02ced153153e1b866972 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 daaafcf885657264e892392f5aae2b2d7ecd57d9..b6809ee7c67c76cdd694b6b1c899f178bf0a9f44 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 ce2708a96b26591615bc045a071600d85ffea416..5abc3e1c25c83e3eed50bfffcfafd70ca4840b22 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 e697331054cbccf1d15377f8939076dd34589e65..d133e521dd0da7b6d803820fd45e4a7fc5915cf2 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 1f1dfec7abf7342d6edeb7cf1ff3b52ef2467973..c08f7883b65250f0c523631afd4e65c159047527 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 67964f43e7b98967570db99fa68637e5fd56db0c..c3b099c49c2e80948afb73cffec9b1064bfc03c8 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 99264071509c125031b07b74aaaea530e7189a2b..abbc5a11be8268c7ed67de32f1a069022ee6f8a8 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 3fb8152ce0ccd24de4bfe7ee6ac84d868e0abfde..10a50f334e77ae0468979988598cd45c7cdecda1 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 294b7065bcc610814464b67300eb0ddf5cb2a5af..0a7e3d965b35a468524451e3ca63537778665906 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 38580c0375bbef67803bb75d6058f48dbf537781..e6a251d7cda2b4e7e8ae848f71bee32f167624da 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 91bde1f02998d258ed213950e811ac484ecdc4ed..474fb2c74400e9b326faf4b09f0c0d56f74bafc9 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 54b900c6c87f28ce85bbb62bf3ed1dbea65d63b8..f2bfe871f8401f3b8e79d1fe7a06da1f500b4211 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 a01fd3a28813d2c1feacf190d7975be36e0a9cfb..9d1dca1e287fafdcc8726bcc12c26bb5d00fba0b 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 0c6c85c35fe48861f1a8c668508d9b3617f19042..6d14af52b0a61ad24db3d05b6cf3fb62993915cc 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 35b265a71fc948086e098bebb4ae712c82049808..39a11efd8ec027dbc4e75fb02d4653fb9c3cca85 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 086b62cb2ffc56e2eb82db6d6e5047b66252de88..a6d99e41714a6197ab139342c45f95a6912d59f9 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 5231ddbc4204c3d3a15a488bd17b21cf1c4d0f2d..2f0a40667bdd5b1c7ea9a8e867518ee431e44503 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 eb7d2ab09cb8a471cbf75a6f8ecd894103f88eeb..fa70e4105da13057c6b8e205ac61cdd9d6a3c33e 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 ab34e13b9ee6d46a62b5323349a88bc5d49436dc..20914767b3517e0a706ef77a0b3f5fa48c61199a 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 a9f843909749c3337b90666906f343306d9976db..16116df47d373e731b1fa2d630f8591330cddda2 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 cbaf2440422db2b1729d720b6801d9343a019263..05bfc97b46dc6b1d1e43e4b686c62148dda141fa 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 6d76fb0e6570a568f8c97d21c22612ad22d937ae..39aee908ec31e295e75108b1f2667ad48cd2886e 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 e1f570c11760d83357ee6c18d8ae9cbf57c4a119..f65846b750a1df44bae1e08e5211e535de42024a 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 e4d8956488155810c1f9d2ab66325aab7fd09523..5cac4bd470f58caae63515f601ae919c01f123d7 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 04955244ee8a3622a900cb67039ce710ef452ffd..0c68dd2b95b4e4e6aec98f8445edf147d5c96627 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 97c47c465f9bd78e53dff630c383d92cb7088d36..4337b1e9a408c44c9b9bbae1798314dec2392d80 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 e0e66ae4981e69487f9513f3385875f0824b9722..68db959513ecf9250a89676c45e3cb2da9398ece 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 215e022e41deff87a78ab6397d84fed9d88214a1..b06f7c08f253f6b193e8a960d623cc983bd74804 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 9620b147d952f166e2cdcaddca8e39633ab827f4..d1644d880d74a7d9d860b09741d24d3d0cca3844 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 8a97f30136334c85e521f9267212bdc69b65993f..3a0a47f0bf5d4130332d1dfa0db19200ce768680 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 01a843fc442a3db442634ce7e048f79956cd374e..9b114c38a18d7d42c2a6ee3234c3911a66078df5 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 4655e6230c88fc8c5b3eba7b8467b86e707815be..66f52aad327ae743d760854aa1d7394a48e2274a 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 3f2279c4c0f00ba615f3334b6350f2834a759b6e..68d6edab9d06958093d9afc57d0298aba31dac23 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 d99f6fde4060ea5ad2776e91e734725ca16332b3..16b1801805ebf705ea35ec9e1a45c08fb397eb27 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 554f4dd9adf9995ffc3888b6b54517d50fbadf4a..80abec17451f59721e69763d723140b23c9bccd0 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 d39b31dd3c87494e1e62ab424ccd899ae4986720..69dfb603faf7edf3b1997ee14576c751d8a0763c 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 4a32093faa3a8ba6224e13f24bd72e18cf502ccf..f8097c66385c2632f838b5689c9e1b454985bd3b 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 dc967565b5749228e85787f0fefd095c6377df92..79f323d9e23f2167c731cfeaa6d2e8441d1b41b3 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 597130a62036ce81bdb13855dfcfcf2e87e14e78..fe8eca50f246b0cae0c7421d10e8fc8bac1cfeb5 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 6fddc5e96b138fe10d7b9bca43f458994c8ab238..88dfe6eef78b6169854d6103c611f87a3d115603 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 3bf8f4f22a6c7df854af2da50ce7ce778f79aa75..f74ffde79ef8a760ea45f106188e079d4ea86f28 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 01fa3c49838f388d4196011cdd77c36a4664f908..f8b2d1db41a4eaa48d2d09933f9dab242c37876d 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 59b94c9dc06a51dfdde722abeeeb998658b90a9b..21da863a12d869a45f499dee44375a9bd95550e7 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 9e393394281d644272b6e27c79d7e3374724bee1..83011ebdd71578b69de11f15b9fd36451a71b325 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 1382206b12697c9e8dc2b4efcbf836c7b75ffdb6..49477aaca91aec4cda9ee432234ec39b0bae8ce7 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 bcb2774a79d70781051ab2a7544de6ec7abf6a4b..174cad1a06d333d781286318f0db79f686c92617 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 f25dd0e0d08142d7a2fe706e74b16c09740b7214..358fe3a446bca482c378612ad21aeb93efa8999b 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 94391d71356a50338cc8ea89e98fc7e185a03804..b115baf3a024bc72b116445beb04cf1d13f4670c 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 f0730d3eda110125bf46a9ad9a289d93f333c03b..e92ebbbdd89482af0cdcf67da5a8258032c081cb 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 fe0417b632bd54abed350925cbbcea051aca300a..c85672c4cde5c9f71d1889d3876488c67c55ea6a 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 8a3dbcac4e4b3c30b17aa29dcdfc2466267eb52e..748806c9e5bdaffc1167990ed0b29c1f24b84c05 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 7e3a5acc836eb2cf9013e2e110b16dbe1ca9b0ae..8695b61c44a13b3e501220dd98e4c6dc4b0ab6fb 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>
diff --git a/doc/html/changes-4.2.1.html b/doc/html/changes-4.2.1.html
deleted file mode 100644 (file)
index f564f6d..0000000
+++ /dev/null
@@ -1,3360 +0,0 @@
-<?xml version="1.0" encoding="utf-8" ?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
-<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
-<title>lxml changelog</title>
-<link rel="stylesheet" href="style.css" type="text/css" />
-</head>
-<body>
-<div class="document" id="lxml-changelog">
-<h1 class="title">lxml changelog</h1>
-
-<div class="section" id="id1">
-<h1>4.2.1 (2018-03-21)</h1>
-<div class="section" id="bugs-fixed">
-<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>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1727864">LP#1727864</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/258">GH#258</a>: Add &quot;-isysroot&quot; linker option on MacOS as needed by XCode 9.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id2">
-<h1>4.2.0 (2018-03-13)</h1>
-<div class="section" id="features-added">
-<h2>Features added</h2>
-<ul class="simple">
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/255">GH#255</a>: <tt class="docutils literal">SelectElement.value</tt> returns more standard-compliant and
-browser-like defaults for non-multi-selects.  If no option is selected, the
-value of the first option is returned (instead of None).  If multiple options
-are selected, the value of the last one is returned (instead of that of the
-first one).  If no options are present (not standard-compliant)
-<tt class="docutils literal">SelectElement.value</tt> still returns <tt class="docutils literal">None</tt>.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/261">GH#261</a>: The <tt class="docutils literal">HTMLParser()</tt> now supports the <tt class="docutils literal">huge_tree</tt> option.
-Patch by stranac.</li>
-</ul>
-</div>
-<div class="section" id="id3">
-<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>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1737825">LP#1737825</a>: Crash at shutdown after an interrupted iterparse run with XMLSchema
-validation.</li>
-</ul>
-</div>
-<div class="section" id="other-changes">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id4">
-<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">
-<h1>4.1.0 (2017-10-13)</h1>
-<div class="section" id="id6">
-<h2>Features added</h2>
-<ul class="simple">
-<li>ElementPath supports text predicates for current node, like &quot;[.='text']&quot;.</li>
-<li>ElementPath allows spaces in predicates.</li>
-<li>Custom Element classes and XPath functions can now be registered with a
-decorator rather than explicit dict assignments.</li>
-<li>Static Linux wheels are now built with link time optimisation (LTO) enabled.
-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">
-<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
-<tt class="docutils literal">PythonElementClassLookup</tt> could fail with a TypeError.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id8">
-<h1>4.0.0 (2017-09-17)</h1>
-<div class="section" id="id9">
-<h2>Features added</h2>
-<ul class="simple">
-<li>The ElementPath implementation is now compiled using Cython,
-which speeds up the <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods quite significantly.</li>
-<li>The modules <tt class="docutils literal">lxml.builder</tt>, <tt class="docutils literal">lxml.html.diff</tt> and <tt class="docutils literal">lxml.html.clean</tt>
-are also compiled using Cython in order to speed them up.</li>
-<li><tt class="docutils literal">xmlfile()</tt> supports async coroutines using <tt class="docutils literal">async with</tt> and <tt class="docutils literal">await</tt>.</li>
-<li><tt class="docutils literal">iterwalk()</tt> has a new method <tt class="docutils literal">skip_subtree()</tt> that prevents walking into
-the descendants of the current element.</li>
-<li><tt class="docutils literal">RelaxNG.from_rnc_string()</tt> accepts a <tt class="docutils literal">base_url</tt> argument to
-allow relative resource lookups.</li>
-<li>The XSLT result object has a new method <tt class="docutils literal">.write_output(file)</tt> that serialises
-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">
-<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.
-Patch by mozbugbox.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1654544">LP#1654544</a>: The html5parser no longer passes the <tt class="docutils literal">useChardet</tt> option
-if the input is a Unicode string, unless explicitly requested.  When parsing
-files, the default is to enable it when a URL or file path is passed (because
-the file is then opened in binary mode), and to disable it when reading from
-a file(-like) object.</p>
-<p>Note: This is a backwards incompatible change of the default configuration.
-If your code parses byte strings/streams and depends on character detection,
-please pass the option <tt class="docutils literal">guess_charset=True</tt> explicitly, which already worked
-in older lxml versions.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1703810">LP#1703810</a>: <tt class="docutils literal">etree.fromstring()</tt> failed to parse UTF-32 data with BOM.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1526522">LP#1526522</a>: Some RelaxNG errors were not reported in the error log.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1567526">LP#1567526</a>: Empty and plain text input raised a TypeError in soupparser.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1710429">LP#1710429</a>: Uninitialised variable usage in HTML diff.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415643">LP#1415643</a>: The closing tags context manager in <tt class="docutils literal">xmlfile()</tt> could continue
-to output end tags even after writing failed with an exception.</p>
-</li>
-<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1465357">LP#1465357</a>: <tt class="docutils literal">xmlfile.write()</tt> now accepts and ignores None as input argument.</p>
-</li>
-<li><p class="first">Compilation under Py3.7-pre failed due to a modified function signature.</p>
-</li>
-</ul>
-</div>
-<div class="section" id="id11">
-<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
-<tt class="docutils literal">*.pyx</tt> (e.g. <tt class="docutils literal">etree.pyx</tt>) to simplify their handling in the build
-process.  Care was taken to keep the old header files as fallbacks for
-code that compiles against the public C-API of lxml, but it might still
-be worth validating that third-party code does not notice this change.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id12">
-<h1>3.8.0 (2017-06-03)</h1>
-<div class="section" id="id13">
-<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
-doctype string before the serialisation, in the same way as <tt class="docutils literal">tostring()</tt>.</li>
-<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>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1595781">LP#1595781</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/240">GH#240</a>: added a PyCapsule Python API and C-level API for
-passing externally generated libxml2 documents into lxml.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/244">GH#244</a>: error log entries have a new property <tt class="docutils literal">path</tt> with an XPath
-expression (if known, None otherwise) that points to the tree element
-responsible for the error. Patch by Bob Kline.</li>
-<li>The namespace prefix mapping that can be used in ElementPath now injects
-a default namespace when passing a None prefix.</li>
-</ul>
-</div>
-<div class="section" id="id14">
-<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.
-Patch by matejcik.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/229">GH#229</a>: fix for externally created XML documents.  Patch by Theodore Dubois.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1665241">LP#1665241</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/228">GH#228</a>: Form data handling in lxml.html no longer strips the
-option values specified in form attributes but only the text values.
-Patch by Ashish Kulkarni.</li>
-<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
-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">
-<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>
-produces a deprecation warning and will eventually be removed.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id17">
-<h1>3.7.4 (2017-??-??)</h1>
-<div class="section" id="id18">
-<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
-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>
-<div class="section" id="id22">
-<h1>3.7.3 (2017-02-18)</h1>
-<div class="section" id="id23">
-<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>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/222">GH#222</a>: <tt class="docutils literal">lxml.html.submit_form()</tt> failed in Python 3.
-Patch by Jakub Wilk.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id24">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Work around installation problems in recent Python 2.7 versions
-due to FTP download failures.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/219">GH#219</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly quoting attribute values.
-Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly escaping text content of
-script/style tags.  Patch by Burak Arslan.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id28">
-<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">
-<h1>3.7.0 (2016-12-10)</h1>
-<div class="section" id="id30">
-<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>
-baseclass.  Patch by Philipp A.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/216">GH#216</a>: <tt class="docutils literal">HTMLParser()</tt> now supports the same <tt class="docutils literal">collect_ids</tt> parameter
-as <tt class="docutils literal">XMLParser()</tt>.  Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/210">GH#210</a>: Allow specifying a serialisation method in <tt class="docutils literal">xmlfile.write()</tt>.
-Patch by Burak Arslan.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/203">GH#203</a>: New option <tt class="docutils literal">default_doctype</tt> in <tt class="docutils literal">HTMLParser</tt> that allows
-disabling the automatic doctype creation.  Patch by Shadab Zafar.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/201">GH#201</a>: Calling the method <tt class="docutils literal"><span class="pre">.set('attrname')</span></tt> without value argument
-(or <tt class="docutils literal">None</tt>) on HTML elements creates an attribute without value that
-serialises like <tt class="docutils literal">&lt;div <span class="pre">attrname&gt;&lt;/div&gt;</span></tt>.  Patch by Daniel Holth.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/197">GH#197</a>: Ignore form input fields in <tt class="docutils literal">form_values()</tt> when they are
-marked as <tt class="docutils literal">disabled</tt> in HTML.  Patch by Kristian Klemon.</li>
-</ul>
-</div>
-<div class="section" id="id31">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Log entries no longer allow anything but plain string objects as message text
-and file name.</li>
-<li><tt class="docutils literal">zlib</tt> is included in the list of statically built libraries.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id33">
-<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">
-<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">
-<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">
-<h1>3.6.1 (2016-07-24)</h1>
-<div class="section" id="id38">
-<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>
-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">
-<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).
-Patch by Tomas Divis.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/198">GH#198</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1568167">LP#1568167</a>: Try to provide base URL from <tt class="docutils literal">Resolver.resolve_string()</tt>.
-Patch by Michael van Tellingen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/191">GH#191</a>: More accurate float serialisation in <tt class="docutils literal">objectify.FloatElement</tt>.
-Patch by Holger Joukl.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Repair XSLT error logging. Patch by Marcus Brinkmann.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id41">
-<h1>3.6.0 (2016-03-17)</h1>
-<div class="section" id="id42">
-<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.
-Patch by Armin Rigo.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <tt class="docutils literal">.rnc</tt> files in <cite>RelaxNG()</cite> if <tt class="docutils literal">rnc2rng</tt>
-is installed.  Patch by Dirkjan Ochtman.</li>
-</ul>
-</div>
-<div class="section" id="id43">
-<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
-the external libs.  Patch by Youhei Sakurai.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
-Patch by Duncan Morris.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <tt class="docutils literal">TypeError</tt> on import was fixed.
-Patch by Petr Demin.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id44">
-<h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="id45">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Unicode string results failed XPath queries in PyPy.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
-and continued parsing instead.</li>
-<li>Deprecated API usage in doctestcompare.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="b1-2015-09-18">
-<h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="id46">
-<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>
-that does not remove definitions of the provided prefix-namespace
-mapping from the tree.</li>
-<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
-moves definitions of the provided prefix-namespace mapping to the
-top of the tree.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
-known from <tt class="docutils literal">lxml.html</tt>.  Patch by Simon Sapin.</li>
-<li>API functions and methods behave and look more like Python functions,
-which allows introspection on them etc.  One side effect to be aware of
-is that the functions now bind as methods when assigned to a class
-variable.  A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
-normal Python functions).</li>
-<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
-passing a filter function for picking validation errors from reports.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
-that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
-Original patch by masklinn.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
-and processing instructions outside of the root element.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
-setting and removing the public ID and system ID of the DOCTYPE.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
-<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
-of version 3 if available.</li>
-</ul>
-</div>
-<div class="section" id="id47">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
-to foreign documents) could leave the tree in a crash prone state.</li>
-<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
-an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
-Fix by Jens Tröger.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
-no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
-rolling our own in some cases.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
-to detect the use of illegal characters early.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
-serialised.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
-Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
-in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
-<li>Empty prefixes are explicitly rejected when a namespace mapping is used
-with ElementPath to avoid hiding bugs in user code.</li>
-<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id48">
-<h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id49">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
-Python 3.4+ was removed again.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id50">
-<h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id51">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
-as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
-double quotes.  Patch by Olli Pottonen.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
-<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id52">
-<h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id53">
-<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
-of an XML document.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
-with pseudo-attributes.</li>
-<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
-<li>CDATA sections were not serialised as tail text of the top-level element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id54">
-<h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id55">
-<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">
-<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">
-<h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id58">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
-content after each API operation (starting/ending element blocks or writes).
-A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
-the output.</li>
-<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
-which will add an empty head and/or body element to the result document if
-missing.</li>
-<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
-<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
-creation.  This can substantially speed up parsing of documents with many
-different IDs that are not used.</li>
-<li>The parser uses per-document hash tables for XML IDs.  This reduces the
-load of the global parser dict and speeds up parsing for documents with
-many different IDs.</li>
-<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
-expression for the given element, which can be used for lookups later.</li>
-<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
-objects after writing to them.  Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
-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">
-<h2>Bugs fixed</h2>
-</div>
-<div class="section" id="id60">
-<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.
-Previously, they could lead to an internal tree representation in a mixed
-encoding state, which lead to very late errors or even silently incorrect
-behaviour during tree traversal or serialisation.</li>
-<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
-Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
-<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
-use lxml 3.3.x with older versions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id61">
-<h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id62">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Prevent tree cycle creation when adding Elements as siblings.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
-extension functions.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id63">
-<h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id64">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning could fail to strip javascript links that mix control
-characters into the link scheme.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id65">
-<h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id66">
-<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">
-<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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id69">
-<h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id70">
-<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">
-<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
-subclassed from Python code.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id72">
-<h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id73">
-<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
-<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
-<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
-did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up &quot;expected&quot; and &quot;actual&quot; in
-attribute values.</li>
-<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
-file usage.  Initial patch by Gabi Davar.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method=&quot;html&quot;)</span></tt> did not use HTML serialisation
-semantics for trailing tail text.  Initial patch by Sylvain Viollon.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
-in 3.3.0.  Even though it is empty and immutable, it should still
-provide the same interface as that returned for Elements.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id74">
-<h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id75">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id76">
-<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
-elements during tag iteration.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
-<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing &quot;stdint.h&quot; standard
-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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id78">
-<h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id79">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id80">
-<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">
-<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">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Several error handling problems were fixed throughout the code base that
-could previously lead to exceptions being silently swallowed or not
-properly reported.</li>
-<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
-propagate exceptions (its return type is <tt class="docutils literal">void</tt>).  The new function
-<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
-<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
-parsing the string character by character.</li>
-</ul>
-</div>
-<div class="section" id="id84">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Document cleanup code was simplified using the new GC features in
-Cython 0.20.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2014-01-12">
-<h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id85">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id86">
-<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
-objects was mutable.</li>
-<li>Element class lookup wasn't available for the new pull parsers or when using
-a custom parser target.</li>
-<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
-and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
-the docinfo property) lost their attribute declarations.</li>
-</ul>
-</div>
-<div class="section" id="id87">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
-Python 3.4.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2014-01-02">
-<h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id88">
-<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">
-<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">
-<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">
-<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">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The safety check in the read-only tree implementation (e.g. used by
-<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
-for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
-This should only impact test code that specifically checks the original
-behaviour.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2013-12-12">
-<h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id94">
-<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
-<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
-discarding links that fail to parse as URLs.</li>
-<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
-incremental parsing, as implemented for ElementTree in Python 3.4.</li>
-<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
-(<tt class="docutils literal">html=True</tt>).</li>
-</ul>
-</div>
-<div class="section" id="id95">
-<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.
-comment or PI).</li>
-<li>Error messages in the log and in exception messages that originated
-from libxml2 could accidentally be picked up from preceding warnings
-instead of the actual error.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
-argument for adding attributes to the element it's building. This
-works as in lxml.builder now.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants, instead of running into an infinite
-loop.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-<li>lxml.html.formfill: Fix textarea form filling.
-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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some basic API classes use freelists internally for faster
-instantiation.  This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
-for example.</li>
-<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
-classes internally instead of being a parser itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id97">
-<h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id98">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id99">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
-<li>Crash in target parsing with attributes.</li>
-<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.
-comment or PI).</li>
-</ul>
-</div>
-<div class="section" id="id101">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id102">
-<h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id103">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id104">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak when creating an XPath evaluator in a thread.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
-<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
-to one of its own descendants.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
-<li>Compressed plain-text serialisation to file-like objects was broken.</li>
-</ul>
-</div>
-<div class="section" id="id107">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id108">
-<h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id109">
-<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">
-<h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id111">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id112">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Return values of user provided element class lookup methods are now
-validated against the type of the XML node they represent to prevent
-API class mismatches.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id114">
-<h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id115">
-<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
-extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
-and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
-strings from the result list.</li>
-</ul>
-</div>
-<div class="section" id="id116">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When moving Elements to another tree, the namespace cleanup mechanism
-no longer drops namespace prefixes from attributes for which it finds
-a default namespace declaration, to prevent them from appearing as
-unnamespaced attributes after serialisation.</li>
-<li>Returning non-type objects from a custom class lookup method could lead
-to a crash.</li>
-<li>Instantiating and using subtypes of Comments and ProcessingInstructions
-crashed.</li>
-</ul>
-</div>
-<div class="section" id="id117">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id118">
-<h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id119">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id120">
-<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
-parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
-in the face of uncommon HTML content like framesets or missing body tags.
-Patch by Stefan Seelmann.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
-non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
-reporting the <tt class="docutils literal">IOError</tt>.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
-default parser and made subsequent attempts to parse from a URL fail.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
-of overwriting the current value.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
-allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
-</ul>
-</div>
-<div class="section" id="id121">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id122">
-<h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id123">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id124">
-<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
-the sax bridge (i.e. the <tt class="docutils literal">handler.startElement()</tt> method) failed
-with a <tt class="docutils literal">TypeError</tt>.  Patch by Mike Bayer.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1123074">LP#1123074</a>: Fix serialisation error in XSLT output when converting
-the result tree to a Unicode string.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/105">GH#105</a>: Replace illegal usage of <tt class="docutils literal">xmlBufLength()</tt> in libxml2 2.9.0
-by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
-</ul>
-</div>
-<div class="section" id="id125">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id126">
-<h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id127">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id128">
-<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
-an AttributeError in Py3.</li>
-<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
-</ul>
-</div>
-<div class="section" id="id129">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
-from the module dict.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id130">
-<h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id131">
-<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">
-<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
-a copy of the attributes as a plain Python dict.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the  <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
-always used the first namespace mapping that was provided for each
-path expression instead of using the one that was actually passed
-in for the current run.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
-without threading support.  Patch by Ulrich Seidl.</li>
-</ul>
-</div>
-<div class="section" id="id133">
-<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">
-<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
-makes the API always return Unicode strings for names and text
-instead of byte strings for plain ASCII content.</li>
-<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
-<li>E factory in lxml.objectify is callable to simplify the creation of
-tags with non-identifier names without having to resort to getattr().</li>
-</ul>
-</div>
-<div class="section" id="id135">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When starting from a non-namespaced element in lxml.objectify, searching
-for a child without explicitly specifying a namespace incorrectly found
-namespaced elements with the requested local name, instead of restricting
-the search to non-namespaced children.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
-removed from the module API of lxml.objectify.</li>
-<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
-many children.  Patch by Anders Hammarquist.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id137">
-<h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id138">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id139">
-<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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id141">
-<h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id142">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id143">
-<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
-in PyPy without proper cleanup.</li>
-<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id145">
-<h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id146">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id147">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>End-of-file handling was incorrect in iterparse() when reading from
-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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The build no longer uses Cython by default unless the generated C files
-are missing.  To use Cython, pass the option &quot;--with-cython&quot;.  To ignore
-the fatal build error when Cython is required but not available (e.g. to
-run special setup.py commands that do not actually run a build), pass
-&quot;--without-cython&quot;.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2012-09-26">
-<h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id149">
-<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">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha2-2012-08-23">
-<h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id152">
-<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
-<tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt> to search for elements with a given local name in any
-namespace. With this addition, all combinations of wildcards now work
-as expected:
-<tt class="docutils literal">&quot;{ns}name&quot;</tt>, <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{ns}*&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{}*&quot;</span></tt>
-and <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.  Note that <tt class="docutils literal">&quot;name&quot;</tt> is equivalent to <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>,
-but <tt class="docutils literal">&quot;*&quot;</tt> is <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.
-The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
-<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
-and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
-<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
-<tt class="docutils literal">iterparse()</tt> class.  Patch by Simon Sapin.</li>
-<li>C14N allows specifying the inclusive prefixes to be promoted
-to top-level during exclusive serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id153">
-<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">
-<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">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Initial support for building in PyPy (through cpyext).</li>
-<li>DTD objects gained an API that allows read access to their
-declarations.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
-from grep output) and for surrounding the output with a new root
-tag.</li>
-<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
-types (such as string subtypes) when building elements around them.</li>
-<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
-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">
-<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
-internally, which makes them faster in many cases (especially when
-short circuiting after a single or couple of elements) and fixes
-some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>.  Note that
-this means that they no longer support arbitrary XPath expressions
-but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
-The previous implementation was also redundant with the normal
-XPath support, which can be used as a replacement.</li>
-<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
-instruction that happened to be in the wrong spot.  (Same for the
-other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
-<li>The error logging is less intrusive and avoids a global setup where
-possible.</li>
-<li>Fixed undefined names in html5lib parser.</li>
-<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
-<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
-another Element as parameter.</li>
-<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
-properties immutable (as in objectify, for example), inserting text
-when creating Elements through the E-Factory feature of the class
-constructor would fail with an exception, stating that the text
-cannot be modified.</li>
-</ul>
-</div>
-<div class="section" id="id157">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The code base was overhauled to properly use 'const' where the API
-of libxml2 and libxslt requests it.  This also has an impact on the
-public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
-well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
-Code that uses these declarations may have to be adapted.  On the
-plus side, this fixes several C compiler warnings, also for user
-code, thus making it easier to spot real problems again.</li>
-<li>The functionality of &quot;lxml.cssselect&quot; was moved into a separate PyPI
-package called &quot;cssselect&quot;.  To continue using it, you must install
-that package separately.  The &quot;lxml.cssselect&quot; module is still
-available and provides the same interface, provided the &quot;cssselect&quot;
-package can be imported at runtime.</li>
-<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
-arguments are now sorted by (namespaced) name before being created
-to make their order predictable for serialisation and iteration.
-Note that adding or deleting attributes afterwards does not take
-that order into account, i.e. setting a new attribute appends it
-after the existing ones.</li>
-<li>Several classes that are for internal use only were removed
-from the <tt class="docutils literal">lxml.etree</tt> module dict:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
-_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
-__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
-_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
-_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
-_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
-_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
-_ParserSchemaValidationContext, _XPathContext,
-_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
-<li>Several internal classes can no longer be inherited from:
-<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
-_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
-_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
-_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
-_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
-_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
-_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
-_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
-_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id158">
-<h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id159">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id160">
-<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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id162">
-<h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id163">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id164">
-<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">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id166">
-<h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id167">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id168">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when building an nsmap (Element property) with empty
-namespace URIs.</li>
-<li>Crash due to race condition when errors (or user messages) occur
-during threaded XSLT processing.</li>
-<li>XSLT stylesheet compilation could ignore compilation errors.</li>
-</ul>
-</div>
-<div class="section" id="id169">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id170">
-<h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id171">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
-requesting start events.</li>
-<li>Fixed parsing of more selectors in cssselect.  Whitespace before
-pseudo-elements and pseudo-classes is significant as it is a
-descendant combinator.
-&quot;E :pseudo&quot; should parse the same as &quot;E *:pseudo&quot;, not &quot;E:pseudo&quot;.
-Patch by Simon Sapin.</li>
-<li>lxml.html.diff no longer raises an exception when hitting
-'img' tags without 'src' attribute.</li>
-</ul>
-</div>
-<div class="section" id="id173">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id174">
-<h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id175">
-<h2>Features added</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
-<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
-declarations (and generally clean up the namespace declarations)
-after removing the type annotations.</li>
-<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
-copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
-of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
-</ul>
-</div>
-<div class="section" id="id176">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Fixed the &quot;descendant&quot; bug in cssselect a second time (after a first
-fix in lxml 2.3.1).  The previous change resulted in a serious
-performance regression for the XPath based evaluation of the
-translated expression.  Note that this breaks the usage of some of
-the generated XPath expressions as XSLT location paths that
-previously worked in 2.3.1.</li>
-<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
-&quot;&gt;&quot;, &quot;+&quot; and &quot;~&quot; is now correctly ignored. Previously it was parsed as
-a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the same as
-&quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
-</ul>
-</div>
-<div class="section" id="id177">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id178">
-<h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id179">
-<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
-tags and their content (i.e. their whole subtree).</li>
-<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
-pseudo-attributes from the text content of processing instructions.</li>
-<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
-used to compile external C code against lxml.etree.  This is
-specifically required for statically linked lxml builds when code
-needs to compile against the exact same header file versions as lxml
-itself.</li>
-<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
-<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>HTML cleaning didn't remove 'data:' links.</li>
-<li>The html5lib parser integration now uses the 'official'
-implementation in html5lib itself, which makes it work with newer
-releases of the library.</li>
-<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
-tag name when the corresponding start event inferred the same plain
-tag name to be in the default namespace.</li>
-<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
-<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use.  This
-reverts a change in lxml 2.3 where all files would be closed.  It is
-the users responsibility to properly close the file(-like) object,
-also in error cases.</li>
-<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
-<li>In lxml.cssselect, use the xpath 'A//B' (short for
-'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
-the css descendant selector ('A B').  This makes a few edge cases
-like <tt class="docutils literal">&quot;div <span class="pre">*:last-child&quot;</span></tt> consistent with the selector behavior in
-WebKit and Firefox, and makes more css expressions valid location
-paths (for use in xsl:template match).</li>
-<li>In lxml.html, non-selected <tt class="docutils literal">&lt;option&gt;</tt> tags no longer show up in the
-collected form values.</li>
-<li>Adding/removing <tt class="docutils literal">&lt;option&gt;</tt> values to/from a multiple select form
-field properly selects them and unselects them.</li>
-</ul>
-</div>
-<div class="section" id="id181">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Static builds can specify the download directory with the
-<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id182">
-<h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id183">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>When finished reading from a file-like object, the parser
-immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
-<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
-file.</li>
-<li>Work-around for libxml2 bug that can leave the HTML parser in a
-non-functional state after parsing a severely broken document (fixed
-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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Some public functions in the Cython-level C-API have more explicit
-return types.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2010-09-06">
-<h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id186">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id187">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
-<tt class="docutils literal">base_url</tt> parameters.</li>
-<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
-<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
-use of os.tempnam.  It now takes an optional 'encoding' parameter.</li>
-</ul>
-</div>
-<div class="section" id="id188">
-<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">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id190">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
-(following ElementTree 1.3).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="alpha1-2010-06-19">
-<h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id192">
-<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>
-to pass a prefix-to-namespace mapping for the selector.</li>
-<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
-globally registers a namespace prefix for a namespace that newly
-created Elements in that namespace will use automatically.  Follows
-ElementTree 1.3.</li>
-<li>Support 'unicode' string name as encoding parameter in
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
-<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
-<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
-match the upcoming ElementTree 1.3 that will ship in the standard
-library of Python 3.2/2.7.  This includes extended support for
-predicates as well as namespace prefixes (as known from XPath).</li>
-<li>During regular XPath evaluation, various ESXLT functions are
-available within their namespace when using libxslt 1.1.26 or later.</li>
-<li>Support passing a readily configured logger instance into
-<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
-<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
-override the DOCTYPE (internal subset) of the document.</li>
-<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
-to append the resulting content directly to an output element.</li>
-<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
-XSLT extension element itself.</li>
-<li>ISO-Schematron support based on the de-facto Schematron reference
-'skeleton implementation'.</li>
-<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
-parameters.</li>
-<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
-overhead.</li>
-<li>Setting the value of a namespaced attribute always uses a prefixed
-namespace instead of the default namespace even if both declare the
-same namespace URI.  This avoids serialisation problems when an
-attribute from a default namespace is set on an element from a
-different namespace.</li>
-<li>XSLT extension elements: support for XSLT context nodes other than
-elements: document root, comments, processing instructions.</li>
-<li>Support for strings (in addition to Elements) in node-sets returned
-by extension functions.</li>
-<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
-the document on submit.</li>
-<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
-<li>Namespace URIs get validated against RFC 3986 at the API level
-(required by the XML namespace specification).</li>
-<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
-(compatible with ElementTree).</li>
-</ul>
-</div>
-<div class="section" id="id193">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>API is hardened against invalid proxy instances to prevent crashes
-due to incorrectly instantiated Element instances.</li>
-<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
-<li>Export ElementTree compatible XML parser class as
-<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
-<li>ObjectifiedDataElements in lxml.objectify were not hashable.  They
-now use the hash value of the underlying Python value (string,
-number, etc.) to which they compare equal.</li>
-<li>Parsing broken fragments in lxml.html could fail if the fragment
-contained an orphaned closing '&lt;/div&gt;' tag.</li>
-<li>Using XSLT extension elements around the root of the output document
-crashed.</li>
-<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr=&quot;val&quot;]</span></tt> and
-<tt class="docutils literal">x <span class="pre">[attr=&quot;val&quot;]</span></tt> (with a space).  The latter now matches the
-attribute independent of the element.</li>
-<li>Rewriting multiple links inside of HTML text content could end up
-replacing unrelated content as replacements could impact the
-reported position of subsequent matches.  Modifications are now
-simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
-return links in reversed order if they appear inside the same text
-node.  Thus, replacements and link-internal modifications no longer
-change the position of links reported afterwards.</li>
-<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
-not represent the complete raw value (including child tags etc.). It
-now serialises the complete content on read and replaces the
-complete content by a string on write.</li>
-<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
-parsing failed.  Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
-called after parsing, regardless of the outcome.</li>
-</ul>
-</div>
-<div class="section" id="id194">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.1.2 and later.</li>
-<li>Static MS Windows builds can now download their dependencies
-themselves.</li>
-<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
-Element object.  It therefore no longer requires the garbage
-collector to clean up.</li>
-<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id195">
-<h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id196">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in newer libxml2 versions when moving elements between
-documents that had attributes on replaced XInclude nodes.</li>
-<li>Import fix for urljoin in Python 3.1+.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id197">
-<h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id198">
-<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>
-<div class="section" id="id199">
-<h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id200">
-<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">
-<h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id202">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash in XPath evaluation when reading smart strings from a document
-other than the original context document.</li>
-<li>Support recent versions of html5lib by not requiring its
-<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
-<li>Manually instantiating the custom element classes in
-<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
-<li>Invalid XML text characters were not rejected by the API when they
-appeared in unicode strings directly after non-ASCII characters.</li>
-<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
-<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
-<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
-<li>Crash in XSLT extension elements when the XSLT context node is not
-an element.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id204">
-<h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id205">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Static build of libxml2/libxslt was broken.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id206">
-<h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id207">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id208">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
-parser.</li>
-<li>Looking up and deleting attributes without a namespace could hit a
-namespaced attribute of the same name instead.</li>
-<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
-ones) could leave a partially initialised element in the tree.</li>
-<li>Modifying trees that contain parsed entity references could result
-in an infinite loop.</li>
-<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
-attribute value was rejected as a non-unicode/non-ascii string</li>
-<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
-messages.</li>
-<li>Invalid syntax in CSS expressions could lead to an infinite loop in
-the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS special character escapes were not properly handled in
-<tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
-<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
-attribute were not handled correctly.  The HTML standard dictates
-that their value is defined by their text content.  This is now
-supported by lxml.html.</li>
-<li>XPath raised a TypeError when finding CDATA sections.  This is now
-fully supported.</li>
-<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
-<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
-namespaces when annotation is disabled.</li>
-<li>Feed parser failed to honour the 'recover' option on parse errors.</li>
-<li>Diverting the error logging to Python's logging system was broken.</li>
-</ul>
-</div>
-<div class="section" id="id209">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id210">
-<h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id211">
-<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>,
-<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
-from a subtree.</li>
-</ul>
-</div>
-<div class="section" id="id212">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Namespace cleanup on subtree insertions could result in missing
-namespace declarations (and potentially crashes) if the element
-defining a namespace was deleted and the namespace was not used by
-the top element of the inserted subtree but only in deeper subtrees.</li>
-<li>Raising an exception from a parser target callback didn't always
-terminate the parser.</li>
-<li>Only {true, false, 1, 0} are accepted as the lexical representation for
-BoolElement ({True, False, T, F, t, f} not any more), restoring lxml &lt;= 2.0
-behaviour.</li>
-</ul>
-</div>
-<div class="section" id="id213">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id214">
-<h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id215">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Injecting default attributes into a document during XML Schema
-validation (also at parse time).</li>
-<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
-restrictions imposed by libxml2 2.7.</li>
-</ul>
-</div>
-<div class="section" id="id216">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The script for statically building libxml2 and libxslt didn't work
-in Py3.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
-for parsing (which could lead to a crash before release 2.6.24).</li>
-</ul>
-</div>
-<div class="section" id="id217">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id218">
-<h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id219">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
-<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
-on serialisation.</li>
-</ul>
-</div>
-<div class="section" id="id220">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing an XML Schema with external imports from a
-filename.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta4-2009-02-27">
-<h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id221">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support strings and instantiable Element classes as child arguments
-to the constructor of custom Element classes.</li>
-<li>GZip compression support for serialisation to files and file-like
-objects.</li>
-</ul>
-</div>
-<div class="section" id="id222">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Deep-copying an ElementTree copied neither its sibling PIs and
-comments nor its internal/external DTD subsets.</li>
-<li>Soupparser failed on broken attributes without values.</li>
-<li>Crash in XSLT when overwriting an already defined attribute using
-<tt class="docutils literal">xsl:attribute</tt>.</li>
-<li>Crash bug in exception handling code under Python 3.  This was due
-to a problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
-<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
-was evaluated incorrectly.</li>
-</ul>
-</div>
-<div class="section" id="id223">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Official support for Python 3.0.1.</li>
-<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
-for Elements without text content.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2009-02-17">
-<h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id224">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in XPath evaluators.</li>
-<li>Crash when parsing indented XML in one thread and merging it with
-other documents parsed in another thread.</li>
-<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
-string failed.</li>
-<li>Fixes following changes in Python 3.0.1.</li>
-<li>Minor fixes for Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id226">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The global error log (which is copied into the exception log) is now
-local to a thread, which fixes some race conditions.</li>
-<li>More robust error handling on serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2009-01-25">
-<h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id227">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling.  This was due to a
-problem in Cython, not lxml itself.</li>
-<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
-<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url(&quot;link&quot;)</span></tt> incorrectly
-(treating the quotation marks as part of the link).</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id228">
-<h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id229">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Potential memory leak on exception handling.  This was due to a
-problem in Cython, not lxml itself.</li>
-<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta1-2008-12-12">
-<h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id230">
-<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">
-<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">
-<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">
-<h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id234">
-<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">
-<h1>2.0.11 (2008-12-12)</h1>
-<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="alpha1-2008-11-23">
-<h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id237">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for XSLT result tree fragments in XPath/XSLT extension
-functions.</li>
-<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
-<li>New options for exclusive C14N and C14N without comments.</li>
-<li>Instantiating a custom Element classes creates a new Element.</li>
-</ul>
-</div>
-<div class="section" id="id238">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>XSLT didn't inherit the parse options of the input document.</li>
-<li>0-bytes could slip through the API when used inside of Unicode
-strings.</li>
-<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
-that end in a parenthesis, will be linked in their entirety (typical
-with Wikipedia links).</li>
-</ul>
-</div>
-<div class="section" id="id239">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id240">
-<h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id241">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id242">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-<li>Parser Unicode decoding errors could get swallowed by other
-exceptions.</li>
-<li>Name/import errors in some Python modules.</li>
-<li>Internal DTD subsets that did not specify a system or public ID were
-not serialised and did not appear in the docinfo property of
-ElementTrees.</li>
-<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
-<li>Test suite fixes for libxml2 2.7.</li>
-<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
-<li>Resolver.resolve_file() was broken.</li>
-<li>Overriding the parser encoding didn't work for many encodings.</li>
-</ul>
-</div>
-<div class="section" id="id243">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id244">
-<h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id245">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Ref-count leaks when lxml enters a try-except statement while an
-outside exception lives in sys.exc_*(). This was due to a problem in
-Cython, not lxml itself.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id246">
-<h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id247">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.etree now tries to find the absolute path name of files when
-parsing from a file-like object.  This helps custom resolvers when
-resolving relative URLs, as lixbml2 can prepend them with the path
-of the source document.</li>
-</ul>
-</div>
-<div class="section" id="id248">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-<div class="section" id="id249">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id250">
-<h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id251">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory problem when passing documents between threads.</li>
-<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
-exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id252">
-<h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id253">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id254">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>Encoding problem when including text with ElementInclude under
-Python 3.</li>
-</ul>
-</div>
-<div class="section" id="id255">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id256">
-<h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id257">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when parsing XSLT stylesheets in a thread and using them in
-another.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id259">
-<h2>Other changes</h2>
-</div>
-</div>
-<div class="section" id="id260">
-<h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id261">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
-keyword option).</li>
-<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="id262">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Custom resolvers were not used for XMLSchema includes/imports and
-XInclude processing.</li>
-<li>CSS selector parser dropped remaining expression after a function
-with parameters.</li>
-</ul>
-</div>
-<div class="section" id="id263">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
-<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
-<li>Speed-up when running XSLTs on documents from other threads</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id264">
-<h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id265">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Descending dot-separated classes in CSS selectors were not resolved
-correctly.</li>
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Potential threading problem in XInclude.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-</ul>
-</div>
-<div class="section" id="id267">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta3-2008-06-19">
-<h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id268">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
-<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
-<li>Support for parsing from file-like objects that return unicode
-strings.</li>
-<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
-namespace declarations from a (sub)tree (experimental).</li>
-<li>XSLT results support the buffer protocol in Python 3.</li>
-<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
-a parsable string will return either a UTF-8 encoded byte string, a
-unicode string or a tree, based on the type of the input.
-Previously, the result was always a byte string or a tree.</li>
-<li>Support for Python 2.6 and 3.0 beta.</li>
-<li>File name handling now uses a heuristic to convert between byte
-strings (usually filenames) and unicode strings (usually URLs).</li>
-<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
-<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
-on reading under Python 2.x.</li>
-<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
-lxml.html (experimental).</li>
-<li>Most features in lxml.html work for XHTML namespaced tag names
-(experimental).</li>
-</ul>
-</div>
-<div class="section" id="id269">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
-<li>Crash in Element class lookup classes when the __init__() method of
-the super class is not called from Python subclasses.</li>
-<li>A number of problems related to unicode/byte string conversion of
-filenames and error messages were fixed.</li>
-<li>Building on MacOS-X now passes the &quot;flat_namespace&quot; option to the C
-compiler, which reportedly prevents build quirks and crashes on this
-platform.</li>
-<li>Windows build was broken.</li>
-<li>Rare crash when serialising to a file object with certain encodings.</li>
-</ul>
-</div>
-<div class="section" id="id270">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Non-ASCII characters in attribute values are no longer escaped on
-serialisation.</li>
-<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
-namespaces, etc. will result in a ValueError instead of an
-AssertionError (just like the tag well-formedness check).</li>
-<li>Up to several times faster attribute access (i.e. tree traversal) in
-lxml.objectify.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id271">
-<h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id272">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id273">
-<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>
-<li>Windows build was broken.</li>
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml should now build without problems on MacOS-X.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="beta2-2008-05-02">
-<h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id275">
-<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>
-<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
-attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
-pre-configured for the lxml.html package.</li>
-</ul>
-</div>
-<div class="section" id="id276">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Moving a subtree from a document created in one thread into a
-document of another thread could crash when the rest of the source
-document is deleted while the subtree is still in use.</li>
-<li>Passing an nsmap when creating an Element will no longer strip
-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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>If the default namespace is redundantly defined with a prefix on the
-same Element, the prefix will now be preferred for subelements and
-attributes.  This allows users to work around a problem in libxml2
-where attributes from the default namespace could serialise without
-a prefix even when they appear on an Element with a different
-namespace (i.e. they would end up in the wrong namespace).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id278">
-<h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id279">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id280">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state &quot;STOPPED&quot;, which
-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">
-<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">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
-<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
-sections.  Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Resolving to a filename in custom resolvers didn't work.</li>
-<li>lxml did not honour libxslt's second error state &quot;STOPPED&quot;, which
-let some XSLT errors pass silently.</li>
-<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
-<li>lxml.etree accepted non well-formed namespace prefix names.</li>
-</ul>
-</div>
-<div class="section" id="id284">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
-takes care of namespace cleanup when moving elements between
-different namespace contexts.</li>
-<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
-parser or through lxml.html now end up in a new HTML document
-(doctype HTML 4.01 Transitional) instead of a generic XML document.
-This mostly impacts the serialisation and the availability of a DTD
-context.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id285">
-<h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id286">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id287">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Hanging thread in conjunction with GTK threading.</li>
-<li>Crash bug in iterparse when moving elements into other documents.</li>
-<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</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">
-<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">
-<h2>Features added</h2>
-<ul class="simple">
-<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
-<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
-returns a dict of access configuration options.</li>
-<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
-<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
-<li>Extension elements for XSLT (experimental!)</li>
-<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
-an Element.</li>
-<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
-</ul>
-</div>
-<div class="section" id="id290">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Minor API speed-ups.</li>
-<li>The benchmark suite now uses tail text in the trees, which makes the
-absolute numbers incomparable to previous results.</li>
-<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
-used to enable syntax highlighting for the doctest examples.</li>
-</ul>
-<p>Most long-time deprecated functions and methods were removed:</p>
-<ul>
-<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
-<tt class="docutils literal">etree.use_global_python_log()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
-<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
-<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
-<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
-yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
-instead.</p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
-<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
-<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
-</li>
-<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
-<tt class="docutils literal">objectify.set_default_parser()</tt></p>
-</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id292">
-<h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id293">
-<h2>Features added</h2>
-<ul class="simple">
-<li>soupparser.parse() allows passing keyword arguments on to
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
-<tt class="docutils literal">&lt;br&gt;</tt>).</li>
-<li>Handle entity replacements correctly in target parser.</li>
-<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
-<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
-which made them turn up in text content.</li>
-<li>Attribute assignment of custom PyTypes in objectify could fail to
-correctly serialise the value to a string.</li>
-</ul>
-</div>
-<div class="section" id="id295">
-<h2>Other changes</h2>
-<ul class="simple">
-<li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
-<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API.  The old module
-remains for compatibility with ElementTree's own ElementSoup module.</li>
-<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
-build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
-<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
-compiler options.  The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
-option.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id296">
-<h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id297">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The prefix for objectify's pytype namespace was missing from the set
-of default prefixes.</li>
-<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
-<li>Error type names in RelaxNG were reported incorrectly.</li>
-<li>Slice deletion bug fixed in objectify.</li>
-</ul>
-</div>
-<div class="section" id="id299">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
-<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
-(<tt class="docutils literal"><span class="pre">method=&quot;xml&quot;</span></tt> for XHTML output).</li>
-<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
-<tt class="docutils literal">base_url</tt> argument.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id300">
-<h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id301">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
-<li>Loads of new docstrings reflect the signature of functions and
-methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
-</ul>
-</div>
-<div class="section" id="id302">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
-<tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
-was an unnamed input field.  Now unnamed input fields are completely
-ignored.</li>
-<li>Setting an element slice in objectify could insert slice-overlapping
-elements at the wrong position.</li>
-</ul>
-</div>
-<div class="section" id="id303">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>The generated API documentation was cleaned up and disburdened from
-non-public classes etc.</li>
-<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
-<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml.  If
-you want to use it, feel free to copy it over to your own source
-base.</li>
-<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
-override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
-compiler options.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id304">
-<h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id305">
-<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
-serialise to unicode.  The <tt class="docutils literal">tounicode()</tt> function is now
-deprecated.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
-<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
-parser with the usual objectify setup.</li>
-<li>Plain ASCII XPath string results are no longer forced into unicode
-objects as in 2.0beta1, but are returned as plain strings as before.</li>
-<li>All XPath string results are 'smart' objects that have a
-<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
-<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
-<li>More accurate exception messages in validator creation.</li>
-<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
-<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
-selection make their Element container accessible through a
-<tt class="docutils literal">getparent()</tt> method.  As a side-effect, they are now always
-unicode objects (even ASCII strings).</li>
-<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
-copy if they were not created in that thread.</li>
-<li>Invalid entity names and character references will be rejected by
-the <tt class="docutils literal">Entity()</tt> factory.</li>
-<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
-e.g. <tt class="docutils literal">&amp;amp;</tt>.</li>
-<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
-in ET 1.3)</li>
-<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
-<li>ElementTree compatible TreeBuilder class.</li>
-<li>Use default prefixes for some common XML namespaces.</li>
-<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
-two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
-more general <tt class="docutils literal">allow_element(el)</tt>.</li>
-<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
-etree and in objectify</li>
-<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
-resolving a document as string data.</li>
-<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
-<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
-the special checking for one test.</li>
-<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
-The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
-<tt class="docutils literal">error_log</tt>.</li>
-<li>The normal parsers and the feed parser interface are now separated
-and can be used concurrently on the same parser instance.</li>
-<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
-ElementTree 1.3</li>
-<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
-parsing with the HTML parser (note that this interface may be
-subject to change)</li>
-<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
-of the parsed documents.</li>
-<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
-<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
-types in one step.  Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
-<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
-argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
-serialise as XML, HTML or plain text content.</li>
-<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
-<tt class="docutils literal">findall()</tt></li>
-<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
-<li>Setting a QName object as value of the .text property or as an attribute
-will resolve its prefix in the respective context</li>
-<li>ElementTree-like parser target interface as described in
-<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
-<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
-(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
-<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
-integration with objectify.  Provides extended type support based on
-registered PyTypes.</li>
-<li>XSLT objects now support deep copying</li>
-<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
-subelement straight with text, tail and attributes.</li>
-<li>XPath extension functions can now access the current context node
-(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
-(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
-parameter</li>
-<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
-<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
-doctests based on XML/HTML output.  Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
-<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
-<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
-selectors.</li>
-<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
-treatment.</li>
-<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
-instance and no longer global.</li>
-<li>Schematron validation (incomplete in libxml2)</li>
-<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
-conversion function to strings to support setting text values from arbitrary
-types.</li>
-<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes.  XML
-parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
-False to keep entities in the document.</li>
-<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
-<li>Error specific messages in XPath parsing and evaluation
-NOTE: for evaluation errors, you will now get an XPathEvalError instead of
-an XPathSyntaxError.  To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
-<li>The regular expression functions in XPath now support passing a node-set
-instead of a string</li>
-<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
-<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
-</ul>
-</div>
-<div class="section" id="id306">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
-<li>Some Python 2.4-isms prevented lxml from building/running under
-Python 2.3.</li>
-<li>XPath on ElementTrees could crash when selecting the virtual root
-node of the ElementTree.</li>
-<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
-<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
-<li>Minor bugs in XSLT error message formatting.</li>
-<li>Result document memory leak in target parser.</li>
-<li>Target parser failed to report comments.</li>
-<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal">&lt;object&gt;</tt>
-tags weren't recognized.  (Note: plugin-specific link parameters
-still aren't recognized.)  Also, the <tt class="docutils literal">&lt;embed&gt;</tt> tag, though not
-standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
-<li>Using custom resolvers on XSLT stylesheets parsed from a string
-could request ill-formed URLs.</li>
-<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal">&lt;tag <span class="pre">xmlns=&quot;...&quot;&gt;</span></tt> in your
-output, it will then be namespace-neutral (before the ellipsis was
-treated as a real namespace).</li>
-<li>AttributeError in feed parser on parse errors</li>
-<li>XML feed parser setup problem</li>
-<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
-<li>lxml failed to serialise namespace declarations of elements other than the
-root node of a tree</li>
-<li>Race condition in XSLT where the resolver context leaked between concurrent
-XSLT calls</li>
-<li>lxml.etree did not check tag/attribute names</li>
-<li>The XML parser did not report undefined entities as error</li>
-<li>The text in exceptions raised by XML parsers, validators and XPath
-evaluators now reports the first error that occurred instead of the last</li>
-<li>Passing '' as XPath namespace prefix did not raise an error</li>
-<li>Thread safety in XPath evaluators</li>
-</ul>
-</div>
-<div class="section" id="id307">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>Exceptions carry only the part of the error log that is related to
-the operation that caused the error.</li>
-<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
-file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
-<li>The test suite now skips most doctests under Python 2.3.</li>
-<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
-realclean</tt> instead)</li>
-<li>Minor performance tweaks for Element instantiation and subelement
-creation</li>
-<li>Various places in the XPath, XSLT and iteration APIs now require
-keyword-only arguments.</li>
-<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
-match the order used in all other iteration methods.  The second
-argument ('preceding') is now a keyword-only argument.</li>
-<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
-reverted to return an iterator as it did in lxml 1.x.  The ET API
-specification allows it to return either a sequence or an iterator,
-and it traditionally returned a sequence in ET and an iterator in
-lxml.  However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
-method, which should be used in new code wherever possible.</li>
-<li>The 'pretty printed' serialisation of ElementTree objects now
-inserts newlines at the root level between processing instructions,
-comments and the root tag.</li>
-<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
-<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
-required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
-<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
-<li>The module source files were renamed to &quot;lxml.*.pyx&quot;, such as
-&quot;lxml.etree.pyx&quot;.  This was changed for consistency with the way
-Pyrex commonly handles package imports.  The main effect is that
-classes now know about their fully qualified class name, including
-the package name of their module.</li>
-<li>Keyword-only arguments in some API functions, especially in the
-parsers and serialisers.</li>
-<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
-between HTML tags and XML tags based on the parser that was used to
-parse or create them.  HTML tags no longer reject any non-ASCII
-characters in tag names but only spaces and the special characters
-<tt class="docutils literal"><span class="pre">&lt;&gt;&amp;/&quot;'</span></tt>.</li>
-<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
-(which can crash on certain XPath errors)</li>
-<li>Type annotation in objectify now preserves the already annotated type by
-default to prevent losing type information that is already there.</li>
-<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
-an iterator (ElementTree 1.3 compatible behaviour)</li>
-<li>objectify.PyType for None is now called &quot;NoneType&quot;</li>
-<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
-original name is still available as alias</li>
-<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
-generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
-<li>Major refactoring in XPath/XSLT extension function code</li>
-<li>Network access in parsers disabled by default</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id308">
-<h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id309">
-<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">
-<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>
-methods.  While this makes them take a lot longer to run, it also
-makes it easier to link a specific test to garbage collection
-problems that would otherwise appear in later tests.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id311">
-<h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id312">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id313">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.etree could crash when adding more than 10000 namespaces to a
-document</li>
-<li>lxml failed to serialise namespace declarations of elements other
-than the root node of a tree</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id314">
-<h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id315">
-<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
-<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
-creates.</li>
-<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
-and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
-subset of the document respectively.</li>
-<li>Serialising an ElementTree now includes any internal DTD subsets that are
-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">
-<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">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
-an Error as 1.3.3 did.  The reason is that a number of projects currently
-misuse the previous lack of tag name validation to generate namespace
-prefixes without declaring namespaces.  Apart from the danger of generating
-broken XML this way, it also breaks most of the namespace-aware tools in
-XML, including XPath, XSLT and validation.  lxml 1.3.x will continue to
-support this bug with a Warning, while lxml 2.0 will be strict about
-well-formed tag names (not only regarding ':').</li>
-<li>Serialising an Element no longer includes its comment and PI siblings (only
-ElementTree serialisation includes them).</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id318">
-<h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id319">
-<h2>Features added</h2>
-<ul class="simple">
-<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
-instructions and comments while parsing XML</li>
-<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
-<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parsing from Python Unicode strings failed on some platforms</li>
-<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id321">
-<h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id322">
-<h2>Features added</h2>
-</div>
-<div class="section" id="id323">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>&quot;deallocating None&quot; crash bug</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id324">
-<h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id325">
-<h2>Features added</h2>
-<ul class="simple">
-<li>objectify.DataElement now supports setting values from existing data
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Better way to prevent crashes in Element proxy cleanup code</li>
-<li>objectify.DataElement didn't set up None value correctly</li>
-<li>objectify.DataElement didn't check the value against the provided type hints</li>
-<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
-</ul>
-</div>
-</div>
-<div class="section" id="id327">
-<h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id328">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
-scheme that can access the entire tree in read-only mode to help determining
-a suitable Element class</li>
-<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
-<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
-<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
-adding processing instructions and comments around the root node</li>
-<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
-<li>Extended type annotation in objectify: cleaner annotation namespace setup
-plus new <tt class="docutils literal">deannotate()</tt> function</li>
-<li>Support for custom Element class instantiation in lxml.sax: passing a
-<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
-lookup context of that function</li>
-<li>'.' represents empty ObjectPath (identity)</li>
-<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
-<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
-keys/values/items for a libxml2 node</li>
-<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
-<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
-<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
-<li>Support for pickling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
-<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
-<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
-a better handling of namespaces when moving elements between documents.</li>
-</ul>
-</div>
-<div class="section" id="id329">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Removing Elements from a tree could make them lose their namespace
-declarations</li>
-<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
-<li>Replacing the children slice of an Element would cut off the tails of the
-original children</li>
-<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
-<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
-<li>API functions now check incoming strings for XML conformity.  Zero bytes or
-low ASCII characters are no longer accepted (AssertionError).</li>
-<li>XSLT parsing failed to pass resolver context on to imported documents</li>
-<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
-<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
-<li>More ET compatible behaviour when writing out XML declarations or not</li>
-<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
-<li>Documents lost their top-level PIs and comments on serialisation</li>
-<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
-PIs are copied.</li>
-<li>Possible memory leaks in namespace handling when moving elements between
-documents</li>
-</ul>
-</div>
-<div class="section" id="id330">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>major restructuring in the documentation</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id331">
-<h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id332">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Build fixes for MS compiler</li>
-<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element[&quot;text&quot;]</span></tt> failed</li>
-<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
-to access</li>
-<li>The pattern for attribute names in ObjectPath was too restrictive</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id333">
-<h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id334">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Rich comparison of QName objects</li>
-<li>Support for regular expressions in benchmark selection</li>
-<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
-<li>ElementInclude Python module for ElementTree compatible XInclude processing
-that honours custom resolvers registered with the source document</li>
-<li>ElementTree.parser property holds the parser used to parse the document</li>
-<li>setup.py has been refactored for greater readability and flexibility</li>
-<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
-runtime search paths has been renamed to --auto-rpath. This makes it
-possible to pass an --rpath directly to distutils; previously this was being
-shadowed.</li>
-</ul>
-</div>
-<div class="section" id="id335">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Element instantiation now uses locks to prevent race conditions with threads</li>
-<li>ElementTree.write() did not raise an exception when the file was not writable</li>
-<li>Error handling could crash under Python &lt;= 2.4.1 - fixed by disabling thread
-support in these environments</li>
-<li>Element.find*() did not accept QName objects as path</li>
-</ul>
-</div>
-<div class="section" id="id336">
-<h2>Other changes</h2>
-<ul class="simple">
-<li>code cleanup: redundant _NodeBase super class merged into _Element class
-Note: although the impact should be zero in most cases, this change breaks
-the compatibility of the public C-API</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id337">
-<h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id338">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Data elements in objectify support repr(), which is now used by dump()</li>
-<li>Source distribution now ships with a patched Pyrex</li>
-<li>New C-API function makeElement() to create new elements with text,
-tail, attributes and namespaces</li>
-<li>Reuse original parser flags for XInclude</li>
-<li>Simplified support for handling XSLT processing instructions</li>
-</ul>
-</div>
-<div class="section" id="id339">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Parser resources were not freed before the next parser run</li>
-<li>Open files and XML strings returned by Python resolvers were not
-closed/freed</li>
-<li>Crash in the IDDict returned by XMLDTDID</li>
-<li>Copying Comments and ProcessingInstructions failed</li>
-<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
-<li>Memory leak when garbage collecting tailed root elements</li>
-<li>HTML script/style content was not propagated to .text</li>
-<li>Show text xincluded between text nodes correctly in .text and .tail</li>
-<li>'integer * objectify.StringElement' operation was not supported</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id340">
-<h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id341">
-<h2>Features added</h2>
-<ul class="simple">
-<li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
-<li>countchildren() method on objectify.ObjectifiedElement</li>
-<li>Support custom elements for tree nodes in lxml.objectify</li>
-</ul>
-</div>
-<div class="section" id="id342">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</li>
-<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
-<li>Factories objectify.Element() and objectify.DataElement() were missing
-<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
-<li>Changing the default parser in lxml.objectify did not update the factories
-Element() and DataElement()</li>
-<li>Let lxml.objectify.Element() always generate tree elements (not data
-elements)</li>
-<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id343">
-<h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id344">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
-'&lt;?pi-target content?&gt;' for repr()</li>
-<li>Parsers are now the preferred (and default) place where element class lookup
-schemes should be registered.  Namespace lookup is no longer supported by
-default.</li>
-<li>Support for Python 2.5 beta</li>
-<li>Unlock the GIL for deep copying documents and for XPath()</li>
-<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
-<li>Support for parser options in iterparse()</li>
-<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
-tuples</li>
-<li>The XPath expression &quot;/&quot; now returns an empty list instead of raising an
-exception</li>
-<li>XML-Object API on top of lxml (lxml.objectify)</li>
-<li>Customizable Element class lookup:<ul>
-<li>different pre-implemented lookup mechanisms</li>
-<li>support for externally provided lookup functions</li>
-</ul>
-</li>
-<li>Support for processing instructions (ET-like, not compatible)</li>
-<li>Public C-level API for independent extension modules</li>
-<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
-<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
-documentation for differences)</li>
-<li>Element.nsmap property returns a mapping of all namespace prefixes known at
-the Element to their namespace URI</li>
-<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
-<li>Threading support in parsers and serializers:<ul>
-<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
-<li>File operations (on file names) free the GIL</li>
-<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
-<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
-</ul>
-</li>
-<li>Element iteration over XPath axes:<ul>
-<li>Element.iterdescendants() iterates over the descendants of an element</li>
-<li>Element.iterancestors() iterates over the ancestors of an element (from
-parent to parent)</li>
-<li>Element.itersiblings() iterates over either the following or preceding
-siblings of an element</li>
-<li>Element.iterchildren() iterates over the children of an element in either
-direction</li>
-<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
-generated elements</li>
-</ul>
-</li>
-<li>Element.getnext() and Element.getprevious() return the direct siblings of an
-element</li>
-</ul>
-</div>
-<div class="section" id="id345">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>filenames with local 8-bit encoding were not supported</li>
-<li>1.1beta did not compile under Python 2.3</li>
-<li>ignore unknown 'pyval' attribute values in objectify</li>
-<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
-<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
-<li>XPathSyntaxError now inherits from XPathError</li>
-<li>Threading race conditions in RelaxNG and XMLSchema</li>
-<li>Crash when mixing elements from XSLT results into other trees, concurrent
-XSLT is only allowed when the stylesheet was parsed in the main thread</li>
-<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
-differences in the regular expression syntax)</li>
-<li>Setting element.text to '' returned None on request, not the empty string</li>
-<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
-<li>Creating documents no longer copies the parser for later URL resolving.  For
-performance reasons, only a reference is kept.  Resolver updates on the
-parser will now be reflected by documents that were parsed before the
-change.  Although this should rarely become visible, it is a behavioral
-change from 1.0.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id346">
-<h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id347">
-<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">
-<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">
-<h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id350">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Crash when mixing elements from XSLT results into other trees</li>
-<li>Copying/deepcopying did not work for ElementTree objects</li>
-<li>Setting an attribute to a non-string value did not raise an exception</li>
-<li>Element.remove() deleted the tail text from the removed Element</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id352">
-<h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id353">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Rare exceptions in Python list functions were not handled</li>
-<li>Parsing accepted unicode strings with XML encoding declaration in certain
-cases</li>
-<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
-<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
-<li>XSLT and parser exception messages include the error line number</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id355">
-<h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id356">
-<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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Document deallocation could crash in certain garbage collection scenarios</li>
-<li>Extension function calls in XSLT variable declarations could break the
-stylesheet and crash on repeated calls</li>
-<li>Deep copying Elements could lose namespaces declared in parents</li>
-<li>Deep copying Elements did not copy tail</li>
-<li>Parsing file(-like) objects failed to load external entities</li>
-<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
-<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
-<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
-<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id358">
-<h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id359">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Element.getiterator() and the findall() methods support finding arbitrary
-elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
-<li>Another speedup in tree iteration code</li>
-<li>General speedup of Python Element object creation and deallocation</li>
-<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
-<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
-<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
-document that contains the element.</li>
-<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
-find the element in the tree structure</li>
-<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
-<li>Comment texts can be changed through the API</li>
-<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
-<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
-<li>ElementTree.write() no longer serializes in memory (reduced memory
-footprint)</li>
-<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
-<li>Support for writing the XML representation of Elements and ElementTrees to
-Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
-<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
-<li>Parsing a unicode string no longer copies the string (reduced memory
-footprint)</li>
-<li>Parsing file-like objects reads chunks rather than the whole file (reduced
-memory footprint)</li>
-<li>Parsing StringIO objects from the start avoids copying the string (reduced
-memory footprint)</li>
-<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
-information, original encoding and XML version as seen by the parser</li>
-<li>etree module can be compiled without libxslt by commenting out the line
-<tt class="docutils literal">include &quot;xslt.pxi&quot;</tt> near the end of the etree.pyx source file</li>
-<li>Better error messages in parser exceptions</li>
-<li>Error reporting also works in XSLT</li>
-<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
-resolvers are registered at parser level</li>
-<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
-enabled by default, can be switched off with 'regexp=False' keyword argument</li>
-<li>Support for exslt extensions (libexslt) and libxslt extra functions
-(node-set, document, write, output)</li>
-<li>Substantial speedup in XPath.evaluate()</li>
-<li>HTMLParser for parsing (broken) HTML</li>
-<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
-implementation of libxml2 (as opposed to ET compatible XMLID)</li>
-</ul>
-</div>
-<div class="section" id="id360">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory leak in Element.__setitem__</li>
-<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
-<li>Memory leak in XPath extension functions</li>
-<li>Memory leak in unicode related setup code</li>
-<li>Element now raises ValueError on empty tag names</li>
-<li>Namespace fixing after moving elements between documents could fail if the
-source document was freed too early</li>
-<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -&gt; 't')
-didn't reset the namespace</li>
-<li>Unknown constants from newer libxml2 versions could raise exceptions in the
-error handlers</li>
-<li>lxml.etree compiles much faster</li>
-<li>On libxml2 &lt;= 2.6.22, parsing strings with encoding declaration could fail
-in certain cases</li>
-<li>Document reference in ElementTree objects was not updated when the root
-element was moved to a different document</li>
-<li>Running absolute XPath expressions on an Element now evaluates against the
-root tree</li>
-<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
-<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
-objects</li>
-<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
-<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
-<li>Memory leak when using iconv encoders in tostring/write</li>
-<li>Deep copying Elements and ElementTrees maintains the document information</li>
-<li>Serialization functions raise LookupError for unknown encodings</li>
-<li>Memory deallocation crash resulting from deep copying elements</li>
-<li>Some ElementTree methods could crash if the root node was not initialized
-(neither file nor element passed to the constructor)</li>
-<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
-dictionary</li>
-<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
-<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
-<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
-ElementTree root node as reference point</li>
-<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id361">
-<h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id362">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Speedup for Element.makeelement(): the new element reuses the original
-libxml2 document instead of creating a new empty one</li>
-<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
-<li>ElementTree compatible QName class</li>
-<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
-</ul>
-</div>
-<div class="section" id="id363">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
-<li>Memory leak if write_c14n fails to write the file after conversion</li>
-<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
-<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id364">
-<h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id365">
-<h2>Features added</h2>
-<ul class="simple">
-<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
-SaxError on mismatch</li>
-<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
-(startElement, endElement) and defaults to empty attributes (keyword
-argument)</li>
-<li>Speedup for repeatedly accessing element tag names</li>
-<li>Minor API performance improvements</li>
-</ul>
-</div>
-<div class="section" id="id366">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Memory deallocation bug when using XSLT output method &quot;html&quot;</li>
-<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
-<li>lxml.tests package will no longer be installed (is still in source tar)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id367">
-<h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id368">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Error logging API for libxml2 error messages</li>
-<li>Various performance improvements</li>
-<li>Benchmark script for lxml, ElementTree and cElementTree</li>
-<li>Support for registering extension functions through new FunctionNamespace
-class (see doc/extensions.txt)</li>
-<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
-<li>Support for variables in XPath expressions (also in XPath class)</li>
-<li>XPath class for compiled XPath expressions</li>
-<li>XMLID module level function (ElementTree compatible)</li>
-<li>XMLParser API for customized libxml2 parser configuration</li>
-<li>Support for custom Element classes through new Namespace API (see
-doc/namespace_extensions.txt)</li>
-<li>Common exception base class LxmlError for module exceptions</li>
-<li>real iterator support in iter(Element), Element.getiterator()</li>
-<li>XSLT objects are callable, result trees support str()</li>
-<li>Added MANIFEST.in for easier creation of RPM files.</li>
-<li>'getparent' method on elements allows navigation to an element's
-parent element.</li>
-<li>Python core compatible SAX tree builder and SAX event generator. See
-doc/sax.txt for more information.</li>
-</ul>
-</div>
-<div class="section" id="id369">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Segfaults and memory leaks in various API functions of Element</li>
-<li>Segfault in XSLT.tostring()</li>
-<li>ElementTree objects no longer interfere, Elements can be root of different
-ElementTrees at the same time</li>
-<li>document('') works in XSLT documents read from files (in-memory documents
-cannot support this due to libxslt deficiencies)</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id370">
-<h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id371">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
-does the same thing, and does <em>not</em> create a shallow copy, as that
-makes no sense in the context of libxml2 trees. This means a
-potential incompatibility with ElementTree, but there's more chance
-that it works than if copy.copy() isn't supported at all.</li>
-<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
-supported and parsing of gzipped XML files works.</li>
-<li>implemented index() on elements, allowing one to find the index of a
-SubElement.</li>
-</ul>
-</div>
-<div class="section" id="id372">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Use xslt-config instead of xml2-config to find out libxml2
-directories to take into account a case where libxslt is installed
-in a different directory than libxslt.</li>
-<li>Eliminate crash condition in iteration when text nodes are changed.</li>
-<li>Passing 'None' to tostring() does not result in a segfault anymore,
-but an AssertionError.</li>
-<li>Some test fixes for Windows.</li>
-<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
-syntax errors. This should be less confusing.</li>
-<li>Fixed error with uncaught exception in Pyrex code.</li>
-<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
-segfault.</li>
-<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
-<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
-libxml2 version, as it should.</li>
-<li>Passing a UTF-8 encoded string to the XML() function would fail;
-fixed.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id373">
-<h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id374">
-<h2>Features added</h2>
-<ul class="simple">
-<li>parameters (XPath expressions) can be passed to XSLT using keyword
-parameters.</li>
-<li>Simple XInclude support. Calling the xinclude() method on a tree
-will process any XInclude statements in the document.</li>
-<li>XMLSchema support. Use the XMLSchema class or the convenience
-xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
-<li>Added convenience xslt() method on tree. This is less efficient
-than the XSLT object, but makes it easier to write quick code.</li>
-<li>Added convenience relaxng() method on tree. This is less efficient
-than the RelaxNG object, but makes it easier to write quick code.</li>
-<li>Make it possible to use XPathEvaluator with elements as well. The
-XPathEvaluator in this case will retain the element so multiple
-XPath queries can be made against one element efficiently. This
-replaces the second argument to the .evaluate() method that existed
-previously.</li>
-<li>Allow registerNamespace() to be called on an XPathEvaluator, after
-creation, to add additional namespaces. Also allow registerNamespaces(),
-which does the same for a namespace dictionary.</li>
-<li>Add 'prefix' attribute to element to be able to read prefix information.
-This is entirely read-only.</li>
-<li>It is possible to supply an extra nsmap keyword parameter to
-the Element() and SubElement() constructors, which supplies a
-prefix to namespace URI mapping. This will create namespace
-prefix declarations on these elements and these prefixes will show up
-in XML serialization.</li>
-</ul>
-</div>
-<div class="section" id="id375">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Killed yet another memory management related bug: trees created
-using newDoc would not get a libxml2-level dictionary, which caused
-problems when deallocating these documents later if they contained a
-node that came from a document with a dictionary.</li>
-<li>Moving namespaced elements between documents was problematic as
-references to the original document would remain. This has been fixed
-by applying xmlReconciliateNs() after each move operation.</li>
-<li>Can pass None to 'dump()' without segfaults.</li>
-<li>tostring() works properly for non-root elements as well.</li>
-<li>Cleaned out the tostring() method so it should handle encoding
-correctly.</li>
-<li>Cleaned out the ElementTree.write() method so it should handle encoding
-correctly. Writing directly to a file should also be faster, as there is no
-need to go through a Python string in that case. Made sure the test cases
-test both serializing to StringIO as well as serializing to a real file.</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id376">
-<h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id377">
-<h2>Features added</h2>
-<ul class="simple">
-<li>Changed setup.py so that library_dirs is also guessed. This should
-help with compilation on the Mac OS X platform, where otherwise the
-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">
-<h2>Bugs fixed</h2>
-<ul class="simple">
-<li>Do the right thing when handling namespaced attributes.</li>
-<li>fix bug where tostring() moved nodes into new documents. tostring()
-had very nasty side-effects before this fix, sorry!</li>
-</ul>
-</div>
-</div>
-<div class="section" id="id379">
-<h1>0.5.1 (2005-04-09)</h1>
-<ul class="simple">
-<li>Python 2.2 compatibility fixes.</li>
-<li>unicode fixes in Element() and Comment() as well as XML(); unicode
-input wasn't properly being UTF-8 encoded.</li>
-</ul>
-</div>
-<div class="section" id="id380">
-<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.
-
-</div>
-</body>
-</html>
diff --git a/doc/html/changes-4.2.2.html b/doc/html/changes-4.2.2.html
new file mode 100644 (file)
index 0000000..f1014b3
--- /dev/null
@@ -0,0 +1,3373 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+<meta name="generator" content="Docutils 0.12: http://docutils.sourceforge.net/" />
+<title>lxml changelog</title>
+<link rel="stylesheet" href="style.css" type="text/css" />
+</head>
+<body>
+<div class="document" id="lxml-changelog">
+<h1 class="title">lxml changelog</h1>
+
+<div class="section" id="id1">
+<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>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1727864">LP#1727864</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/258">GH#258</a>: Add &quot;-isysroot&quot; linker option on MacOS as needed by XCode 9.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id4">
+<h1>4.2.0 (2018-03-13)</h1>
+<div class="section" id="features-added">
+<h2>Features added</h2>
+<ul class="simple">
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/255">GH#255</a>: <tt class="docutils literal">SelectElement.value</tt> returns more standard-compliant and
+browser-like defaults for non-multi-selects.  If no option is selected, the
+value of the first option is returned (instead of None).  If multiple options
+are selected, the value of the last one is returned (instead of that of the
+first one).  If no options are present (not standard-compliant)
+<tt class="docutils literal">SelectElement.value</tt> still returns <tt class="docutils literal">None</tt>.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/261">GH#261</a>: The <tt class="docutils literal">HTMLParser()</tt> now supports the <tt class="docutils literal">huge_tree</tt> option.
+Patch by stranac.</li>
+</ul>
+</div>
+<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>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1737825">LP#1737825</a>: Crash at shutdown after an interrupted iterparse run with XMLSchema
+validation.</li>
+</ul>
+</div>
+<div class="section" id="other-changes">
+<h2>Other changes</h2>
+</div>
+</div>
+<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="id7">
+<h1>4.1.0 (2017-10-13)</h1>
+<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>
+<li>ElementPath allows spaces in predicates.</li>
+<li>Custom Element classes and XPath functions can now be registered with a
+decorator rather than explicit dict assignments.</li>
+<li>Static Linux wheels are now built with link time optimisation (LTO) enabled.
+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="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
+<tt class="docutils literal">PythonElementClassLookup</tt> could fail with a TypeError.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id10">
+<h1>4.0.0 (2017-09-17)</h1>
+<div class="section" id="id11">
+<h2>Features added</h2>
+<ul class="simple">
+<li>The ElementPath implementation is now compiled using Cython,
+which speeds up the <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods quite significantly.</li>
+<li>The modules <tt class="docutils literal">lxml.builder</tt>, <tt class="docutils literal">lxml.html.diff</tt> and <tt class="docutils literal">lxml.html.clean</tt>
+are also compiled using Cython in order to speed them up.</li>
+<li><tt class="docutils literal">xmlfile()</tt> supports async coroutines using <tt class="docutils literal">async with</tt> and <tt class="docutils literal">await</tt>.</li>
+<li><tt class="docutils literal">iterwalk()</tt> has a new method <tt class="docutils literal">skip_subtree()</tt> that prevents walking into
+the descendants of the current element.</li>
+<li><tt class="docutils literal">RelaxNG.from_rnc_string()</tt> accepts a <tt class="docutils literal">base_url</tt> argument to
+allow relative resource lookups.</li>
+<li>The XSLT result object has a new method <tt class="docutils literal">.write_output(file)</tt> that serialises
+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="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.
+Patch by mozbugbox.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1654544">LP#1654544</a>: The html5parser no longer passes the <tt class="docutils literal">useChardet</tt> option
+if the input is a Unicode string, unless explicitly requested.  When parsing
+files, the default is to enable it when a URL or file path is passed (because
+the file is then opened in binary mode), and to disable it when reading from
+a file(-like) object.</p>
+<p>Note: This is a backwards incompatible change of the default configuration.
+If your code parses byte strings/streams and depends on character detection,
+please pass the option <tt class="docutils literal">guess_charset=True</tt> explicitly, which already worked
+in older lxml versions.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1703810">LP#1703810</a>: <tt class="docutils literal">etree.fromstring()</tt> failed to parse UTF-32 data with BOM.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1526522">LP#1526522</a>: Some RelaxNG errors were not reported in the error log.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1567526">LP#1567526</a>: Empty and plain text input raised a TypeError in soupparser.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1710429">LP#1710429</a>: Uninitialised variable usage in HTML diff.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1415643">LP#1415643</a>: The closing tags context manager in <tt class="docutils literal">xmlfile()</tt> could continue
+to output end tags even after writing failed with an exception.</p>
+</li>
+<li><p class="first"><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1465357">LP#1465357</a>: <tt class="docutils literal">xmlfile.write()</tt> now accepts and ignores None as input argument.</p>
+</li>
+<li><p class="first">Compilation under Py3.7-pre failed due to a modified function signature.</p>
+</li>
+</ul>
+</div>
+<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
+<tt class="docutils literal">*.pyx</tt> (e.g. <tt class="docutils literal">etree.pyx</tt>) to simplify their handling in the build
+process.  Care was taken to keep the old header files as fallbacks for
+code that compiles against the public C-API of lxml, but it might still
+be worth validating that third-party code does not notice this change.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id14">
+<h1>3.8.0 (2017-06-03)</h1>
+<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
+doctype string before the serialisation, in the same way as <tt class="docutils literal">tostring()</tt>.</li>
+<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>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1595781">LP#1595781</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/240">GH#240</a>: added a PyCapsule Python API and C-level API for
+passing externally generated libxml2 documents into lxml.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/244">GH#244</a>: error log entries have a new property <tt class="docutils literal">path</tt> with an XPath
+expression (if known, None otherwise) that points to the tree element
+responsible for the error. Patch by Bob Kline.</li>
+<li>The namespace prefix mapping that can be used in ElementPath now injects
+a default namespace when passing a None prefix.</li>
+</ul>
+</div>
+<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.
+Patch by matejcik.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/229">GH#229</a>: fix for externally created XML documents.  Patch by Theodore Dubois.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1665241">LP#1665241</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/228">GH#228</a>: Form data handling in lxml.html no longer strips the
+option values specified in form attributes but only the text values.
+Patch by Ashish Kulkarni.</li>
+<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
+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="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>
+produces a deprecation warning and will eventually be removed.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id19">
+<h1>3.7.4 (2017-??-??)</h1>
+<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
+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>
+<div class="section" id="id24">
+<h1>3.7.3 (2017-02-18)</h1>
+<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>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/222">GH#222</a>: <tt class="docutils literal">lxml.html.submit_form()</tt> failed in Python 3.
+Patch by Jakub Wilk.</li>
+</ul>
+</div>
+</div>
+<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="id28">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Work around installation problems in recent Python 2.7 versions
+due to FTP download failures.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/219">GH#219</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly quoting attribute values.
+Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/218">GH#218</a>: <tt class="docutils literal">xmlfile.element()</tt> was not properly escaping text content of
+script/style tags.  Patch by Burak Arslan.</li>
+</ul>
+</div>
+</div>
+<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="id31">
+<h1>3.7.0 (2016-12-10)</h1>
+<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>
+baseclass.  Patch by Philipp A.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/216">GH#216</a>: <tt class="docutils literal">HTMLParser()</tt> now supports the same <tt class="docutils literal">collect_ids</tt> parameter
+as <tt class="docutils literal">XMLParser()</tt>.  Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/210">GH#210</a>: Allow specifying a serialisation method in <tt class="docutils literal">xmlfile.write()</tt>.
+Patch by Burak Arslan.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/203">GH#203</a>: New option <tt class="docutils literal">default_doctype</tt> in <tt class="docutils literal">HTMLParser</tt> that allows
+disabling the automatic doctype creation.  Patch by Shadab Zafar.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/201">GH#201</a>: Calling the method <tt class="docutils literal"><span class="pre">.set('attrname')</span></tt> without value argument
+(or <tt class="docutils literal">None</tt>) on HTML elements creates an attribute without value that
+serialises like <tt class="docutils literal">&lt;div <span class="pre">attrname&gt;&lt;/div&gt;</span></tt>.  Patch by Daniel Holth.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/197">GH#197</a>: Ignore form input fields in <tt class="docutils literal">form_values()</tt> when they are
+marked as <tt class="docutils literal">disabled</tt> in HTML.  Patch by Kristian Klemon.</li>
+</ul>
+</div>
+<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="id34">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Log entries no longer allow anything but plain string objects as message text
+and file name.</li>
+<li><tt class="docutils literal">zlib</tt> is included in the list of statically built libraries.</li>
+</ul>
+</div>
+</div>
+<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="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="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="id39">
+<h1>3.6.1 (2016-07-24)</h1>
+<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>
+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="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).
+Patch by Tomas Divis.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/198">GH#198</a>, <a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1568167">LP#1568167</a>: Try to provide base URL from <tt class="docutils literal">Resolver.resolve_string()</tt>.
+Patch by Michael van Tellingen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/191">GH#191</a>: More accurate float serialisation in <tt class="docutils literal">objectify.FloatElement</tt>.
+Patch by Holger Joukl.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1551797">LP#1551797</a>: Repair XSLT error logging. Patch by Marcus Brinkmann.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id43">
+<h1>3.6.0 (2016-03-17)</h1>
+<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.
+Patch by Armin Rigo.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/181">GH#181</a>: Direct support for <tt class="docutils literal">.rnc</tt> files in <cite>RelaxNG()</cite> if <tt class="docutils literal">rnc2rng</tt>
+is installed.  Patch by Dirkjan Ochtman.</li>
+</ul>
+</div>
+<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
+the external libs.  Patch by Youhei Sakurai.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/186">GH#186</a>: Soupparser failed to process entities in Python 3.x.
+Patch by Duncan Morris.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/185">GH#185</a>: Rare encoding related <tt class="docutils literal">TypeError</tt> on import was fixed.
+Patch by Petr Demin.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id46">
+<h1>3.5.0 (2015-11-13)</h1>
+<div class="section" id="id47">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Unicode string results failed XPath queries in PyPy.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1497051">LP#1497051</a>: HTML target parser failed to terminate on exceptions
+and continued parsing instead.</li>
+<li>Deprecated API usage in doctestcompare.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="b1-2015-09-18">
+<h1>3.5.0b1 (2015-09-18)</h1>
+<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>
+that does not remove definitions of the provided prefix-namespace
+mapping from the tree.</li>
+<li><tt class="docutils literal">cleanup_namespaces()</tt> accepts a new argument <tt class="docutils literal">top_nsmap</tt> that
+moves definitions of the provided prefix-namespace mapping to the
+top of the tree.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1490451">LP#1490451</a>: <tt class="docutils literal">Element</tt> objects gained a <tt class="docutils literal">cssselect()</tt> method as
+known from <tt class="docutils literal">lxml.html</tt>.  Patch by Simon Sapin.</li>
+<li>API functions and methods behave and look more like Python functions,
+which allows introspection on them etc.  One side effect to be aware of
+is that the functions now bind as methods when assigned to a class
+variable.  A quick fix is to wrap them in <tt class="docutils literal">staticmethod()</tt> (as for
+normal Python functions).</li>
+<li>ISO-Schematron support gained an option <tt class="docutils literal">error_finder</tt> that allows
+passing a filter function for picking validation errors from reports.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1243600">LP#1243600</a>: Elements in <tt class="docutils literal">lxml.html</tt> gained a <tt class="docutils literal">classes</tt> property
+that provides a set-like interface to the <tt class="docutils literal">class</tt> attribute.
+Original patch by masklinn.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1341964">LP#1341964</a>: The soupparser now handles DOCTYPE declarations, comments
+and processing instructions outside of the root element.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421512">LP#1421512</a>: The <tt class="docutils literal">docinfo</tt> of a tree was made editable to allow
+setting and removing the public ID and system ID of the DOCTYPE.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1442427">LP#1442427</a>: More work-arounds for quirks and bugs in pypy and pypy3.</li>
+<li><tt class="docutils literal">lxml.html.soupparser</tt> now uses BeautifulSoup version 4 instead
+of version 3 if available.</li>
+</ul>
+</div>
+<div class="section" id="id49">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory errors that occur during tree adaptations (e.g. moving subtrees
+to foreign documents) could leave the tree in a crash prone state.</li>
+<li>Calling <tt class="docutils literal">process_children()</tt> in an XSLT extension element without
+an <tt class="docutils literal">output_parent</tt> argument failed with a <tt class="docutils literal">TypeError</tt>.
+Fix by Jens Tröger.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/162">GH#162</a>: Image data in HTML <tt class="docutils literal">data</tt> URLs is considered safe and
+no longer removed by <tt class="docutils literal">lxml.html.clean</tt> JavaScript cleaner.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/166">GH#166</a>: Static build could link libraries in wrong order.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/172">GH#172</a>: Rely a bit more on libxml2 for encoding detection rather than
+rolling our own in some cases.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/159">GH#159</a>: Validity checks for names and string content were tightened
+to detect the use of illegal characters early.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421921">LP#1421921</a>: Comments/PIs before the DOCTYPE declaration were not
+serialised.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/659367">LP#659367</a>: Some HTML DOCTYPE declarations were not serialised.
+Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238503">LP#1238503</a>: lxml.doctestcompare is now consistent with stdlib's doctest
+in how it uses <tt class="docutils literal">+</tt> and <tt class="docutils literal">-</tt> to refer to unexpected and missing output.</li>
+<li>Empty prefixes are explicitly rejected when a namespace mapping is used
+with ElementPath to avoid hiding bugs in user code.</li>
+<li>Several problems with PyPy were fixed by switching to Cython 0.23.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id50">
+<h1>3.4.4 (2015-04-25)</h1>
+<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
+Python 3.4+ was removed again.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id52">
+<h1>3.4.3 (2015-04-15)</h1>
+<div class="section" id="id53">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1426868">LP#1426868</a>: Passing a default namespace and a prefixed namespace mapping
+as nsmap into <tt class="docutils literal">xmlfile.element()</tt> raised a <tt class="docutils literal">TypeError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1421927">LP#1421927</a>: DOCTYPE system URLs were incorrectly quoted when containing
+double quotes.  Patch by Olli Pottonen.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1419354">LP#1419354</a>: meta-redirect URLs were incorrectly processed by
+<tt class="docutils literal">iterlinks()</tt> if preceded by whitespace.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id54">
+<h1>3.4.2 (2015-02-07)</h1>
+<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
+of an XML document.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1369362">LP#1369362</a>: HTML cleaning failed when hitting processing instructions
+with pseudo-attributes.</li>
+<li><tt class="docutils literal">CDATA()</tt> wrapped content was rejected for tail text.</li>
+<li>CDATA sections were not serialised as tail text of the top-level element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id56">
+<h1>3.4.1 (2014-11-20)</h1>
+<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="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="id59">
+<h1>3.4.0 (2014-09-10)</h1>
+<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
+content after each API operation (starting/ending element blocks or writes).
+A new method <tt class="docutils literal">xf.flush()</tt> can alternatively be used to explicitly flush
+the output.</li>
+<li><tt class="docutils literal">lxml.html.document_fromstring</tt> has a new option <tt class="docutils literal">ensure_head_body=True</tt>
+which will add an empty head and/or body element to the result document if
+missing.</li>
+<li><tt class="docutils literal">lxml.html.iterlinks</tt> now returns links inside meta refresh tags.</li>
+<li>New <tt class="docutils literal">XMLParser</tt> option <tt class="docutils literal">collect_ids=False</tt> to disable ID hash table
+creation.  This can substantially speed up parsing of documents with many
+different IDs that are not used.</li>
+<li>The parser uses per-document hash tables for XML IDs.  This reduces the
+load of the global parser dict and speeds up parsing for documents with
+many different IDs.</li>
+<li><tt class="docutils literal">ElementTree.getelementpath(element)</tt> returns a structural ElementPath
+expression for the given element, which can be used for lookups later.</li>
+<li><tt class="docutils literal">xmlfile()</tt> accepts a new argument <tt class="docutils literal">close=True</tt> to close file(-like)
+objects after writing to them.  Before, <tt class="docutils literal">xmlfile()</tt> only closed the file
+if it had opened it internally.</li>
+<li>Allow &quot;bytearray&quot; type for ASCII text input.</li>
+</ul>
+</div>
+<div class="section" id="id61">
+<h2>Bugs fixed</h2>
+</div>
+<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.
+Previously, they could lead to an internal tree representation in a mixed
+encoding state, which lead to very late errors or even silently incorrect
+behaviour during tree traversal or serialisation.</li>
+<li>Requires Python 2.6, 2.7, 3.2 or later. No longer supports
+Python 2.4, 2.5 and 3.1, use lxml 3.3.x for those.</li>
+<li>Requires libxml2 2.7.0 or later and libxslt 1.1.23 or later,
+use lxml 3.3.x with older versions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id63">
+<h1>3.3.6 (2014-08-28)</h1>
+<div class="section" id="id64">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Prevent tree cycle creation when adding Elements as siblings.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1361948">LP#1361948</a>: crash when deallocating Element siblings without parent.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1354652">LP#1354652</a>: crash when traversing internally loaded documents in XSLT
+extension functions.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id65">
+<h1>3.3.5 (2014-04-18)</h1>
+<div class="section" id="id66">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning could fail to strip javascript links that mix control
+characters into the link scheme.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id67">
+<h1>3.3.4 (2014-04-03)</h1>
+<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="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="id70">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id71">
+<h1>3.3.3 (2014-03-04)</h1>
+<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="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
+subclassed from Python code.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id74">
+<h1>3.3.2 (2014-02-26)</h1>
+<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
+<tt class="docutils literal">set_element_class_lookup()</tt> and <tt class="docutils literal">makeelement()</tt>, were lost from
+<tt class="docutils literal">iterparse</tt> objects in 3.3.0.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1222132">LP#1222132</a>: instances of <tt class="docutils literal">XMLSchema</tt>, <tt class="docutils literal">Schematron</tt> and <tt class="docutils literal">RelaxNG</tt>
+did not clear their local <tt class="docutils literal">error_log</tt> before running a validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1238500">LP#1238500</a>: lxml.doctestcompare mixed up &quot;expected&quot; and &quot;actual&quot; in
+attribute values.</li>
+<li>Some file I/O tests were failing in MS-Windows due to non-portable temp
+file usage.  Initial patch by Gabi Davar.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/910014">LP#910014</a>: duplicate IDs in a document were not reported by DTD validation.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1185332">LP#1185332</a>: <tt class="docutils literal"><span class="pre">tostring(method=&quot;html&quot;)</span></tt> did not use HTML serialisation
+semantics for trailing tail text.  Initial patch by Sylvain Viollon.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1281139">LP#1281139</a>: <tt class="docutils literal">.attrib</tt> value of Comments lost its mutation methods
+in 3.3.0.  Even though it is empty and immutable, it should still
+provide the same interface as that returned for Elements.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id76">
+<h1>3.3.1 (2014-02-12)</h1>
+<div class="section" id="id77">
+<h2>Features added</h2>
+</div>
+<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
+elements during tag iteration.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1273709">LP#1273709</a>: Building in PyPy failed due to missing support for
+<tt class="docutils literal">PyUnicode_Compare()</tt> and <tt class="docutils literal"><span class="pre">PyByteArray_*()</span></tt> in PyPy's C-API.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274413">LP#1274413</a>: Compilation in MSVC failed due to missing &quot;stdint.h&quot; standard
+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="id79">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id80">
+<h1>3.3.0 (2014-01-26)</h1>
+<div class="section" id="id81">
+<h2>Features added</h2>
+</div>
+<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="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="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="id85">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Several error handling problems were fixed throughout the code base that
+could previously lead to exceptions being silently swallowed or not
+properly reported.</li>
+<li>The C-API function <tt class="docutils literal">appendChild()</tt> is now deprecated as it does not
+propagate exceptions (its return type is <tt class="docutils literal">void</tt>).  The new function
+<tt class="docutils literal">appendChildToElement()</tt> was added as a safe replacement.</li>
+<li>Passing a string into <tt class="docutils literal">fromstringlist()</tt> raises an exception instead of
+parsing the string character by character.</li>
+</ul>
+</div>
+<div class="section" id="id86">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Document cleanup code was simplified using the new GC features in
+Cython 0.20.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2014-01-12">
+<h1>3.3.0beta4 (2014-01-12)</h1>
+<div class="section" id="id87">
+<h2>Features added</h2>
+</div>
+<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
+objects was mutable.</li>
+<li>Element class lookup wasn't available for the new pull parsers or when using
+a custom parser target.</li>
+<li>Setting Element attributes on instantiation with both the <tt class="docutils literal">attrib</tt> argument
+and keyword arguments could modify the mapping passed as <tt class="docutils literal">attrib</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1266171">LP#1266171</a>: DTDs instantiated from internal/external subsets (i.e. through
+the docinfo property) lost their attribute declarations.</li>
+</ul>
+</div>
+<div class="section" id="id89">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
+Python 3.4.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2014-01-02">
+<h1>3.3.0beta3 (2014-01-02)</h1>
+<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="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="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="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="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="id95">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The safety check in the read-only tree implementation (e.g. used by
+<tt class="docutils literal">PythonElementClassLookup</tt>) raises a more appropriate <tt class="docutils literal">ReferenceError</tt>
+for illegal access after tree disposal instead of an <tt class="docutils literal">AssertionError</tt>.
+This should only impact test code that specifically checks the original
+behaviour.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2013-12-12">
+<h1>3.3.0beta1 (2013-12-12)</h1>
+<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
+<tt class="docutils literal">resolve_base_href()</tt> (lxml.html) that enables ignoring or
+discarding links that fail to parse as URLs.</li>
+<li>New parser classes <tt class="docutils literal">XMLPullParser</tt> and <tt class="docutils literal">HTMLPullParser</tt> for
+incremental parsing, as implemented for ElementTree in Python 3.4.</li>
+<li><tt class="docutils literal">iterparse()</tt> enables recovery mode by default for HTML parsing
+(<tt class="docutils literal">html=True</tt>).</li>
+</ul>
+</div>
+<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.
+comment or PI).</li>
+<li>Error messages in the log and in exception messages that originated
+from libxml2 could accidentally be picked up from preceding warnings
+instead of the actual error.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify did not accept a dict as
+argument for adding attributes to the element it's building. This
+works as in lxml.builder now.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants, instead of running into an infinite
+loop.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+<li>lxml.html.formfill: Fix textarea form filling.
+The textarea used to be cleared before the new content was set,
+which removed the name attribute.</li>
+</ul>
+</div>
+<div class="section" id="id98">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some basic API classes use freelists internally for faster
+instantiation.  This can speed up some <tt class="docutils literal">iterparse()</tt> scenarios,
+for example.</li>
+<li><tt class="docutils literal">iterparse()</tt> was rewritten to use the new <tt class="docutils literal">*PullParser</tt>
+classes internally instead of being a parser itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id99">
+<h1>3.2.5 (2014-01-02)</h1>
+<div class="section" id="id100">
+<h2>Features added</h2>
+</div>
+<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>
+<li>Crash in target parsing with attributes.</li>
+<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.
+comment or PI).</li>
+</ul>
+</div>
+<div class="section" id="id103">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id104">
+<h1>3.2.4 (2013-11-07)</h1>
+<div class="section" id="id105">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id106">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak when creating an XPath evaluator in a thread.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1228881">LP#1228881</a>: <tt class="docutils literal">repr(XSLTAccessControl)</tt> failed in Python 3.</li>
+<li>Raise <tt class="docutils literal">ValueError</tt> when trying to append an Element to itself or
+to one of its own descendants.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1206077">LP#1206077</a>: htmldiff discarded whitespace from the output.</li>
+<li>Compressed plain-text serialisation to file-like objects was broken.</li>
+</ul>
+</div>
+<div class="section" id="id109">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id110">
+<h1>3.2.3 (2013-07-28)</h1>
+<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="id112">
+<h1>3.2.2 (2013-07-28)</h1>
+<div class="section" id="id113">
+<h2>Features added</h2>
+</div>
+<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="id115">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Return values of user provided element class lookup methods are now
+validated against the type of the XML node they represent to prevent
+API class mismatches.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id116">
+<h1>3.2.1 (2013-05-11)</h1>
+<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
+extension elements have gained two new boolean options <tt class="docutils literal">elements_only</tt>
+and <tt class="docutils literal">remove_blank_text</tt> that discard either all strings or whitespace-only
+strings from the result list.</li>
+</ul>
+</div>
+<div class="section" id="id118">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When moving Elements to another tree, the namespace cleanup mechanism
+no longer drops namespace prefixes from attributes for which it finds
+a default namespace declaration, to prevent them from appearing as
+unnamespaced attributes after serialisation.</li>
+<li>Returning non-type objects from a custom class lookup method could lead
+to a crash.</li>
+<li>Instantiating and using subtypes of Comments and ProcessingInstructions
+crashed.</li>
+</ul>
+</div>
+<div class="section" id="id119">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id120">
+<h1>3.2.0 (2013-04-28)</h1>
+<div class="section" id="id121">
+<h2>Features added</h2>
+</div>
+<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
+parsing functions in <tt class="docutils literal">lxml.html</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/599318">LP#599318</a>: The string parsing functions in <tt class="docutils literal">lxml.html</tt> are more robust
+in the face of uncommon HTML content like framesets or missing body tags.
+Patch by Stefan Seelmann.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/712941">LP#712941</a>: I/O errors while trying to access files with paths that contain
+non-ASCII characters could raise <tt class="docutils literal">UnicodeDecodeError</tt> instead of properly
+reporting the <tt class="docutils literal">IOError</tt>.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/673205">LP#673205</a>: Parsing from in-memory strings disabled network access in the
+default parser and made subsequent attempts to parse from a URL fail.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/971754">LP#971754</a>: lxml.html.clean appends 'nofollow' to 'rel' attributes instead
+of overwriting the current value.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/715687">LP#715687</a>: lxml.html.clean no longer discards scripts that are explicitly
+allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
+</ul>
+</div>
+<div class="section" id="id123">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id124">
+<h1>3.1.2 (2013-04-12)</h1>
+<div class="section" id="id125">
+<h2>Features added</h2>
+</div>
+<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
+the sax bridge (i.e. the <tt class="docutils literal">handler.startElement()</tt> method) failed
+with a <tt class="docutils literal">TypeError</tt>.  Patch by Mike Bayer.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1123074">LP#1123074</a>: Fix serialisation error in XSLT output when converting
+the result tree to a Unicode string.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/105">GH#105</a>: Replace illegal usage of <tt class="docutils literal">xmlBufLength()</tt> in libxml2 2.9.0
+by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
+</ul>
+</div>
+<div class="section" id="id127">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id128">
+<h1>3.1.1 (2013-03-29)</h1>
+<div class="section" id="id129">
+<h2>Features added</h2>
+</div>
+<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
+an AttributeError in Py3.</li>
+<li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
+</ul>
+</div>
+<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
+from the module dict.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id132">
+<h1>3.1.0 (2013-02-10)</h1>
+<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="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
+a copy of the attributes as a plain Python dict.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/95">GH#95</a>: When used with namespace prefixes, the  <tt class="docutils literal"><span class="pre">el.find*()</span></tt> methods
+always used the first namespace mapping that was provided for each
+path expression instead of using the one that was actually passed
+in for the current run.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1092521">LP#1092521</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/91">GH#91</a>: Fix undefined C symbol in Python runtimes compiled
+without threading support.  Patch by Ulrich Seidl.</li>
+</ul>
+</div>
+<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="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
+makes the API always return Unicode strings for names and text
+instead of byte strings for plain ASCII content.</li>
+<li>New incremental XML file writing API <tt class="docutils literal">etree.xmlfile()</tt>.</li>
+<li>E factory in lxml.objectify is callable to simplify the creation of
+tags with non-identifier names without having to resort to getattr().</li>
+</ul>
+</div>
+<div class="section" id="id137">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When starting from a non-namespaced element in lxml.objectify, searching
+for a child without explicitly specifying a namespace incorrectly found
+namespaced elements with the requested local name, instead of restricting
+the search to non-namespaced children.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/85">GH#85</a>: Deprecation warnings were fixed for Python 3.x.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/33">GH#33</a>: lxml.html.fromstring() failed to accept bytes input in Py3.</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="id138">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
+removed from the module API of lxml.objectify.</li>
+<li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1075622">LP#1075622</a>: lxml.builder is faster for adding text to elements with
+many children.  Patch by Anders Hammarquist.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id139">
+<h1>3.0.2 (2012-12-14)</h1>
+<div class="section" id="id140">
+<h2>Features added</h2>
+</div>
+<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="id142">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id143">
+<h1>3.0.1 (2012-10-14)</h1>
+<div class="section" id="id144">
+<h2>Features added</h2>
+</div>
+<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
+in PyPy without proper cleanup.</li>
+<li><a class="reference external" href="https://github.com/lxml/lxml/issues/71">GH#71</a>: Failure to work with libxml2 2.6.x.</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="id146">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id147">
+<h1>3.0 (2012-10-08)</h1>
+<div class="section" id="id148">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id149">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>End-of-file handling was incorrect in iterparse() when reading from
+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="id150">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The build no longer uses Cython by default unless the generated C files
+are missing.  To use Cython, pass the option &quot;--with-cython&quot;.  To ignore
+the fatal build error when Cython is required but not available (e.g. to
+run special setup.py commands that do not actually run a build), pass
+&quot;--without-cython&quot;.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2012-09-26">
+<h1>3.0beta1 (2012-09-26)</h1>
+<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="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="id153">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha2-2012-08-23">
+<h1>3.0alpha2 (2012-08-23)</h1>
+<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
+<tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt> to search for elements with a given local name in any
+namespace. With this addition, all combinations of wildcards now work
+as expected:
+<tt class="docutils literal">&quot;{ns}name&quot;</tt>, <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{*}name&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{ns}*&quot;</span></tt>, <tt class="docutils literal"><span class="pre">&quot;{}*&quot;</span></tt>
+and <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.  Note that <tt class="docutils literal">&quot;name&quot;</tt> is equivalent to <tt class="docutils literal"><span class="pre">&quot;{}name&quot;</span></tt>,
+but <tt class="docutils literal">&quot;*&quot;</tt> is <tt class="docutils literal"><span class="pre">&quot;{*}*&quot;</span></tt>.
+The same change applies to the <tt class="docutils literal">.getiterator()</tt>, <tt class="docutils literal">.itersiblings()</tt>,
+<tt class="docutils literal">.iterancestors()</tt>, <tt class="docutils literal">.iterdescendants()</tt>, <tt class="docutils literal">.iterchildren()</tt>
+and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutils literal">strip_attributes()</tt>,
+<tt class="docutils literal">strip_elements()</tt> and <tt class="docutils literal">strip_tags()</tt> functions as well as the
+<tt class="docutils literal">iterparse()</tt> class.  Patch by Simon Sapin.</li>
+<li>C14N allows specifying the inclusive prefixes to be promoted
+to top-level during exclusive serialisation.</li>
+</ul>
+</div>
+<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="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="id157">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Initial support for building in PyPy (through cpyext).</li>
+<li>DTD objects gained an API that allows read access to their
+declarations.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> gained support for parsing line-by-line (e.g.
+from grep output) and for surrounding the output with a new root
+tag.</li>
+<li><tt class="docutils literal"><span class="pre">E-factory</span></tt> in <tt class="docutils literal">lxml.builder</tt> accepts subtypes of known data
+types (such as string subtypes) when building elements around them.</li>
+<li>Tree iteration and <tt class="docutils literal">iterparse()</tt> with a selective <tt class="docutils literal">tag</tt>
+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="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
+internally, which makes them faster in many cases (especially when
+short circuiting after a single or couple of elements) and fixes
+some behavioural differences compared to <tt class="docutils literal">lxml.etree</tt>.  Note that
+this means that they no longer support arbitrary XPath expressions
+but only the subset that the <tt class="docutils literal">ElementPath</tt> language supports.
+The previous implementation was also redundant with the normal
+XPath support, which can be used as a replacement.</li>
+<li><tt class="docutils literal"><span class="pre">el.find('*')</span></tt> could accidentally return a comment or processing
+instruction that happened to be in the wrong spot.  (Same for the
+other <tt class="docutils literal"><span class="pre">.find*()</span></tt> methods.)</li>
+<li>The error logging is less intrusive and avoids a global setup where
+possible.</li>
+<li>Fixed undefined names in html5lib parser.</li>
+<li><tt class="docutils literal">xpathgrep.py</tt> did not work in Python 3.</li>
+<li><tt class="docutils literal">Element.attrib.update()</tt> did not accept an <tt class="docutils literal">attrib</tt> of
+another Element as parameter.</li>
+<li>For subtypes of <tt class="docutils literal">ElementBase</tt> that make the <tt class="docutils literal">.text</tt> or <tt class="docutils literal">.tail</tt>
+properties immutable (as in objectify, for example), inserting text
+when creating Elements through the E-Factory feature of the class
+constructor would fail with an exception, stating that the text
+cannot be modified.</li>
+</ul>
+</div>
+<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
+of libxml2 and libxslt requests it.  This also has an impact on the
+public C-API of lxml itself, as defined in <tt class="docutils literal">etreepublic.pxd</tt>, as
+well as the provided declarations in the <tt class="docutils literal">lxml/includes/</tt> directory.
+Code that uses these declarations may have to be adapted.  On the
+plus side, this fixes several C compiler warnings, also for user
+code, thus making it easier to spot real problems again.</li>
+<li>The functionality of &quot;lxml.cssselect&quot; was moved into a separate PyPI
+package called &quot;cssselect&quot;.  To continue using it, you must install
+that package separately.  The &quot;lxml.cssselect&quot; module is still
+available and provides the same interface, provided the &quot;cssselect&quot;
+package can be imported at runtime.</li>
+<li>Element attributes passed in as an <tt class="docutils literal">attrib</tt> dict or as keyword
+arguments are now sorted by (namespaced) name before being created
+to make their order predictable for serialisation and iteration.
+Note that adding or deleting attributes afterwards does not take
+that order into account, i.e. setting a new attribute appends it
+after the existing ones.</li>
+<li>Several classes that are for internal use only were removed
+from the <tt class="docutils literal">lxml.etree</tt> module dict:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ResolverContext, _BaseContext,
+_ExsltRegExp, _IterparseContext, _TempStore, _ExceptionContext,
+__ContentOnlyElement, _AttribIterator, _NamespaceRegistry,
+_ClassNamespaceRegistry, _FunctionNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _ParserContext, _PythonSaxParserTarget,
+_TargetParserContext, _ReadOnlyProxy, _ReadOnlyPIProxy,
+_ReadOnlyEntityProxy, _ReadOnlyElementProxy, _OpaqueNodeWrapper,
+_OpaqueDocumentWrapper, _ModifyContentOnlyProxy,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _SaxParserContext, _FilelikeWriter,
+_ParserSchemaValidationContext, _XPathContext,
+_XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam</tt></li>
+<li>Several internal classes can no longer be inherited from:
+<tt class="docutils literal">_InputDocument, _ResolverRegistry, _ExsltRegExp, _ElementUnicodeResult,
+_IterparseContext, _TempStore, _AttribIterator, _ClassNamespaceRegistry,
+_XPathFunctionNamespaceRegistry, _ParserDictionaryContext,
+_FileReaderContext, _PythonSaxParserTarget, _TargetParserContext,
+_ReadOnlyPIProxy, _ReadOnlyEntityProxy, _OpaqueDocumentWrapper,
+_ModifyContentOnlyPIProxy, _ModifyContentOnlyEntityProxy,
+_AppendOnlyElementProxy, _FilelikeWriter, _ParserSchemaValidationContext,
+_XPathContext, _XSLTResolverContext, _XSLTContext, _XSLTQuotedStringParam,
+_XSLTResultTree, _XSLTProcessingInstruction</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id160">
+<h1>2.3.6 (2012-09-28)</h1>
+<div class="section" id="id161">
+<h2>Features added</h2>
+</div>
+<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="id163">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id164">
+<h1>2.3.5 (2012-07-31)</h1>
+<div class="section" id="id165">
+<h2>Features added</h2>
+</div>
+<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="id167">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id168">
+<h1>2.3.4 (2012-03-26)</h1>
+<div class="section" id="id169">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id170">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when building an nsmap (Element property) with empty
+namespace URIs.</li>
+<li>Crash due to race condition when errors (or user messages) occur
+during threaded XSLT processing.</li>
+<li>XSLT stylesheet compilation could ignore compilation errors.</li>
+</ul>
+</div>
+<div class="section" id="id171">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id172">
+<h1>2.3.3 (2012-01-04)</h1>
+<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="id174">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
+requesting start events.</li>
+<li>Fixed parsing of more selectors in cssselect.  Whitespace before
+pseudo-elements and pseudo-classes is significant as it is a
+descendant combinator.
+&quot;E :pseudo&quot; should parse the same as &quot;E *:pseudo&quot;, not &quot;E:pseudo&quot;.
+Patch by Simon Sapin.</li>
+<li>lxml.html.diff no longer raises an exception when hitting
+'img' tags without 'src' attribute.</li>
+</ul>
+</div>
+<div class="section" id="id175">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id176">
+<h1>2.3.2 (2011-11-11)</h1>
+<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
+<tt class="docutils literal">cleanup_namespaces</tt> to remove the objectify namespace
+declarations (and generally clean up the namespace declarations)
+after removing the type annotations.</li>
+<li><tt class="docutils literal">lxml.objectify</tt> gained its own <tt class="docutils literal">SubElement()</tt> function as a
+copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise redundant import
+of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
+</ul>
+</div>
+<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
+fix in lxml 2.3.1).  The previous change resulted in a serious
+performance regression for the XPath based evaluation of the
+translated expression.  Note that this breaks the usage of some of
+the generated XPath expressions as XSLT location paths that
+previously worked in 2.3.1.</li>
+<li>Fixed parsing of some selectors in cssselect. Whitespace after combinators
+&quot;&gt;&quot;, &quot;+&quot; and &quot;~&quot; is now correctly ignored. Previously it was parsed as
+a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the same as
+&quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
+</ul>
+</div>
+<div class="section" id="id179">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id180">
+<h1>2.3.1 (2011-09-25)</h1>
+<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
+tags and their content (i.e. their whole subtree).</li>
+<li><tt class="docutils literal">pi.get()</tt> and <tt class="docutils literal">pi.attrib</tt> on processing instructions to parse
+pseudo-attributes from the text content of processing instructions.</li>
+<li><tt class="docutils literal">lxml.get_include()</tt> returns a list of include paths that can be
+used to compile external C code against lxml.etree.  This is
+specifically required for statically linked lxml builds when code
+needs to compile against the exact same header file versions as lxml
+itself.</li>
+<li><tt class="docutils literal">Resolver.resolve_file()</tt> takes an additional option
+<tt class="docutils literal">close_file</tt> that configures if the file(-like) object will be
+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="id182">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>HTML cleaning didn't remove 'data:' links.</li>
+<li>The html5lib parser integration now uses the 'official'
+implementation in html5lib itself, which makes it work with newer
+releases of the library.</li>
+<li>In <tt class="docutils literal">lxml.sax</tt>, <tt class="docutils literal">endElementNS()</tt> could incorrectly reject a plain
+tag name when the corresponding start event inferred the same plain
+tag name to be in the default namespace.</li>
+<li>When an open file-like object is passed into <tt class="docutils literal">parse()</tt> or
+<tt class="docutils literal">iterparse()</tt>, the parser will no longer close it after use.  This
+reverts a change in lxml 2.3 where all files would be closed.  It is
+the users responsibility to properly close the file(-like) object,
+also in error cases.</li>
+<li>Assertion error in lxml.html.cleaner when discarding top-level elements.</li>
+<li>In lxml.cssselect, use the xpath 'A//B' (short for
+'A/descendant-or-self::node()/B') instead of 'A/descendant::B' for
+the css descendant selector ('A B').  This makes a few edge cases
+like <tt class="docutils literal">&quot;div <span class="pre">*:last-child&quot;</span></tt> consistent with the selector behavior in
+WebKit and Firefox, and makes more css expressions valid location
+paths (for use in xsl:template match).</li>
+<li>In lxml.html, non-selected <tt class="docutils literal">&lt;option&gt;</tt> tags no longer show up in the
+collected form values.</li>
+<li>Adding/removing <tt class="docutils literal">&lt;option&gt;</tt> values to/from a multiple select form
+field properly selects them and unselects them.</li>
+</ul>
+</div>
+<div class="section" id="id183">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Static builds can specify the download directory with the
+<tt class="docutils literal"><span class="pre">--download-dir</span></tt> option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id184">
+<h1>2.3 (2011-02-06)</h1>
+<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="id186">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>When finished reading from a file-like object, the parser
+immediately calls its <tt class="docutils literal">.close()</tt> method.</li>
+<li>When finished parsing, <tt class="docutils literal">iterparse()</tt> immediately closes the input
+file.</li>
+<li>Work-around for libxml2 bug that can leave the HTML parser in a
+non-functional state after parsing a severely broken document (fixed
+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="id187">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Some public functions in the Cython-level C-API have more explicit
+return types.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2010-09-06">
+<h1>2.3beta1 (2010-09-06)</h1>
+<div class="section" id="id188">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id189">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li><tt class="docutils literal">XMLID()</tt> function was missing the optional <tt class="docutils literal">parser</tt> and
+<tt class="docutils literal">base_url</tt> parameters.</li>
+<li>Searching for wildcard tags in <tt class="docutils literal">iterparse()</tt> was broken in Py3.</li>
+<li><tt class="docutils literal">lxml.html.open_in_browser()</tt> didn't work in Python 3 due to the
+use of os.tempnam.  It now takes an optional 'encoding' parameter.</li>
+</ul>
+</div>
+<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="id191">
+<h2>Features added</h2>
+</div>
+<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="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
+(following ElementTree 1.3).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="alpha1-2010-06-19">
+<h1>2.3alpha1 (2010-06-19)</h1>
+<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>
+to pass a prefix-to-namespace mapping for the selector.</li>
+<li>New function <tt class="docutils literal">lxml.etree.register_namespace(prefix, uri)</tt> that
+globally registers a namespace prefix for a namespace that newly
+created Elements in that namespace will use automatically.  Follows
+ElementTree 1.3.</li>
+<li>Support 'unicode' string name as encoding parameter in
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>Support 'c14n' serialisation method in <tt class="docutils literal">ElementTree.write()</tt> and
+<tt class="docutils literal">tostring()</tt>, following ElementTree 1.3.</li>
+<li>The ElementPath expression syntax (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) was extended to
+match the upcoming ElementTree 1.3 that will ship in the standard
+library of Python 3.2/2.7.  This includes extended support for
+predicates as well as namespace prefixes (as known from XPath).</li>
+<li>During regular XPath evaluation, various ESXLT functions are
+available within their namespace when using libxslt 1.1.26 or later.</li>
+<li>Support passing a readily configured logger instance into
+<tt class="docutils literal">PyErrorLog</tt>, instead of a logger name.</li>
+<li>On serialisation, the new <tt class="docutils literal">doctype</tt> parameter can be used to
+override the DOCTYPE (internal subset) of the document.</li>
+<li>New parameter <tt class="docutils literal">output_parent</tt> to <tt class="docutils literal">XSLTExtension.apply_templates()</tt>
+to append the resulting content directly to an output element.</li>
+<li><tt class="docutils literal">XSLTExtension.process_children()</tt> to process the content of the
+XSLT extension element itself.</li>
+<li>ISO-Schematron support based on the de-facto Schematron reference
+'skeleton implementation'.</li>
+<li>XSLT objects now take XPath object as <tt class="docutils literal">__call__</tt> stylesheet
+parameters.</li>
+<li>Enable path caching in ElementPath (<tt class="docutils literal"><span class="pre">el.find*()</span></tt>) to avoid parsing
+overhead.</li>
+<li>Setting the value of a namespaced attribute always uses a prefixed
+namespace instead of the default namespace even if both declare the
+same namespace URI.  This avoids serialisation problems when an
+attribute from a default namespace is set on an element from a
+different namespace.</li>
+<li>XSLT extension elements: support for XSLT context nodes other than
+elements: document root, comments, processing instructions.</li>
+<li>Support for strings (in addition to Elements) in node-sets returned
+by extension functions.</li>
+<li>Forms that lack an <tt class="docutils literal">action</tt> attribute default to the base URL of
+the document on submit.</li>
+<li>XPath attribute result strings have an <tt class="docutils literal">attrname</tt> property.</li>
+<li>Namespace URIs get validated against RFC 3986 at the API level
+(required by the XML namespace specification).</li>
+<li>Target parsers show their target object in the <tt class="docutils literal">.target</tt> property
+(compatible with ElementTree).</li>
+</ul>
+</div>
+<div class="section" id="id195">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>API is hardened against invalid proxy instances to prevent crashes
+due to incorrectly instantiated Element instances.</li>
+<li>Prevent crash when instantiating <tt class="docutils literal">CommentBase</tt> and friends.</li>
+<li>Export ElementTree compatible XML parser class as
+<tt class="docutils literal">XMLTreeBuilder</tt>, as it is called in ET 1.2.</li>
+<li>ObjectifiedDataElements in lxml.objectify were not hashable.  They
+now use the hash value of the underlying Python value (string,
+number, etc.) to which they compare equal.</li>
+<li>Parsing broken fragments in lxml.html could fail if the fragment
+contained an orphaned closing '&lt;/div&gt;' tag.</li>
+<li>Using XSLT extension elements around the root of the output document
+crashed.</li>
+<li><tt class="docutils literal">lxml.cssselect</tt> did not distinguish between <tt class="docutils literal"><span class="pre">x[attr=&quot;val&quot;]</span></tt> and
+<tt class="docutils literal">x <span class="pre">[attr=&quot;val&quot;]</span></tt> (with a space).  The latter now matches the
+attribute independent of the element.</li>
+<li>Rewriting multiple links inside of HTML text content could end up
+replacing unrelated content as replacements could impact the
+reported position of subsequent matches.  Modifications are now
+simplified by letting the <tt class="docutils literal">iterlinks()</tt> generator in <tt class="docutils literal">lxml.html</tt>
+return links in reversed order if they appear inside the same text
+node.  Thus, replacements and link-internal modifications no longer
+change the position of links reported afterwards.</li>
+<li>The <tt class="docutils literal">.value</tt> attribute of <tt class="docutils literal">textarea</tt> elements in lxml.html did
+not represent the complete raw value (including child tags etc.). It
+now serialises the complete content on read and replaces the
+complete content by a string on write.</li>
+<li>Target parser didn't call <tt class="docutils literal">.close()</tt> on the target object if
+parsing failed.  Now it is guaranteed that <tt class="docutils literal">.close()</tt> will be
+called after parsing, regardless of the outcome.</li>
+</ul>
+</div>
+<div class="section" id="id196">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.1.2 and later.</li>
+<li>Static MS Windows builds can now download their dependencies
+themselves.</li>
+<li><tt class="docutils literal">Element.attrib</tt> no longer uses a cyclic reference back to its
+Element object.  It therefore no longer requires the garbage
+collector to clean up.</li>
+<li>Static builds include libiconv, in addition to libxml2 and libxslt.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id197">
+<h1>2.2.8 (2010-09-02)</h1>
+<div class="section" id="id198">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in newer libxml2 versions when moving elements between
+documents that had attributes on replaced XInclude nodes.</li>
+<li>Import fix for urljoin in Python 3.1+.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id199">
+<h1>2.2.7 (2010-07-24)</h1>
+<div class="section" id="id200">
+<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>
+<div class="section" id="id201">
+<h1>2.2.6 (2010-03-02)</h1>
+<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="id203">
+<h1>2.2.5 (2010-02-28)</h1>
+<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="id205">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in XPath evaluation when reading smart strings from a document
+other than the original context document.</li>
+<li>Support recent versions of html5lib by not requiring its
+<tt class="docutils literal">XHTMLParser</tt> in <tt class="docutils literal">htmlparser.py</tt> anymore.</li>
+<li>Manually instantiating the custom element classes in
+<tt class="docutils literal">lxml.objectify</tt> could crash.</li>
+<li>Invalid XML text characters were not rejected by the API when they
+appeared in unicode strings directly after non-ASCII characters.</li>
+<li>lxml.html.open_http_urllib() did not work in Python 3.</li>
+<li>The functions <tt class="docutils literal">strip_tags()</tt> and <tt class="docutils literal">strip_elements()</tt> in
+<tt class="docutils literal">lxml.etree</tt> did not remove all occurrences of a tag in all cases.</li>
+<li>Crash in XSLT extension elements when the XSLT context node is not
+an element.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id206">
+<h1>2.2.4 (2009-11-11)</h1>
+<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="id208">
+<h1>2.2.3 (2009-10-30)</h1>
+<div class="section" id="id209">
+<h2>Features added</h2>
+</div>
+<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
+parser.</li>
+<li>Looking up and deleting attributes without a namespace could hit a
+namespaced attribute of the same name instead.</li>
+<li>Late errors during calls to <tt class="docutils literal">SubElement()</tt> (e.g. attribute related
+ones) could leave a partially initialised element in the tree.</li>
+<li>Modifying trees that contain parsed entity references could result
+in an infinite loop.</li>
+<li>ObjectifiedElement.__setattr__ created an empty-string child element when the
+attribute value was rejected as a non-unicode/non-ascii string</li>
+<li>Syntax errors in <tt class="docutils literal">lxml.cssselect</tt> could result in misleading error
+messages.</li>
+<li>Invalid syntax in CSS expressions could lead to an infinite loop in
+the parser of <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS special character escapes were not properly handled in
+<tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>CSS Unicode escapes were not properly decoded in <tt class="docutils literal">lxml.cssselect</tt>.</li>
+<li>Select options in HTML forms that had no explicit <tt class="docutils literal">value</tt>
+attribute were not handled correctly.  The HTML standard dictates
+that their value is defined by their text content.  This is now
+supported by lxml.html.</li>
+<li>XPath raised a TypeError when finding CDATA sections.  This is now
+fully supported.</li>
+<li>Calling <tt class="docutils literal">help(lxml.objectify)</tt> didn't work at the prompt.</li>
+<li>The <tt class="docutils literal">ElementMaker</tt> in lxml.objectify no longer defines the default
+namespaces when annotation is disabled.</li>
+<li>Feed parser failed to honour the 'recover' option on parse errors.</li>
+<li>Diverting the error logging to Python's logging system was broken.</li>
+</ul>
+</div>
+<div class="section" id="id211">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id212">
+<h1>2.2.2 (2009-06-21)</h1>
+<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>,
+<tt class="docutils literal">strip_tags()</tt> in lxml.etree to remove attributes/subtrees/tags
+from a subtree.</li>
+</ul>
+</div>
+<div class="section" id="id214">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Namespace cleanup on subtree insertions could result in missing
+namespace declarations (and potentially crashes) if the element
+defining a namespace was deleted and the namespace was not used by
+the top element of the inserted subtree but only in deeper subtrees.</li>
+<li>Raising an exception from a parser target callback didn't always
+terminate the parser.</li>
+<li>Only {true, false, 1, 0} are accepted as the lexical representation for
+BoolElement ({True, False, T, F, t, f} not any more), restoring lxml &lt;= 2.0
+behaviour.</li>
+</ul>
+</div>
+<div class="section" id="id215">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id216">
+<h1>2.2.1 (2009-06-02)</h1>
+<div class="section" id="id217">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Injecting default attributes into a document during XML Schema
+validation (also at parse time).</li>
+<li>Pass <tt class="docutils literal">huge_tree</tt> parser option to disable parser security
+restrictions imposed by libxml2 2.7.</li>
+</ul>
+</div>
+<div class="section" id="id218">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The script for statically building libxml2 and libxslt didn't work
+in Py3.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> also passes invalid schema documents on to libxml2
+for parsing (which could lead to a crash before release 2.6.24).</li>
+</ul>
+</div>
+<div class="section" id="id219">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id220">
+<h1>2.2 (2009-03-21)</h1>
+<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
+<tt class="docutils literal">tree.docinfo.standalone</tt> and by passing <tt class="docutils literal">standalone=True/False</tt>
+on serialisation.</li>
+</ul>
+</div>
+<div class="section" id="id222">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing an XML Schema with external imports from a
+filename.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta4-2009-02-27">
+<h1>2.2beta4 (2009-02-27)</h1>
+<div class="section" id="id223">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support strings and instantiable Element classes as child arguments
+to the constructor of custom Element classes.</li>
+<li>GZip compression support for serialisation to files and file-like
+objects.</li>
+</ul>
+</div>
+<div class="section" id="id224">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Deep-copying an ElementTree copied neither its sibling PIs and
+comments nor its internal/external DTD subsets.</li>
+<li>Soupparser failed on broken attributes without values.</li>
+<li>Crash in XSLT when overwriting an already defined attribute using
+<tt class="docutils literal">xsl:attribute</tt>.</li>
+<li>Crash bug in exception handling code under Python 3.  This was due
+to a problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">lxml.html.FormElement._name()</tt> failed for non top-level forms.</li>
+<li><tt class="docutils literal">TAG</tt> special attribute in constructor of custom Element classes
+was evaluated incorrectly.</li>
+</ul>
+</div>
+<div class="section" id="id225">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Official support for Python 3.0.1.</li>
+<li><tt class="docutils literal">Element.findtext()</tt> now returns an empty string instead of None
+for Elements without text content.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2009-02-17">
+<h1>2.2beta3 (2009-02-17)</h1>
+<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="id227">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in XPath evaluators.</li>
+<li>Crash when parsing indented XML in one thread and merging it with
+other documents parsed in another thread.</li>
+<li>Setting the <tt class="docutils literal">base</tt> attribute in <tt class="docutils literal">lxml.objectify</tt> from a unicode
+string failed.</li>
+<li>Fixes following changes in Python 3.0.1.</li>
+<li>Minor fixes for Python 3.</li>
+</ul>
+</div>
+<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
+local to a thread, which fixes some race conditions.</li>
+<li>More robust error handling on serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2009-01-25">
+<h1>2.2beta2 (2009-01-25)</h1>
+<div class="section" id="id229">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling.  This was due to a
+problem in Cython, not lxml itself.</li>
+<li><tt class="docutils literal">iter_links</tt> (and related link-rewriting functions) in
+<tt class="docutils literal">lxml.html</tt> would interpret CSS like <tt class="docutils literal"><span class="pre">url(&quot;link&quot;)</span></tt> incorrectly
+(treating the quotation marks as part of the link).</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id230">
+<h1>2.1.5 (2009-01-06)</h1>
+<div class="section" id="id231">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Potential memory leak on exception handling.  This was due to a
+problem in Cython, not lxml itself.</li>
+<li>Failing import on systems that have an <tt class="docutils literal">io</tt> module.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta1-2008-12-12">
+<h1>2.2beta1 (2008-12-12)</h1>
+<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="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="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="id235">
+<h1>2.1.4 (2008-12-12)</h1>
+<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="id237">
+<h1>2.0.11 (2008-12-12)</h1>
+<div class="section" id="id238">
+<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="alpha1-2008-11-23">
+<h1>2.2alpha1 (2008-11-23)</h1>
+<div class="section" id="id239">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for XSLT result tree fragments in XPath/XSLT extension
+functions.</li>
+<li>QName objects have new properties <tt class="docutils literal">namespace</tt> and <tt class="docutils literal">localname</tt>.</li>
+<li>New options for exclusive C14N and C14N without comments.</li>
+<li>Instantiating a custom Element classes creates a new Element.</li>
+</ul>
+</div>
+<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>
+<li>0-bytes could slip through the API when used inside of Unicode
+strings.</li>
+<li>With <tt class="docutils literal">lxml.html.clean.autolink</tt>, links with balanced parenthesis,
+that end in a parenthesis, will be linked in their entirety (typical
+with Wikipedia links).</li>
+</ul>
+</div>
+<div class="section" id="id241">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id242">
+<h1>2.1.3 (2008-11-17)</h1>
+<div class="section" id="id243">
+<h2>Features added</h2>
+</div>
+<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
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+<li>Parser Unicode decoding errors could get swallowed by other
+exceptions.</li>
+<li>Name/import errors in some Python modules.</li>
+<li>Internal DTD subsets that did not specify a system or public ID were
+not serialised and did not appear in the docinfo property of
+ElementTrees.</li>
+<li>Fix a pre-Py3k warning when parsing from a gzip file in Py2.6.</li>
+<li>Test suite fixes for libxml2 2.7.</li>
+<li>Resolver.resolve_string() did not work for non-ASCII byte strings.</li>
+<li>Resolver.resolve_file() was broken.</li>
+<li>Overriding the parser encoding didn't work for many encodings.</li>
+</ul>
+</div>
+<div class="section" id="id245">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id246">
+<h1>2.0.10 (2008-11-17)</h1>
+<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
+outside exception lives in sys.exc_*(). This was due to a problem in
+Cython, not lxml itself.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id248">
+<h1>2.1.2 (2008-09-05)</h1>
+<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
+parsing from a file-like object.  This helps custom resolvers when
+resolving relative URLs, as lixbml2 can prepend them with the path
+of the source document.</li>
+</ul>
+</div>
+<div class="section" id="id250">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+<div class="section" id="id251">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id252">
+<h1>2.0.9 (2008-09-05)</h1>
+<div class="section" id="id253">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory problem when passing documents between threads.</li>
+<li>Target parser did not honour the <tt class="docutils literal">recover</tt> option and raised an
+exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id254">
+<h1>2.1.1 (2008-07-24)</h1>
+<div class="section" id="id255">
+<h2>Features added</h2>
+</div>
+<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
+another.</li>
+<li>Encoding problem when including text with ElementInclude under
+Python 3.</li>
+</ul>
+</div>
+<div class="section" id="id257">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id258">
+<h1>2.0.8 (2008-07-24)</h1>
+<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="id260">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when parsing XSLT stylesheets in a thread and using them in
+another.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id261">
+<h2>Other changes</h2>
+</div>
+</div>
+<div class="section" id="id262">
+<h1>2.1 (2008-07-09)</h1>
+<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>
+keyword option).</li>
+<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="id264">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Custom resolvers were not used for XMLSchema includes/imports and
+XInclude processing.</li>
+<li>CSS selector parser dropped remaining expression after a function
+with parameters.</li>
+</ul>
+</div>
+<div class="section" id="id265">
+<h2>Other changes</h2>
+<ul class="simple">
+<li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
+<tt class="docutils literal">objectify.enable_recursive_str()</tt> instead</li>
+<li>Speed-up when running XSLTs on documents from other threads</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id266">
+<h1>2.0.7 (2008-06-20)</h1>
+<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="id268">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Descending dot-separated classes in CSS selectors were not resolved
+correctly.</li>
+<li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
+<li>Potential threading problem in XInclude.</li>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+</ul>
+</div>
+<div class="section" id="id269">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta3-2008-06-19">
+<h1>2.1beta3 (2008-06-19)</h1>
+<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>
+<li>Pickling <tt class="docutils literal">ElementTree</tt> objects in lxml.objectify.</li>
+<li>Support for parsing from file-like objects that return unicode
+strings.</li>
+<li>New function <tt class="docutils literal">etree.cleanup_namespaces(el)</tt> that removes unused
+namespace declarations from a (sub)tree (experimental).</li>
+<li>XSLT results support the buffer protocol in Python 3.</li>
+<li>Polymorphic functions in <tt class="docutils literal">lxml.html</tt> that accept either a tree or
+a parsable string will return either a UTF-8 encoded byte string, a
+unicode string or a tree, based on the type of the input.
+Previously, the result was always a byte string or a tree.</li>
+<li>Support for Python 2.6 and 3.0 beta.</li>
+<li>File name handling now uses a heuristic to convert between byte
+strings (usually filenames) and unicode strings (usually URLs).</li>
+<li>Parsing from a plain file object frees the GIL under Python 2.x.</li>
+<li>Running <tt class="docutils literal">iterparse()</tt> on a plain file (or filename) frees the GIL
+on reading under Python 2.x.</li>
+<li>Conversion functions <tt class="docutils literal">html_to_xhtml()</tt> and <tt class="docutils literal">xhtml_to_html()</tt> in
+lxml.html (experimental).</li>
+<li>Most features in lxml.html work for XHTML namespaced tag names
+(experimental).</li>
+</ul>
+</div>
+<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>
+<li>Crash in Element class lookup classes when the __init__() method of
+the super class is not called from Python subclasses.</li>
+<li>A number of problems related to unicode/byte string conversion of
+filenames and error messages were fixed.</li>
+<li>Building on MacOS-X now passes the &quot;flat_namespace&quot; option to the C
+compiler, which reportedly prevents build quirks and crashes on this
+platform.</li>
+<li>Windows build was broken.</li>
+<li>Rare crash when serialising to a file object with certain encodings.</li>
+</ul>
+</div>
+<div class="section" id="id272">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Non-ASCII characters in attribute values are no longer escaped on
+serialisation.</li>
+<li>Passing non-ASCII byte strings or invalid unicode strings as .tag,
+namespaces, etc. will result in a ValueError instead of an
+AssertionError (just like the tag well-formedness check).</li>
+<li>Up to several times faster attribute access (i.e. tree traversal) in
+lxml.objectify.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id273">
+<h1>2.0.6 (2008-05-31)</h1>
+<div class="section" id="id274">
+<h2>Features added</h2>
+</div>
+<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>
+<li>Windows build was broken.</li>
+<li>Moving a subtree from a document created in one thread into a
+document of another thread could crash when the rest of the source
+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="id276">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml should now build without problems on MacOS-X.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="beta2-2008-05-02">
+<h1>2.1beta2 (2008-05-02)</h1>
+<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>
+<li>lxml.html has a new parser class <tt class="docutils literal">XHTMLParser</tt> and a module
+attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parsers that are
+pre-configured for the lxml.html package.</li>
+</ul>
+</div>
+<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
+document of another thread could crash when the rest of the source
+document is deleted while the subtree is still in use.</li>
+<li>Passing an nsmap when creating an Element will no longer strip
+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="id279">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>If the default namespace is redundantly defined with a prefix on the
+same Element, the prefix will now be preferred for subelements and
+attributes.  This allows users to work around a problem in libxml2
+where attributes from the default namespace could serialise without
+a prefix even when they appear on an Element with a different
+namespace (i.e. they would end up in the wrong namespace).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id280">
+<h1>2.0.5 (2008-05-01)</h1>
+<div class="section" id="id281">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id282">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state &quot;STOPPED&quot;, which
+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="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="id284">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
+<li>Parser option <tt class="docutils literal">strip_cdata</tt> for normalising or keeping CDATA
+sections.  Defaults to <tt class="docutils literal">True</tt> as before, thus replacing CDATA
+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="id285">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Resolving to a filename in custom resolvers didn't work.</li>
+<li>lxml did not honour libxslt's second error state &quot;STOPPED&quot;, which
+let some XSLT errors pass silently.</li>
+<li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
+<li>lxml.etree accepted non well-formed namespace prefix names.</li>
+</ul>
+</div>
+<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
+takes care of namespace cleanup when moving elements between
+different namespace contexts.</li>
+<li>New Elements created through the <tt class="docutils literal">makeelement()</tt> method of an HTML
+parser or through lxml.html now end up in a new HTML document
+(doctype HTML 4.01 Transitional) instead of a generic XML document.
+This mostly impacts the serialisation and the availability of a DTD
+context.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id287">
+<h1>2.0.4 (2008-04-13)</h1>
+<div class="section" id="id288">
+<h2>Features added</h2>
+</div>
+<div class="section" id="id289">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Hanging thread in conjunction with GTK threading.</li>
+<li>Crash bug in iterparse when moving elements into other documents.</li>
+<li>HTML elements' <tt class="docutils literal">.cssselect()</tt> method was broken.</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="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="id291">
+<h2>Features added</h2>
+<ul class="simple">
+<li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
+<li><tt class="docutils literal">XSLTAccessControl</tt> instances have a property <tt class="docutils literal">options</tt> that
+returns a dict of access configuration options.</li>
+<li>Constant instances <tt class="docutils literal">DENY_ALL</tt> and <tt class="docutils literal">DENY_WRITE</tt> on
+<tt class="docutils literal">XSLTAccessControl</tt> class.</li>
+<li>Extension elements for XSLT (experimental!)</li>
+<li><tt class="docutils literal">Element.base</tt> property returns the xml:base or HTML base URL of
+an Element.</li>
+<li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
+</ul>
+</div>
+<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="id293">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Minor API speed-ups.</li>
+<li>The benchmark suite now uses tail text in the trees, which makes the
+absolute numbers incomparable to previous results.</li>
+<li>Generating the HTML documentation now requires <a class="reference external" href="http://pygments.org/">Pygments</a>, which is
+used to enable syntax highlighting for the doctest examples.</li>
+</ul>
+<p>Most long-time deprecated functions and methods were removed:</p>
+<ul>
+<li><p class="first"><tt class="docutils literal">etree.clearErrorLog()</tt>, use <tt class="docutils literal">etree.clear_error_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.useGlobalPythonLog()</tt>, use
+<tt class="docutils literal">etree.use_global_python_log()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.ElementClassLookup.setFallback()</tt>, use
+<tt class="docutils literal">etree.ElementClassLookup.set_fallback()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.getDefaultParser()</tt>, use <tt class="docutils literal">etree.get_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setDefaultParser()</tt>, use <tt class="docutils literal">etree.set_default_parser()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">etree.setElementClassLookup()</tt>, use
+<tt class="docutils literal">etree.set_element_class_lookup()</tt></p>
+<p>Note that <tt class="docutils literal">parser.setElementClassLookup()</tt> has not been removed
+yet, although <tt class="docutils literal">parser.set_element_class_lookup()</tt> should be used
+instead.</p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespace()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespace()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">xpath_evaluator.registerNamespaces()</tt>, use
+<tt class="docutils literal">xpath_evaluator.register_namespaces()</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setPytypeAttributeTag</tt>, use
+<tt class="docutils literal">objectify.set_pytype_attribute_tag</tt></p>
+</li>
+<li><p class="first"><tt class="docutils literal">objectify.setDefaultParser()</tt>, use
+<tt class="docutils literal">objectify.set_default_parser()</tt></p>
+</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id294">
+<h1>2.0.3 (2008-03-26)</h1>
+<div class="section" id="id295">
+<h2>Features added</h2>
+<ul class="simple">
+<li>soupparser.parse() allows passing keyword arguments on to
+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="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.,
+<tt class="docutils literal">&lt;br&gt;</tt>).</li>
+<li>Handle entity replacements correctly in target parser.</li>
+<li>Crash when using <tt class="docutils literal">iterparse()</tt> with XML Schema validation.</li>
+<li>The BeautifulSoup parser (soupparser.py) did not replace entities,
+which made them turn up in text content.</li>
+<li>Attribute assignment of custom PyTypes in objectify could fail to
+correctly serialise the value to a string.</li>
+</ul>
+</div>
+<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
+<tt class="docutils literal">lxml.html.soupparser</tt> with a more consistent API.  The old module
+remains for compatibility with ElementTree's own ElementSoup module.</li>
+<li>Setting the XSLT_CONFIG and XML2_CONFIG environment variables at
+build time will let setup.py pick up the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> and
+<tt class="docutils literal"><span class="pre">xslt-config</span></tt> scripts from the supplied path name.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xml2-config=/path/to/xml2-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xml2-config</span></tt> script that is used to determine the C
+compiler options.  The same applies for the <tt class="docutils literal"><span class="pre">--with-xslt-config</span></tt>
+option.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id298">
+<h1>2.0.2 (2008-02-22)</h1>
+<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="id300">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>The prefix for objectify's pytype namespace was missing from the set
+of default prefixes.</li>
+<li>Memory leak in Schematron (fixed only for libxml2 2.6.31+).</li>
+<li>Error type names in RelaxNG were reported incorrectly.</li>
+<li>Slice deletion bug fixed in objectify.</li>
+</ul>
+</div>
+<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>
+<li>Add a <tt class="docutils literal">method</tt> argument to <tt class="docutils literal">lxml.html.tostring()</tt>
+(<tt class="docutils literal"><span class="pre">method=&quot;xml&quot;</span></tt> for XHTML output).</li>
+<li>Make it clearer that methods like <tt class="docutils literal">lxml.html.fromstring()</tt> take a
+<tt class="docutils literal">base_url</tt> argument.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id302">
+<h1>2.0.1 (2008-02-13)</h1>
+<div class="section" id="id303">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
+<li>Loads of new docstrings reflect the signature of functions and
+methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
+</ul>
+</div>
+<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
+<tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li>Form elements would return None for <tt class="docutils literal">form.fields.keys()</tt> if there
+was an unnamed input field.  Now unnamed input fields are completely
+ignored.</li>
+<li>Setting an element slice in objectify could insert slice-overlapping
+elements at the wrong position.</li>
+</ul>
+</div>
+<div class="section" id="id305">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>The generated API documentation was cleaned up and disburdened from
+non-public classes etc.</li>
+<li>The previously public module <tt class="docutils literal">lxml.html.setmixin</tt> was renamed to
+<tt class="docutils literal">lxml.html._setmixin</tt> as it is not an official part of lxml.  If
+you want to use it, feel free to copy it over to your own source
+base.</li>
+<li>Passing <tt class="docutils literal"><span class="pre">--with-xslt-config=/path/to/xslt-config</span></tt> to setup.py will
+override the <tt class="docutils literal"><span class="pre">xslt-config</span></tt> script that is used to determine the C
+compiler options.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id306">
+<h1>2.0 (2008-02-01)</h1>
+<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
+serialise to unicode.  The <tt class="docutils literal">tounicode()</tt> function is now
+deprecated.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> can parse from StringIO.</li>
+<li><tt class="docutils literal">makeparser()</tt> function in <tt class="docutils literal">lxml.objectify</tt> to create a new
+parser with the usual objectify setup.</li>
+<li>Plain ASCII XPath string results are no longer forced into unicode
+objects as in 2.0beta1, but are returned as plain strings as before.</li>
+<li>All XPath string results are 'smart' objects that have a
+<tt class="docutils literal">getparent()</tt> method to retrieve their parent Element.</li>
+<li><tt class="docutils literal">with_tail</tt> option in serialiser functions.</li>
+<li>More accurate exception messages in validator creation.</li>
+<li>Parse-time XML schema validation (<tt class="docutils literal">schema</tt> parser keyword).</li>
+<li>XPath string results of the <tt class="docutils literal">text()</tt> function and attribute
+selection make their Element container accessible through a
+<tt class="docutils literal">getparent()</tt> method.  As a side-effect, they are now always
+unicode objects (even ASCII strings).</li>
+<li><tt class="docutils literal">XSLT</tt> objects are usable in any thread - at the cost of a deep
+copy if they were not created in that thread.</li>
+<li>Invalid entity names and character references will be rejected by
+the <tt class="docutils literal">Entity()</tt> factory.</li>
+<li><tt class="docutils literal">entity.text</tt> returns the textual representation of the entity,
+e.g. <tt class="docutils literal">&amp;amp;</tt>.</li>
+<li>New properties <tt class="docutils literal">position</tt> and <tt class="docutils literal">code</tt> on ParseError exception (as
+in ET 1.3)</li>
+<li>Rich comparison of <tt class="docutils literal">element.attrib</tt> proxies.</li>
+<li>ElementTree compatible TreeBuilder class.</li>
+<li>Use default prefixes for some common XML namespaces.</li>
+<li><tt class="docutils literal">lxml.html.clean.Cleaner</tt> now allows for a <tt class="docutils literal">host_whitelist</tt>, and
+two overridable methods: <tt class="docutils literal">allow_embedded_url(el, url)</tt> and the
+more general <tt class="docutils literal">allow_element(el)</tt>.</li>
+<li>Extended slicing of Elements as in <tt class="docutils literal"><span class="pre">element[1:-1:2]</span></tt>, both in
+etree and in objectify</li>
+<li>Resolvers can now provide a <tt class="docutils literal">base_url</tt> keyword argument when
+resolving a document as string data.</li>
+<li>When using <tt class="docutils literal">lxml.doctestcompare</tt> you can give the doctest option
+<tt class="docutils literal">NOPARSE_MARKUP</tt> (like <tt class="docutils literal"># doctest: +NOPARSE_MARKUP</tt>) to suppress
+the special checking for one test.</li>
+<li>Separate <tt class="docutils literal">feed_error_log</tt> property for the feed parser interface.
+The normal parser interface and <tt class="docutils literal">iterparse</tt> continue to use
+<tt class="docutils literal">error_log</tt>.</li>
+<li>The normal parsers and the feed parser interface are now separated
+and can be used concurrently on the same parser instance.</li>
+<li><tt class="docutils literal">fromstringlist()</tt> and <tt class="docutils literal">tostringlist()</tt> functions as in
+ElementTree 1.3</li>
+<li><tt class="docutils literal">iterparse()</tt> accepts an <tt class="docutils literal">html</tt> boolean keyword argument for
+parsing with the HTML parser (note that this interface may be
+subject to change)</li>
+<li>Parsers accept an <tt class="docutils literal">encoding</tt> keyword argument that overrides the encoding
+of the parsed documents.</li>
+<li>New C-API function <tt class="docutils literal">hasChild()</tt> to test for children</li>
+<li><tt class="docutils literal">annotate()</tt> function in objectify can annotate with Python types and XSI
+types in one step.  Accompanied by <tt class="docutils literal">xsiannotate()</tt> and <tt class="docutils literal">pyannotate()</tt>.</li>
+<li><tt class="docutils literal">ET.write()</tt>, <tt class="docutils literal">tostring()</tt> and <tt class="docutils literal">tounicode()</tt> now accept a keyword
+argument <tt class="docutils literal">method</tt> that can be one of 'xml' (or None), 'html' or 'text' to
+serialise as XML, HTML or plain text content.</li>
+<li><tt class="docutils literal">iterfind()</tt> method on Elements returns an iterator equivalent to
+<tt class="docutils literal">findall()</tt></li>
+<li><tt class="docutils literal">itertext()</tt> method on Elements</li>
+<li>Setting a QName object as value of the .text property or as an attribute
+will resolve its prefix in the respective context</li>
+<li>ElementTree-like parser target interface as described in
+<a class="reference external" href="http://effbot.org/elementtree/elementtree-xmlparser.htm">http://effbot.org/elementtree/elementtree-xmlparser.htm</a></li>
+<li>ElementTree-like feed parser interface on XMLParser and HTMLParser
+(<tt class="docutils literal">feed()</tt> and <tt class="docutils literal">close()</tt> methods)</li>
+<li>Reimplemented <tt class="docutils literal">objectify.E</tt> for better performance and improved
+integration with objectify.  Provides extended type support based on
+registered PyTypes.</li>
+<li>XSLT objects now support deep copying</li>
+<li>New <tt class="docutils literal">makeSubElement()</tt> C-API function that allows creating a new
+subelement straight with text, tail and attributes.</li>
+<li>XPath extension functions can now access the current context node
+(<tt class="docutils literal">context.context_node</tt>) and use a context dictionary
+(<tt class="docutils literal">context.eval_context</tt>) from the context provided in their first
+parameter</li>
+<li>HTML tag soup parser based on BeautifulSoup in <tt class="docutils literal">lxml.html.ElementSoup</tt></li>
+<li>New module <tt class="docutils literal">lxml.doctestcompare</tt> by Ian Bicking for writing simplified
+doctests based on XML/HTML output.  Use by importing <tt class="docutils literal">lxml.usedoctest</tt> or
+<tt class="docutils literal">lxml.html.usedoctest</tt> from within a doctest.</li>
+<li>New module <tt class="docutils literal">lxml.cssselect</tt> by Ian Bicking for selecting Elements with CSS
+selectors.</li>
+<li>New package <tt class="docutils literal">lxml.html</tt> written by Ian Bicking for advanced HTML
+treatment.</li>
+<li>Namespace class setup is now local to the <tt class="docutils literal">ElementNamespaceClassLookup</tt>
+instance and no longer global.</li>
+<li>Schematron validation (incomplete in libxml2)</li>
+<li>Additional <tt class="docutils literal">stringify</tt> argument to <tt class="docutils literal">objectify.PyType()</tt> takes a
+conversion function to strings to support setting text values from arbitrary
+types.</li>
+<li>Entity support through an <tt class="docutils literal">Entity</tt> factory and element classes.  XML
+parsers now have a <tt class="docutils literal">resolve_entities</tt> keyword argument that can be set to
+False to keep entities in the document.</li>
+<li><tt class="docutils literal">column</tt> field on error log entries to accompany the <tt class="docutils literal">line</tt> field</li>
+<li>Error specific messages in XPath parsing and evaluation
+NOTE: for evaluation errors, you will now get an XPathEvalError instead of
+an XPathSyntaxError.  To catch both, you can except on <tt class="docutils literal">XPathError</tt></li>
+<li>The regular expression functions in XPath now support passing a node-set
+instead of a string</li>
+<li>Extended type annotation in objectify: new <tt class="docutils literal">xsiannotate()</tt> function</li>
+<li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
+</ul>
+</div>
+<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>
+<li>Some Python 2.4-isms prevented lxml from building/running under
+Python 2.3.</li>
+<li>XPath on ElementTrees could crash when selecting the virtual root
+node of the ElementTree.</li>
+<li>Compilation <tt class="docutils literal"><span class="pre">--without-threading</span></tt> was buggy in alpha5/6.</li>
+<li>Memory leak in the <tt class="docutils literal">parse()</tt> function.</li>
+<li>Minor bugs in XSLT error message formatting.</li>
+<li>Result document memory leak in target parser.</li>
+<li>Target parser failed to report comments.</li>
+<li>In the <tt class="docutils literal">lxml.html</tt> <tt class="docutils literal">iter_links</tt> method, links in <tt class="docutils literal">&lt;object&gt;</tt>
+tags weren't recognized.  (Note: plugin-specific link parameters
+still aren't recognized.)  Also, the <tt class="docutils literal">&lt;embed&gt;</tt> tag, though not
+standard, is now included in <tt class="docutils literal">lxml.html.defs.special_inline_tags</tt>.</li>
+<li>Using custom resolvers on XSLT stylesheets parsed from a string
+could request ill-formed URLs.</li>
+<li>With <tt class="docutils literal">lxml.doctestcompare</tt> if you do <tt class="docutils literal">&lt;tag <span class="pre">xmlns=&quot;...&quot;&gt;</span></tt> in your
+output, it will then be namespace-neutral (before the ellipsis was
+treated as a real namespace).</li>
+<li>AttributeError in feed parser on parse errors</li>
+<li>XML feed parser setup problem</li>
+<li>Type annotation for unicode strings in <tt class="docutils literal">DataElement()</tt></li>
+<li>lxml failed to serialise namespace declarations of elements other than the
+root node of a tree</li>
+<li>Race condition in XSLT where the resolver context leaked between concurrent
+XSLT calls</li>
+<li>lxml.etree did not check tag/attribute names</li>
+<li>The XML parser did not report undefined entities as error</li>
+<li>The text in exceptions raised by XML parsers, validators and XPath
+evaluators now reports the first error that occurred instead of the last</li>
+<li>Passing '' as XPath namespace prefix did not raise an error</li>
+<li>Thread safety in XPath evaluators</li>
+</ul>
+</div>
+<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
+the operation that caused the error.</li>
+<li><tt class="docutils literal">XMLSchema()</tt> and <tt class="docutils literal">RelaxNG()</tt> now enforce passing the source
+file/filename through the <tt class="docutils literal">file</tt> keyword argument.</li>
+<li>The test suite now skips most doctests under Python 2.3.</li>
+<li><tt class="docutils literal">make clean</tt> no longer removes the .c files (use <tt class="docutils literal">make
+realclean</tt> instead)</li>
+<li>Minor performance tweaks for Element instantiation and subelement
+creation</li>
+<li>Various places in the XPath, XSLT and iteration APIs now require
+keyword-only arguments.</li>
+<li>The argument order in <tt class="docutils literal">element.itersiblings()</tt> was changed to
+match the order used in all other iteration methods.  The second
+argument ('preceding') is now a keyword-only argument.</li>
+<li>The <tt class="docutils literal">getiterator()</tt> method on Elements and ElementTrees was
+reverted to return an iterator as it did in lxml 1.x.  The ET API
+specification allows it to return either a sequence or an iterator,
+and it traditionally returned a sequence in ET and an iterator in
+lxml.  However, it is now deprecated in favour of the <tt class="docutils literal">iter()</tt>
+method, which should be used in new code wherever possible.</li>
+<li>The 'pretty printed' serialisation of ElementTree objects now
+inserts newlines at the root level between processing instructions,
+comments and the root tag.</li>
+<li>A 'pretty printed' serialisation is now terminated with a newline.</li>
+<li>Second argument to <tt class="docutils literal">lxml.etree.Extension()</tt> helper is no longer
+required, third argument is now a keyword-only argument <tt class="docutils literal">ns</tt>.</li>
+<li><tt class="docutils literal">lxml.html.tostring</tt> takes an <tt class="docutils literal">encoding</tt> argument.</li>
+<li>The module source files were renamed to &quot;lxml.*.pyx&quot;, such as
+&quot;lxml.etree.pyx&quot;.  This was changed for consistency with the way
+Pyrex commonly handles package imports.  The main effect is that
+classes now know about their fully qualified class name, including
+the package name of their module.</li>
+<li>Keyword-only arguments in some API functions, especially in the
+parsers and serialisers.</li>
+<li>Tag name validation in lxml.etree (and lxml.html) now distinguishes
+between HTML tags and XML tags based on the parser that was used to
+parse or create them.  HTML tags no longer reject any non-ASCII
+characters in tag names but only spaces and the special characters
+<tt class="docutils literal"><span class="pre">&lt;&gt;&amp;/&quot;'</span></tt>.</li>
+<li>lxml.etree now emits a warning if you use XPath with libxml2 2.6.27
+(which can crash on certain XPath errors)</li>
+<li>Type annotation in objectify now preserves the already annotated type by
+default to prevent losing type information that is already there.</li>
+<li><tt class="docutils literal">element.getiterator()</tt> returns a list, use <tt class="docutils literal">element.iter()</tt> to retrieve
+an iterator (ElementTree 1.3 compatible behaviour)</li>
+<li>objectify.PyType for None is now called &quot;NoneType&quot;</li>
+<li><tt class="docutils literal">el.getiterator()</tt> renamed to <tt class="docutils literal">el.iter()</tt>, following ElementTree 1.3 -
+original name is still available as alias</li>
+<li>In the public C-API, <tt class="docutils literal">findOrBuildNodeNs()</tt> was replaced by the more
+generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
+<li>Major refactoring in XPath/XSLT extension function code</li>
+<li>Network access in parsers disabled by default</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id310">
+<h1>1.3.6 (2007-10-29)</h1>
+<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="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>
+methods.  While this makes them take a lot longer to run, it also
+makes it easier to link a specific test to garbage collection
+problems that would otherwise appear in later tests.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id313">
+<h1>1.3.5 (2007-10-22)</h1>
+<div class="section" id="id314">
+<h2>Features added</h2>
+</div>
+<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
+document</li>
+<li>lxml failed to serialise namespace declarations of elements other
+than the root node of a tree</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id316">
+<h1>1.3.4 (2007-08-30)</h1>
+<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
+<tt class="docutils literal">namespace</tt> and <tt class="docutils literal">nsmap</tt> to set a namespace and nsmap for the Elements it
+creates.</li>
+<li>The <tt class="docutils literal">docinfo</tt> on ElementTree objects has new properties <tt class="docutils literal">internalDTD</tt>
+and <tt class="docutils literal">externalDTD</tt> that return a DTD object for the internal or external
+subset of the document respectively.</li>
+<li>Serialising an ElementTree now includes any internal DTD subsets that are
+part of the document, as well as comments and PIs that are siblings of the
+root node.</li>
+</ul>
+</div>
+<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="id319">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>lxml now raises a TagNameWarning about tag names containing ':' instead of
+an Error as 1.3.3 did.  The reason is that a number of projects currently
+misuse the previous lack of tag name validation to generate namespace
+prefixes without declaring namespaces.  Apart from the danger of generating
+broken XML this way, it also breaks most of the namespace-aware tools in
+XML, including XPath, XSLT and validation.  lxml 1.3.x will continue to
+support this bug with a Warning, while lxml 2.0 will be strict about
+well-formed tag names (not only regarding ':').</li>
+<li>Serialising an Element no longer includes its comment and PI siblings (only
+ElementTree serialisation includes them).</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id320">
+<h1>1.3.3 (2007-07-26)</h1>
+<div class="section" id="id321">
+<h2>Features added</h2>
+<ul class="simple">
+<li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
+instructions and comments while parsing XML</li>
+<li>Parsers now support stripping PIs (keyword argument 'remove_pis')</li>
+<li><tt class="docutils literal">etree.fromstring()</tt> now supports parsing both HTML and XML, depending on
+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="id322">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parsing from Python Unicode strings failed on some platforms</li>
+<li><tt class="docutils literal">Element()</tt> did not raise an exception on tag names containing ':'</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags. It also accepts <tt class="docutils literal">Element</tt> now.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id323">
+<h1>1.3.2 (2007-07-03)</h1>
+<div class="section" id="id324">
+<h2>Features added</h2>
+</div>
+<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="id326">
+<h1>1.3.1 (2007-07-02)</h1>
+<div class="section" id="id327">
+<h2>Features added</h2>
+<ul class="simple">
+<li>objectify.DataElement now supports setting values from existing data
+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="id328">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Better way to prevent crashes in Element proxy cleanup code</li>
+<li>objectify.DataElement didn't set up None value correctly</li>
+<li>objectify.DataElement didn't check the value against the provided type hints</li>
+<li>Reference-counting bug in <tt class="docutils literal">Element.attrib.pop()</tt></li>
+</ul>
+</div>
+</div>
+<div class="section" id="id329">
+<h1>1.3 (2007-06-24)</h1>
+<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
+scheme that can access the entire tree in read-only mode to help determining
+a suitable Element class</li>
+<li>Parsers take a <tt class="docutils literal">remove_comments</tt> keyword argument that skips over comments</li>
+<li><tt class="docutils literal">parse()</tt> function in <tt class="docutils literal">objectify</tt>, corresponding to <tt class="docutils literal">XML()</tt> etc.</li>
+<li><tt class="docutils literal">Element.addnext(el)</tt> and <tt class="docutils literal">Element.addprevious(el)</tt> methods to support
+adding processing instructions and comments around the root node</li>
+<li><tt class="docutils literal">Element.attrib</tt> was missing <tt class="docutils literal">clear()</tt> and <tt class="docutils literal">pop()</tt> methods</li>
+<li>Extended type annotation in objectify: cleaner annotation namespace setup
+plus new <tt class="docutils literal">deannotate()</tt> function</li>
+<li>Support for custom Element class instantiation in lxml.sax: passing a
+<tt class="docutils literal">makeelement</tt> function to the ElementTreeContentHandler will reuse the
+lookup context of that function</li>
+<li>'.' represents empty ObjectPath (identity)</li>
+<li><tt class="docutils literal">Element.values()</tt> to accompany the existing <tt class="docutils literal">.keys()</tt> and <tt class="docutils literal">.items()</tt></li>
+<li><tt class="docutils literal">collectAttributes()</tt> C-function to build a list of attribute
+keys/values/items for a libxml2 node</li>
+<li><tt class="docutils literal">DTD</tt> validator class (like <tt class="docutils literal">RelaxNG</tt> and <tt class="docutils literal">XMLSchema</tt>)</li>
+<li>HTML generator helpers by Fredrik Lundh in <tt class="docutils literal">lxml.htmlbuilder</tt></li>
+<li><tt class="docutils literal">ElementMaker</tt> XML generator by Fredrik Lundh in <tt class="docutils literal">lxml.builder.E</tt></li>
+<li>Support for pickling <tt class="docutils literal">objectify.ObjectifiedElement</tt> objects to XML</li>
+<li><tt class="docutils literal">update()</tt> method on Element.attrib</li>
+<li>Optimised replacement for libxml2's _xmlReconsiliateNs(). This allows lxml
+a better handling of namespaces when moving elements between documents.</li>
+</ul>
+</div>
+<div class="section" id="id331">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Removing Elements from a tree could make them lose their namespace
+declarations</li>
+<li><tt class="docutils literal">ElementInclude</tt> didn't honour base URL of original document</li>
+<li>Replacing the children slice of an Element would cut off the tails of the
+original children</li>
+<li><tt class="docutils literal">Element.getiterator(tag)</tt> did not accept <tt class="docutils literal">Comment</tt> and
+<tt class="docutils literal">ProcessingInstruction</tt> as tags</li>
+<li>API functions now check incoming strings for XML conformity.  Zero bytes or
+low ASCII characters are no longer accepted (AssertionError).</li>
+<li>XSLT parsing failed to pass resolver context on to imported documents</li>
+<li>passing '' as namespace prefix in nsmap could be passed through to libxml2</li>
+<li>Objectify couldn't handle prefixed XSD type names in <tt class="docutils literal">xsi:type</tt></li>
+<li>More ET compatible behaviour when writing out XML declarations or not</li>
+<li>More robust error handling in <tt class="docutils literal">iterparse()</tt></li>
+<li>Documents lost their top-level PIs and comments on serialisation</li>
+<li>lxml.sax failed on comments and PIs. Comments are now properly ignored and
+PIs are copied.</li>
+<li>Possible memory leaks in namespace handling when moving elements between
+documents</li>
+</ul>
+</div>
+<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="id333">
+<h1>1.2.1 (2007-02-27)</h1>
+<div class="section" id="id334">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Build fixes for MS compiler</li>
+<li>Item assignments to special names like <tt class="docutils literal"><span class="pre">element[&quot;text&quot;]</span></tt> failed</li>
+<li>Renamed ObjectifiedDataElement.__setText() to _setText() to make it easier
+to access</li>
+<li>The pattern for attribute names in ObjectPath was too restrictive</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id335">
+<h1>1.2 (2007-02-20)</h1>
+<div class="section" id="id336">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Rich comparison of QName objects</li>
+<li>Support for regular expressions in benchmark selection</li>
+<li>get/set emulation (not .attrib!) for attributes on processing instructions</li>
+<li>ElementInclude Python module for ElementTree compatible XInclude processing
+that honours custom resolvers registered with the source document</li>
+<li>ElementTree.parser property holds the parser used to parse the document</li>
+<li>setup.py has been refactored for greater readability and flexibility</li>
+<li>--rpath flag to setup.py to induce automatic linking-in of dynamic library
+runtime search paths has been renamed to --auto-rpath. This makes it
+possible to pass an --rpath directly to distutils; previously this was being
+shadowed.</li>
+</ul>
+</div>
+<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>
+<li>ElementTree.write() did not raise an exception when the file was not writable</li>
+<li>Error handling could crash under Python &lt;= 2.4.1 - fixed by disabling thread
+support in these environments</li>
+<li>Element.find*() did not accept QName objects as path</li>
+</ul>
+</div>
+<div class="section" id="id338">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>code cleanup: redundant _NodeBase super class merged into _Element class
+Note: although the impact should be zero in most cases, this change breaks
+the compatibility of the public C-API</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id339">
+<h1>1.1.2 (2006-10-30)</h1>
+<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>
+<li>Source distribution now ships with a patched Pyrex</li>
+<li>New C-API function makeElement() to create new elements with text,
+tail, attributes and namespaces</li>
+<li>Reuse original parser flags for XInclude</li>
+<li>Simplified support for handling XSLT processing instructions</li>
+</ul>
+</div>
+<div class="section" id="id341">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Parser resources were not freed before the next parser run</li>
+<li>Open files and XML strings returned by Python resolvers were not
+closed/freed</li>
+<li>Crash in the IDDict returned by XMLDTDID</li>
+<li>Copying Comments and ProcessingInstructions failed</li>
+<li>Memory leak for external URLs in _XSLTProcessingInstruction.parseXSL()</li>
+<li>Memory leak when garbage collecting tailed root elements</li>
+<li>HTML script/style content was not propagated to .text</li>
+<li>Show text xincluded between text nodes correctly in .text and .tail</li>
+<li>'integer * objectify.StringElement' operation was not supported</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id342">
+<h1>1.1.1 (2006-09-21)</h1>
+<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>
+<li>countchildren() method on objectify.ObjectifiedElement</li>
+<li>Support custom elements for tree nodes in lxml.objectify</li>
+</ul>
+</div>
+<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>
+<li>Error messages from XSLT did not reach <tt class="docutils literal">XSLT.error_log</tt></li>
+<li>Factories objectify.Element() and objectify.DataElement() were missing
+<tt class="docutils literal">attrib</tt> and <tt class="docutils literal">nsmap</tt> keyword arguments</li>
+<li>Changing the default parser in lxml.objectify did not update the factories
+Element() and DataElement()</li>
+<li>Let lxml.objectify.Element() always generate tree elements (not data
+elements)</li>
+<li>Build under Windows failed ('0' bug in patched Pyrex version)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id345">
+<h1>1.1 (2006-09-13)</h1>
+<div class="section" id="id346">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
+'&lt;?pi-target content?&gt;' for repr()</li>
+<li>Parsers are now the preferred (and default) place where element class lookup
+schemes should be registered.  Namespace lookup is no longer supported by
+default.</li>
+<li>Support for Python 2.5 beta</li>
+<li>Unlock the GIL for deep copying documents and for XPath()</li>
+<li>New <tt class="docutils literal">compact</tt> keyword argument for parsing read-only documents</li>
+<li>Support for parser options in iterparse()</li>
+<li>The <tt class="docutils literal">namespace</tt> axis is supported in XPath and returns (prefix, URI)
+tuples</li>
+<li>The XPath expression &quot;/&quot; now returns an empty list instead of raising an
+exception</li>
+<li>XML-Object API on top of lxml (lxml.objectify)</li>
+<li>Customizable Element class lookup:<ul>
+<li>different pre-implemented lookup mechanisms</li>
+<li>support for externally provided lookup functions</li>
+</ul>
+</li>
+<li>Support for processing instructions (ET-like, not compatible)</li>
+<li>Public C-level API for independent extension modules</li>
+<li>Module level <tt class="docutils literal">iterwalk()</tt> function as 'iterparse' for trees</li>
+<li>Module level <tt class="docutils literal">iterparse()</tt> function similar to ElementTree (see
+documentation for differences)</li>
+<li>Element.nsmap property returns a mapping of all namespace prefixes known at
+the Element to their namespace URI</li>
+<li>Reentrant threading support in RelaxNG, XMLSchema and XSLT</li>
+<li>Threading support in parsers and serializers:<ul>
+<li>All in-memory operations (tostring, parse(StringIO), etc.) free the GIL</li>
+<li>File operations (on file names) free the GIL</li>
+<li>Reading from file-like objects frees the GIL and reacquires it for reading</li>
+<li>Serialisation to file-like objects is single-threaded (high lock overhead)</li>
+</ul>
+</li>
+<li>Element iteration over XPath axes:<ul>
+<li>Element.iterdescendants() iterates over the descendants of an element</li>
+<li>Element.iterancestors() iterates over the ancestors of an element (from
+parent to parent)</li>
+<li>Element.itersiblings() iterates over either the following or preceding
+siblings of an element</li>
+<li>Element.iterchildren() iterates over the children of an element in either
+direction</li>
+<li>All iterators support the <tt class="docutils literal">tag</tt> keyword argument to restrict the
+generated elements</li>
+</ul>
+</li>
+<li>Element.getnext() and Element.getprevious() return the direct siblings of an
+element</li>
+</ul>
+</div>
+<div class="section" id="id347">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>filenames with local 8-bit encoding were not supported</li>
+<li>1.1beta did not compile under Python 2.3</li>
+<li>ignore unknown 'pyval' attribute values in objectify</li>
+<li>objectify.ObjectifiedElement.addattr() failed to accept Elements and Lists</li>
+<li>objectify.ObjectPath.setattr() failed to accept Elements and Lists</li>
+<li>XPathSyntaxError now inherits from XPathError</li>
+<li>Threading race conditions in RelaxNG and XMLSchema</li>
+<li>Crash when mixing elements from XSLT results into other trees, concurrent
+XSLT is only allowed when the stylesheet was parsed in the main thread</li>
+<li>The EXSLT <tt class="docutils literal">regexp:match</tt> function now works as defined (except for some
+differences in the regular expression syntax)</li>
+<li>Setting element.text to '' returned None on request, not the empty string</li>
+<li><tt class="docutils literal">iterparse()</tt> could crash on long XML files</li>
+<li>Creating documents no longer copies the parser for later URL resolving.  For
+performance reasons, only a reference is kept.  Resolver updates on the
+parser will now be reflected by documents that were parsed before the
+change.  Although this should rarely become visible, it is a behavioral
+change from 1.0.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id348">
+<h1>1.0.4 (2006-09-09)</h1>
+<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="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="id351">
+<h1>1.0.3 (2006-08-08)</h1>
+<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="id353">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash when mixing elements from XSLT results into other trees</li>
+<li>Copying/deepcopying did not work for ElementTree objects</li>
+<li>Setting an attribute to a non-string value did not raise an exception</li>
+<li>Element.remove() deleted the tail text from the removed Element</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id354">
+<h1>1.0.2 (2006-06-27)</h1>
+<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="id356">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Rare exceptions in Python list functions were not handled</li>
+<li>Parsing accepted unicode strings with XML encoding declaration in certain
+cases</li>
+<li>Parsing 8-bit encoded strings from StringIO objects raised an exception</li>
+<li>Module function <tt class="docutils literal">initThread()</tt> was removed - useless (and never worked)</li>
+<li>XSLT and parser exception messages include the error line number</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id357">
+<h1>1.0.1 (2006-06-09)</h1>
+<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="id359">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Document deallocation could crash in certain garbage collection scenarios</li>
+<li>Extension function calls in XSLT variable declarations could break the
+stylesheet and crash on repeated calls</li>
+<li>Deep copying Elements could lose namespaces declared in parents</li>
+<li>Deep copying Elements did not copy tail</li>
+<li>Parsing file(-like) objects failed to load external entities</li>
+<li>Parsing 8-bit strings from file(-like) objects raised an exception</li>
+<li>xsl:include failed when the stylesheet was parsed from a file-like object</li>
+<li>lxml.sax.ElementTreeProducer did not call startDocument() / endDocument()</li>
+<li>MSVC compiler complained about long strings (supports only 2048 bytes)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id360">
+<h1>1.0 (2006-06-01)</h1>
+<div class="section" id="id361">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Element.getiterator() and the findall() methods support finding arbitrary
+elements from a namespace (pattern <tt class="docutils literal">{namespace}*</tt>)</li>
+<li>Another speedup in tree iteration code</li>
+<li>General speedup of Python Element object creation and deallocation</li>
+<li>Writing C14N no longer serializes in memory (reduced memory footprint)</li>
+<li>PyErrorLog for error logging through the Python <tt class="docutils literal">logging</tt> module</li>
+<li><tt class="docutils literal">Element.getroottree()</tt> returns an ElementTree for the root node of the
+document that contains the element.</li>
+<li>ElementTree.getpath(element) returns a simple, absolute XPath expression to
+find the element in the tree structure</li>
+<li>Error logs have a <tt class="docutils literal">last_error</tt> attribute for convenience</li>
+<li>Comment texts can be changed through the API</li>
+<li>Formatted output via <tt class="docutils literal">pretty_print</tt> keyword in serialization functions</li>
+<li>XSLT can block access to file system and network via <tt class="docutils literal">XSLTAccessControl</tt></li>
+<li>ElementTree.write() no longer serializes in memory (reduced memory
+footprint)</li>
+<li>Speedup of Element.findall(tag) and Element.getiterator(tag)</li>
+<li>Support for writing the XML representation of Elements and ElementTrees to
+Python unicode strings via <tt class="docutils literal">etree.tounicode()</tt></li>
+<li>Support for writing XSLT results to Python unicode strings via <tt class="docutils literal">unicode()</tt></li>
+<li>Parsing a unicode string no longer copies the string (reduced memory
+footprint)</li>
+<li>Parsing file-like objects reads chunks rather than the whole file (reduced
+memory footprint)</li>
+<li>Parsing StringIO objects from the start avoids copying the string (reduced
+memory footprint)</li>
+<li>Read-only 'docinfo' attribute in ElementTree class holds DOCTYPE
+information, original encoding and XML version as seen by the parser</li>
+<li>etree module can be compiled without libxslt by commenting out the line
+<tt class="docutils literal">include &quot;xslt.pxi&quot;</tt> near the end of the etree.pyx source file</li>
+<li>Better error messages in parser exceptions</li>
+<li>Error reporting also works in XSLT</li>
+<li>Support for custom document loaders (URI resolvers) in parsers and XSLT,
+resolvers are registered at parser level</li>
+<li>Implementation of exslt:regexp for XSLT based on the Python 're' module,
+enabled by default, can be switched off with 'regexp=False' keyword argument</li>
+<li>Support for exslt extensions (libexslt) and libxslt extra functions
+(node-set, document, write, output)</li>
+<li>Substantial speedup in XPath.evaluate()</li>
+<li>HTMLParser for parsing (broken) HTML</li>
+<li>XMLDTDID function parses XML into tuple (root node, ID dict) based on xml:id
+implementation of libxml2 (as opposed to ET compatible XMLID)</li>
+</ul>
+</div>
+<div class="section" id="id362">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Memory leak in Element.__setitem__</li>
+<li>Memory leak in Element.attrib.items() and Element.attrib.values()</li>
+<li>Memory leak in XPath extension functions</li>
+<li>Memory leak in unicode related setup code</li>
+<li>Element now raises ValueError on empty tag names</li>
+<li>Namespace fixing after moving elements between documents could fail if the
+source document was freed too early</li>
+<li>Setting namespace-less tag names on namespaced elements ('{ns}t' -&gt; 't')
+didn't reset the namespace</li>
+<li>Unknown constants from newer libxml2 versions could raise exceptions in the
+error handlers</li>
+<li>lxml.etree compiles much faster</li>
+<li>On libxml2 &lt;= 2.6.22, parsing strings with encoding declaration could fail
+in certain cases</li>
+<li>Document reference in ElementTree objects was not updated when the root
+element was moved to a different document</li>
+<li>Running absolute XPath expressions on an Element now evaluates against the
+root tree</li>
+<li>Evaluating absolute XPath expressions (<tt class="docutils literal">/*</tt>) on an ElementTree could fail</li>
+<li>Crashes when calling XSLT, RelaxNG, etc. with uninitialized ElementTree
+objects</li>
+<li>Removed public function <tt class="docutils literal">initThreadLogging()</tt>, replaced by more general
+<tt class="docutils literal">initThread()</tt> which fixes a number of setup problems in threads</li>
+<li>Memory leak when using iconv encoders in tostring/write</li>
+<li>Deep copying Elements and ElementTrees maintains the document information</li>
+<li>Serialization functions raise LookupError for unknown encodings</li>
+<li>Memory deallocation crash resulting from deep copying elements</li>
+<li>Some ElementTree methods could crash if the root node was not initialized
+(neither file nor element passed to the constructor)</li>
+<li>Element/SubElement failed to set attribute namespaces from passed <tt class="docutils literal">attrib</tt>
+dictionary</li>
+<li><tt class="docutils literal">tostring()</tt> adds an XML declaration for non-ASCII encodings</li>
+<li><tt class="docutils literal">tostring()</tt> failed to serialize encodings that contain 0-bytes</li>
+<li>ElementTree.xpath() and XPathDocumentEvaluator were not using the
+ElementTree root node as reference point</li>
+<li>Calling <tt class="docutils literal"><span class="pre">document('')</span></tt> in XSLT failed to return the stylesheet</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id363">
+<h1>0.9.2 (2006-05-10)</h1>
+<div class="section" id="id364">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Speedup for Element.makeelement(): the new element reuses the original
+libxml2 document instead of creating a new empty one</li>
+<li>Speedup for reversed() iteration over element children (Py2.4+ only)</li>
+<li>ElementTree compatible QName class</li>
+<li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
+</ul>
+</div>
+<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>
+<li>Memory leak if write_c14n fails to write the file after conversion</li>
+<li>Crash in XMLSchema and RelaxNG when passing non-schema documents</li>
+<li>Memory leak in RelaxNG() when RelaxNGParseError is raised</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id366">
+<h1>0.9.1 (2006-03-30)</h1>
+<div class="section" id="id367">
+<h2>Features added</h2>
+<ul class="simple">
+<li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
+SaxError on mismatch</li>
+<li>lxml.sax.ElementTreeContentHandler supports namespace-less SAX events
+(startElement, endElement) and defaults to empty attributes (keyword
+argument)</li>
+<li>Speedup for repeatedly accessing element tag names</li>
+<li>Minor API performance improvements</li>
+</ul>
+</div>
+<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>
+<li>sax.py was handling UTF-8 encoded tag names where it shouldn't</li>
+<li>lxml.tests package will no longer be installed (is still in source tar)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id369">
+<h1>0.9 (2006-03-20)</h1>
+<div class="section" id="id370">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Error logging API for libxml2 error messages</li>
+<li>Various performance improvements</li>
+<li>Benchmark script for lxml, ElementTree and cElementTree</li>
+<li>Support for registering extension functions through new FunctionNamespace
+class (see doc/extensions.txt)</li>
+<li>ETXPath class for XPath expressions in ElementTree notation ('//{ns}tag')</li>
+<li>Support for variables in XPath expressions (also in XPath class)</li>
+<li>XPath class for compiled XPath expressions</li>
+<li>XMLID module level function (ElementTree compatible)</li>
+<li>XMLParser API for customized libxml2 parser configuration</li>
+<li>Support for custom Element classes through new Namespace API (see
+doc/namespace_extensions.txt)</li>
+<li>Common exception base class LxmlError for module exceptions</li>
+<li>real iterator support in iter(Element), Element.getiterator()</li>
+<li>XSLT objects are callable, result trees support str()</li>
+<li>Added MANIFEST.in for easier creation of RPM files.</li>
+<li>'getparent' method on elements allows navigation to an element's
+parent element.</li>
+<li>Python core compatible SAX tree builder and SAX event generator. See
+doc/sax.txt for more information.</li>
+</ul>
+</div>
+<div class="section" id="id371">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Segfaults and memory leaks in various API functions of Element</li>
+<li>Segfault in XSLT.tostring()</li>
+<li>ElementTree objects no longer interfere, Elements can be root of different
+ElementTrees at the same time</li>
+<li>document('') works in XSLT documents read from files (in-memory documents
+cannot support this due to libxslt deficiencies)</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id372">
+<h1>0.8 (2005-11-03)</h1>
+<div class="section" id="id373">
+<h2>Features added</h2>
+<ul class="simple">
+<li>Support for copy.deepcopy() on elements. copy.copy() works also, but
+does the same thing, and does <em>not</em> create a shallow copy, as that
+makes no sense in the context of libxml2 trees. This means a
+potential incompatibility with ElementTree, but there's more chance
+that it works than if copy.copy() isn't supported at all.</li>
+<li>Increased compatibility with (c)ElementTree; .parse() on ElementTree is
+supported and parsing of gzipped XML files works.</li>
+<li>implemented index() on elements, allowing one to find the index of a
+SubElement.</li>
+</ul>
+</div>
+<div class="section" id="id374">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Use xslt-config instead of xml2-config to find out libxml2
+directories to take into account a case where libxslt is installed
+in a different directory than libxslt.</li>
+<li>Eliminate crash condition in iteration when text nodes are changed.</li>
+<li>Passing 'None' to tostring() does not result in a segfault anymore,
+but an AssertionError.</li>
+<li>Some test fixes for Windows.</li>
+<li>Raise XMLSyntaxError and XPathSyntaxError instead of plain python
+syntax errors. This should be less confusing.</li>
+<li>Fixed error with uncaught exception in Pyrex code.</li>
+<li>Calling lxml.etree.fromstring('') throws XMLSyntaxError instead of a
+segfault.</li>
+<li>has_key() works on attrib. 'in' tests also work correctly on attrib.</li>
+<li>INSTALL.txt was saying 2.2.16 instead of 2.6.16 as a supported
+libxml2 version, as it should.</li>
+<li>Passing a UTF-8 encoded string to the XML() function would fail;
+fixed.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id375">
+<h1>0.7 (2005-06-15)</h1>
+<div class="section" id="id376">
+<h2>Features added</h2>
+<ul class="simple">
+<li>parameters (XPath expressions) can be passed to XSLT using keyword
+parameters.</li>
+<li>Simple XInclude support. Calling the xinclude() method on a tree
+will process any XInclude statements in the document.</li>
+<li>XMLSchema support. Use the XMLSchema class or the convenience
+xmlschema() method on a tree to do XML Schema (XSD) validation.</li>
+<li>Added convenience xslt() method on tree. This is less efficient
+than the XSLT object, but makes it easier to write quick code.</li>
+<li>Added convenience relaxng() method on tree. This is less efficient
+than the RelaxNG object, but makes it easier to write quick code.</li>
+<li>Make it possible to use XPathEvaluator with elements as well. The
+XPathEvaluator in this case will retain the element so multiple
+XPath queries can be made against one element efficiently. This
+replaces the second argument to the .evaluate() method that existed
+previously.</li>
+<li>Allow registerNamespace() to be called on an XPathEvaluator, after
+creation, to add additional namespaces. Also allow registerNamespaces(),
+which does the same for a namespace dictionary.</li>
+<li>Add 'prefix' attribute to element to be able to read prefix information.
+This is entirely read-only.</li>
+<li>It is possible to supply an extra nsmap keyword parameter to
+the Element() and SubElement() constructors, which supplies a
+prefix to namespace URI mapping. This will create namespace
+prefix declarations on these elements and these prefixes will show up
+in XML serialization.</li>
+</ul>
+</div>
+<div class="section" id="id377">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Killed yet another memory management related bug: trees created
+using newDoc would not get a libxml2-level dictionary, which caused
+problems when deallocating these documents later if they contained a
+node that came from a document with a dictionary.</li>
+<li>Moving namespaced elements between documents was problematic as
+references to the original document would remain. This has been fixed
+by applying xmlReconciliateNs() after each move operation.</li>
+<li>Can pass None to 'dump()' without segfaults.</li>
+<li>tostring() works properly for non-root elements as well.</li>
+<li>Cleaned out the tostring() method so it should handle encoding
+correctly.</li>
+<li>Cleaned out the ElementTree.write() method so it should handle encoding
+correctly. Writing directly to a file should also be faster, as there is no
+need to go through a Python string in that case. Made sure the test cases
+test both serializing to StringIO as well as serializing to a real file.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id378">
+<h1>0.6 (2005-05-14)</h1>
+<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
+help with compilation on the Mac OS X platform, where otherwise the
+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="id380">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Do the right thing when handling namespaced attributes.</li>
+<li>fix bug where tostring() moved nodes into new documents. tostring()
+had very nasty side-effects before this fix, sorry!</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id381">
+<h1>0.5.1 (2005-04-09)</h1>
+<ul class="simple">
+<li>Python 2.2 compatibility fixes.</li>
+<li>unicode fixes in Element() and Comment() as well as XML(); unicode
+input wasn't properly being UTF-8 encoded.</li>
+</ul>
+</div>
+<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-06-22.
+
+</div>
+</body>
+</html>
index 06c7a06222d061366de8fa6524b2f5e2289a32e3..86f87b863f7091332df5c446a9b9039b8e5d0150 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 48ec1f31946d098d6b7eb394d0a45be47c1d2f53..b003b3d6bafaa8ff094dd183a78f25e4b7f30f28 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 d2ae92b0ec0ebb4c84cf524259b96d339aab0e4a..f7af1164e1cac467298925af4da136e85145b3d0 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 8c7f4b9212b46f3cfbd5cabbb5e651323154cdf6..3463df028b405724365030a40016c35b06ef3a8a 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 e3ff05e043fa0fcbf9793b15f240979b6942a32a..9674092e4d50152e81bcd8fe309fee2e372a8d74 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 0c40d2aa845ba769078a76f1639da311954b2133..d6da009612e679ecaedd8df4144cd38d1df68514 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 c06f54d9e8b2411ee355985c041e30af9c43824b..98497cfe66ca30804c001cd1ae05b12a067c5b9d 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 ceb2ac22ad27c7f186adec864f69caa36c927713..6e7756af1a00f892f4c27992fb1a8d015a6d875f 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
@@ -225,10 +233,11 @@ without your consent, unless required by applicable law.  Your
 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 5b2202342af1803d400bd53c1a3851e0efc85af7..63d6add308863834488acb2faeec6f4e004ce23e 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 a53d3cd6e4898271c04a34413b28e4d0bc5c9aac..78bc1abd0fa13434fd34a663cffd08b266b045d4 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 dfd08146bc7bbfaaeae4d559aa929ce65010b272..261a714ea3776efc1d9d2f8034534fa95d6c1589 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 5e7812655fd2003ec6eef54e78d9cb5a35a3e4eb..b1ad189f4e075a589318d67433ecb081366d1c3b 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 8e3e0ffe65663e7665ea8a144b4452f35f7abd5d..9837e2373c152abf88fb81afd0465cbe92c7a14d 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 286fc169b572dccde840ea90a059507761cbb996..ce784bb3500b51a0665892f513dbc1bac67cfdca 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 d12f07e7bc7e74811a6c1a211a776ceb3e462145..9af5b1e2c977c65fe30a49cd5ab9f0ff87a25b76 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 d984cb414eb79793039fc3c82f57cb89eef1b98e..e838ddcbde2b9391cfd43161f6441083ab52b390 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 08d23cc49593a6c65799bd16bb4cdd8c19dd410f..e6688e06aba2e41fa7e932fc304baedf36b5a7de 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 7e4c856b41166c7a5cbba37fce81b7c7d83ffff7..17ff1c8362a3dd6fb473316de91677474aab7657 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 ec1e569fc69adcd553a501ebcc4af73971ddc362..b0b0d02bf6112b25957453d63056c662dc03edbf 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 bd8d150f6aae7dc095885298c8ee75c14fa75d18..ffbbeaf6588e2c61fd5fc5964b81c5474b435184 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 473a64bceb03d51ac2e980c50e62e91acde35754..4efe61d1f6164f2371a69bffc7d6ade776802ca3 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 ffa21435acb44f5d7fec22158572a26a57ef7d06..e855b08652ab43ba09c5eb081af98db89e0f5e6a 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 5ca29a5ae717e239c0ad92bd242ca45c345f8843..7c54d1fc98a756fc99b172e98d65f45b4e49ee4c 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 a669c45c43ddb9ba128db4bf33cb9b67d321ad2f..861a9f554263efb088d8636c4f17a30696e495ad 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 2d3b20021ffb15ed56d56c2a735c181b0143a865..0dc149180227da8b309285b7d1dcda7ec10aa2e9 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 2f2eaf6c7f34255d28bfc2ebdcf1fe49fc535e43..876d8bf9b80259c633eaec5e22e84e889c9f729e 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 0732000aed7c2971a45892010176506801595cd8..b013b235c73c0c1265c775a6a6c863b49f7eee22 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 e48000bedf9f19680d10886820574ec7aaf72900..bfd8059cd16eb139c14263c847a4ed18033b9c10 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 dadb069eb42b11339cd579ea0baddc641f15f189..f7ea848771d59c7357c080089d023ede37f2340e 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 e607a5db2353ca6eea247bc8531fbdedf6eff992..3a03679638f84a7a522c33f0f0670fd8abc68032 100644 (file)
@@ -1,9 +1,13 @@
-/* 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
  *     """
@@ -36363,6 +38438,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         return source.geturl()
  *     except:
  */
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L7_try_return:;
     __Pyx_XGIVEREF(__pyx_t_1);
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
@@ -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
@@ -36516,6 +38602,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         filename = source.name
  *         if _isString(filename):
  */
+    __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_L1_error;
+    __pyx_L13_try_return:;
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_1);
@@ -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
@@ -36670,6 +38767,12 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         filename = source.filename
  *         if _isString(filename):
  */
+    __Pyx_XGIVEREF(__pyx_t_1);
+    __Pyx_XGIVEREF(__pyx_t_2);
+    __Pyx_XGIVEREF(__pyx_t_3);
+    __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
+    goto __pyx_L1_error;
+    __pyx_L20_try_return:;
     __Pyx_XGIVEREF(__pyx_t_1);
     __Pyx_XGIVEREF(__pyx_t_2);
     __Pyx_XGIVEREF(__pyx_t_3);
@@ -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 b669be3584c6c3f1fe5117c9abb54bf927e02ea7..9b45ba1ac01dc313cb8fc44478be4b26bdc8b576 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 f67756098011b1b1352dc66a9ea75698f7cf93b4..2ebd54b44ab3370199c306f72d707a6de83b869f 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 94506a6f8fc13411f62f0ab4a9ddb8f262a49c74..68d0616d4b5710a45f106cceabbb251dd241687a 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 2c912d918d622789f0a9d5a07cd7a98be6514a55..717c060b6a328a22dc135f65cbcf10d59655bdcb 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 3fcaafce3e250c2ef0378f9eb7317042f64ca314..f9f25f2c9fbcfaac2bfd8a3d7ffc45557e3cd796 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 b669be3584c6c3f1fe5117c9abb54bf927e02ea7..9b45ba1ac01dc313cb8fc44478be4b26bdc8b576 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 6dfe06fa84ab975a5bfe8d34bb4b3f4698303f05..40183ecb7b761fbe423d03b3819703a75b52c0ee 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 1ec61244b38f4f8019277ad5b1ece8e7f78abc44..ee5b29a39a220d43500fc702d11c81848f1633bc 100644 (file)
@@ -1,9 +1,13 @@
-/* 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 30a8f18887769f932f4b70ee4bc2953144e7c95c..bcf4da6f6f1278f85822c06eef0fb743941ff2f0 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 b374f26385b94df7e338b1376d535722655b9093..2522c58d05c4c44695a89eaf0b4cb52ed7bfb81d 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 7c1317172b77d28ccca58470e07c92fb7870069d..6e5a951c14dfc63f51bcc8915ee6ca9f1242cc37 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 fae6e3d04b2cab9db74fb2bfb40e32f047084561..af8c8ec7c1341172f05d465d5f47eae59a604939 100644 (file)
@@ -1 +1 @@
-4.2.1
+4.2.2