Imported Upstream version 4.3.2 upstream/4.3.2
authorJinWang An <jinwang.an@samsung.com>
Wed, 30 Dec 2020 01:15:15 +0000 (10:15 +0900)
committerJinWang An <jinwang.an@samsung.com>
Wed, 30 Dec 2020 01:15:15 +0000 (10:15 +0900)
464 files changed:
CHANGES.txt
Makefile
PKG-INFO
doc/html/FAQ.html
doc/html/api.html
doc/html/api/abc.ABCMeta-class.html
doc/html/api/api-objects.txt
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_sax.NSPrefixSaxTestCase-class.html
doc/html/api/lxml.tests.test_sax.SimpleContentHandler-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.3.2.html [moved from doc/html/changes-4.3.1.html with 99% similarity]
doc/html/compatibility.html
doc/html/credits.html
doc/html/cssselect.html
doc/html/element_classes.html
doc/html/elementsoup.html
doc/html/extensions.html
doc/html/html5parser.html
doc/html/index.html
doc/html/installation.html
doc/html/intro.html
doc/html/lxml-source-howto.html
doc/html/lxmlhtml.html
doc/html/objectify.html
doc/html/parsing.html
doc/html/performance.html
doc/html/resolvers.html
doc/html/sax.html
doc/html/sitemap.html
doc/html/tutorial.html
doc/html/validation.html
doc/html/xpathxslt.html
doc/main.txt
src/lxml.egg-info/PKG-INFO
src/lxml.egg-info/SOURCES.txt
src/lxml/_elementpath.c
src/lxml/apihelpers.pxi
src/lxml/builder.c
src/lxml/dtd.pxi
src/lxml/etree.c
src/lxml/etree.h
src/lxml/etree.pyx
src/lxml/etree_api.h
src/lxml/extensions.pxi
src/lxml/html/clean.c
src/lxml/html/diff.c
src/lxml/includes/lxml-version.h
src/lxml/iterparse.pxi
src/lxml/lxml.etree.h
src/lxml/lxml.etree_api.h
src/lxml/objectify.c
src/lxml/objectify.pyx
src/lxml/parser.pxi
src/lxml/proxy.pxi
src/lxml/readonlytree.pxi
src/lxml/sax.c
src/lxml/tests/test_elementtree.py
src/lxml/xinclude.pxi
src/lxml/xmlerror.pxi
src/lxml/xpath.pxi
src/lxml/xslt.pxi
version.txt

index 544041b..0b1aa71 100644 (file)
@@ -2,12 +2,34 @@
 lxml changelog
 ==============
 
+4.3.2 (2019-02-29)
+==================
+
+Bugs fixed
+----------
+
+* Crash in 4.3.1 when appending a child subtree with certain text nodes.
+
+Other changes
+-------------
+
+* Built with Cython 0.29.6.
+
+
 4.3.1 (2019-02-08)
 ==================
 
+Bugs fixed
+----------
+
 * LP#1814522: Crash when appending a child subtree that contains unsubstituted
   entity references.
 
+Other changes
+-------------
+
+* Built with Cython 0.29.5.
+
 
 4.3.0 (2019-01-04)
 ==================
index 161fa4b..8e7112d 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -50,7 +50,7 @@ wheel_manylinux: wheel_manylinux64 wheel_manylinux32
 wheel_manylinux32 wheel_manylinux64: dist/lxml-$(LXMLVERSION).tar.gz
        time docker run --rm -t \
                -v $(shell pwd):/io \
-               -e CFLAGS="-O3 -g1 -mtune=generic -pipe -fPIC -flto" \
+               -e CFLAGS="-O3 -g1 -march=core2 -pipe -fPIC -flto" \
                -e LDFLAGS="$(LDFLAGS) -flto" \
                -e LIBXML2_VERSION="$(MANYLINUX_LIBXML2_VERSION)" \
                -e LIBXSLT_VERSION="$(MANYLINUX_LIBXSLT_VERSION)" \
index d4074f1..0b90e60 100644 (file)
--- a/PKG-INFO
+++ b/PKG-INFO
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: lxml
-Version: 4.3.1
+Version: 4.3.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -38,11 +38,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.3.1 (2019-02-08)
+        4.3.2 (2019-02-29)
         ==================
         
-        * LP#1814522: Crash when appending a child subtree that contains unsubstituted
-          entity references.
+        Bugs fixed
+        ----------
+        
+        * Crash in 4.3.1 when appending a child subtree with certain text nodes.
+        
+        Other changes
+        -------------
+        
+        * Built with Cython 0.29.6.
         
         
         
index fa14bae..4baab77 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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>
@@ -993,7 +993,7 @@ map it to your namespace.  See also the question above.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 9d66ca2..1022f04 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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
@@ -530,7 +530,7 @@ example:</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 01db2c2..e15e3d6 100644 (file)
@@ -427,7 +427,7 @@ even via super()).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2a5faa2..6112c17 100644 (file)
@@ -4772,6 +4772,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert_name_interning lxml.t
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_pop_unknown lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_copy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_register_namespace lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_set_tail_empty   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_shallowcopy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_unicode        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement_reference       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference
@@ -4786,6 +4787,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_error_close_inco
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_other lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_other
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace_reversed      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_treebuilder_target lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attrib       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert
@@ -4835,6 +4837,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_values      lxml.tests.
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_xmlns_move       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delitem_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_remove_while_iterating     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_replace_slice_tail lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tail_set_twice     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice
@@ -4858,14 +4861,15 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_tail  lxml.tests.test_e
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_weird_dict_interaction     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_weird_dict_interaction
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_element    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iter_remove_tail   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setitem    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_pi lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_set_text2  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_crash    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_clear_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_attribute_ns   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_comment_getitem_getslice   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_subelement       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_unknown  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
@@ -4900,6 +4904,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_object_encoding    l
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_sub  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tag_reset_root_ns  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step_negative     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_getchildren        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_error_none   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attribute_resolve_new        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iterparse  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse
@@ -4932,7 +4937,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative1    lxml.test
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative2 lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_ns_decl_tostring_root      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_deepcopy_namespaces        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces
-lxml.tests.test_elementtree._ETreeTestCaseBase._test_getchildren       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_encoding        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_manipulation     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_escape_in     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_in
@@ -4956,7 +4960,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_getslice_negative     lxml.tests
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_default_encoding lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_insert lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_empty lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_empty
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step
@@ -5072,6 +5075,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert_name_interning lxml.t
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_pop_unknown lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_copy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_register_namespace lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_set_tail_empty   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_shallowcopy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_unicode        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement_reference       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference
@@ -5086,6 +5090,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_error_close_inco
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_other lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_other
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace_reversed      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_treebuilder_target lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attrib       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert
@@ -5135,6 +5140,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_values      lxml.tests.
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_xmlns_move       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delitem_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_remove_while_iterating     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_replace_slice_tail lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tail_set_twice     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice
@@ -5158,14 +5164,15 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_tail  lxml.tests.test_e
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_weird_dict_interaction     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_weird_dict_interaction
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_element    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iter_remove_tail   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setitem    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_pi lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_set_text2  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_crash    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_clear_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_attribute_ns   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_comment_getitem_getslice   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_subelement       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_unknown  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
@@ -5200,6 +5207,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_object_encoding    l
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_sub  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tag_reset_root_ns  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step_negative     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_getchildren        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_error_none   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attribute_resolve_new        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iterparse  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse
@@ -5232,7 +5240,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative1    lxml.test
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative2 lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_ns_decl_tostring_root      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_deepcopy_namespaces        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces
-lxml.tests.test_elementtree._ETreeTestCaseBase._test_getchildren       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_encoding        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_manipulation     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_escape_in     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_in
@@ -5256,7 +5263,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_getslice_negative     lxml.tests
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_default_encoding lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_insert lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_empty lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_empty
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step
@@ -5359,6 +5365,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert_name_interning lxml.t
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_pop_unknown lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_copy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_register_namespace lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_set_tail_empty   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_shallowcopy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_unicode        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode
 lxml.tests.test_elementtree.ElementTreeTestCase.setUpClass     lxml.tests.test_elementtree.ElementTreeTestCase-class.html#setUpClass
@@ -5374,6 +5381,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_error_close_inco
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_other lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_other
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace_reversed      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_treebuilder_target lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attrib       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert
@@ -5423,6 +5431,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_values      lxml.tests.
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_xmlns_move       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delitem_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_remove_while_iterating     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_replace_slice_tail lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tail_set_twice     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice
@@ -5446,14 +5455,15 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_tail  lxml.tests.test_e
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_weird_dict_interaction     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_weird_dict_interaction
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_element    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iter_remove_tail   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setitem    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_pi lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_set_text2  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_crash    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_clear_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_attribute_ns   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_comment_getitem_getslice   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_subelement       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_unknown  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown
@@ -5488,6 +5498,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_object_encoding    l
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_sub  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tag_reset_root_ns  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step_negative     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_getchildren        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_error_none   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attribute_resolve_new        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iterparse  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse
@@ -5520,7 +5531,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative1    lxml.test
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative2 lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_ns_decl_tostring_root      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_deepcopy_namespaces        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces
-lxml.tests.test_elementtree._ETreeTestCaseBase._test_getchildren       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_encoding        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_manipulation     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_escape_in     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_in
@@ -5544,7 +5554,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_getslice_negative     lxml.tests
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring_default_encoding lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_insert lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_empty lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_empty
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_write_method_html  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setslice_all_replace       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step
@@ -5647,6 +5656,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_insert_name_interning lxml.t
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_pop_unknown lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attrib_copy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_register_namespace lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_set_tail_empty   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_shallowcopy        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_feed_parser_unicode        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_subelement_reference       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference
@@ -5710,6 +5720,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_values      lxml.tests.
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_xmlns_move       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delitem_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_remove_while_iterating     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_replace_slice_tail lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tail_set_twice     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice
@@ -5733,12 +5744,13 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_tail  lxml.tests.test_e
 lxml.tests.test_elementtree._ETreeTestCaseBase._check_element  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_tag_str_subclass   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_str_subclass
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_element    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iter_remove_tail   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_setitem    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_pi lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_set_text2  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2
-lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_crash    lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_encoding_tostring  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_iteration_clear_tail       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_attribute_ns   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_del_setslice       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_comment_getitem_getslice   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice
@@ -5775,6 +5787,7 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_object_encoding    l
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_clear_sub  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_element_indexing_with_text lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_step_negative     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative
+lxml.tests.test_elementtree._ETreeTestCaseBase.test_getchildren        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_error_none   lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_qname_attribute_resolve_new        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_iterparse  lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse
@@ -5807,7 +5820,6 @@ lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative1    lxml.test
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_delslice_negative2 lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_ns_decl_tostring_root      lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_deepcopy_namespaces        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces
-lxml.tests.test_elementtree._ETreeTestCaseBase._test_getchildren       lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_parse_file_encoding        lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_attribute_manipulation     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation
 lxml.tests.test_elementtree._ETreeTestCaseBase.test_text_escape_in     lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_in
index e4efd0c..0ebe29c 100644 (file)
@@ -1342,7 +1342,7 @@ type(name, bases, dict) -&gt; a new type</em>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4d051c..265905b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 535c57b..b1c52e7 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 35aae11..027d36b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5aa7dfe..e4c2979 100644 (file)
@@ -380,7 +380,7 @@ to a single parent.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 00f5ca6..9db3a2a 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b6688d0..6e101bf 100644 (file)
@@ -281,7 +281,7 @@ Assertion failed.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4fb0e99..331332e 100644 (file)
@@ -257,7 +257,7 @@ page was last updated. </p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb51c23..9303aa1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d4f8510..d5855ac 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9df2286..da35d7c 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 77d1180..77764f4 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3a802ca..9745b34 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 66fc9d7..4c55dbe 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c29ea46..7257d96 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ecb79de..5e6f766 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2249366..823c28d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1466cae..0fada03 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d3392ba..0d2c915 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b6ed60b..e80542e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 21901eb..540bbbe 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f750d83..12ae63a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d0c4dcc..13505ef 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e22e218..981565c 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 881a941..38351d8 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cfa4e02..8f20777 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 81026dd..d836a9a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 22d5f40..d0541d1 100644 (file)
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TABLE">TABLE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_generator_close_continues_closing">test_generator_close_continues_closing()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all">test_setslice_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_all_empty_reversed">test_setslice_all_empty_reversed()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.defs-module.html#table_tags">table_tags</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_generator_close_continues_closing">test_generator_close_continues_closing()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace">test_setslice_all_replace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren">test_getchildren()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_empty">test_setslice_all_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Comment-class.html" onclick="show_private();">_Comment</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed">test_setslice_all_replace_reversed()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_all_empty_reversed">test_setslice_all_empty_reversed()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace">test_setslice_all_replace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Entity-class.html" onclick="show_private();">_Entity</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed">test_setslice_all_replace_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree._ProcessingInstruction-class.html" onclick="show_private();">_ProcessingInstruction</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_complete">test_setslice_complete()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#tag">tag</a><br />
 <span class="index-where">(in&nbsp;<a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_all_comment_pi">test_getiterator_filter_all_comment_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_elements">test_setslice_elements()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#tag">tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_comment">test_getiterator_filter_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_complete">test_setslice_complete()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.doctestcompare.LXMLOutputChecker-class.html#tag_compare">tag_compare()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.doctestcompare.LXMLOutputChecker-class.html">LXMLOutputChecker</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_element">test_getiterator_filter_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_elements">test_setslice_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_entities">test_getiterator_filter_entities()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end">test_setslice_end()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_local_name">test_getiterator_filter_local_name()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end_exact">test_setslice_end_exact()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_empty">test_setslice_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.defs-module.html#tags">tags</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple">test_getiterator_filter_multiple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert">test_setslice_insert()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end">test_setslice_end()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#tail">tail</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_multiple_tuple">test_getiterator_filter_multiple_tuple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert_neg">test_setslice_insert_neg()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end_exact">test_setslice_end_exact()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#tail">tail</a><br />
 <span class="index-where">(in&nbsp;<a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getiterator_filter_namespace">test_getiterator_filter_namespace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative">test_setslice_negative()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert">test_setslice_insert()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree._ProcessingInstruction-class.html#target">target</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._ProcessingInstruction-class.html" onclick="show_private();">_ProcessingInstruction</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_pi">test_getiterator_filter_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative2">test_setslice_negative2()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_insert_neg">test_setslice_insert_neg()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TBODY">TBODY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_with_text">test_getiterator_filter_with_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial">test_setslice_partial()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative">test_setslice_negative()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TD">TD</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_with_text">test_getiterator_with_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_allneg">test_setslice_partial_allneg()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative2">test_setslice_negative2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.common_imports.HelperTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.common_imports.HelperTestCase-class.html">HelperTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getnext">test_getnext()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_neg">test_setslice_partial_neg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial">test_setslice_partial()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getparent">test_getparent()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_wrong_length">test_setslice_partial_wrong_length()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_allneg">test_setslice_partial_allneg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getprevious">test_getprevious()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_single">test_setslice_single()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_neg">test_setslice_partial_neg()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_getroottree">test_getroottree()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step">test_setslice_step()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setslice_partial_wrong_length">test_setslice_partial_wrong_length()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice">test_getslice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative">test_setslice_step_negative()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_single">test_setslice_single()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_complete">test_getslice_complete()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative2">test_setslice_step_negative2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step">test_setslice_step()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_overrun">test_setslice_step_overrun()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative">test_setslice_step_negative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial">test_getslice_partial()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_tail">test_setslice_tail()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_negative2">test_setslice_step_negative2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#tearDown">tearDown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_getslice_partial_neg">test_getslice_partial_neg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy">test_shallowcopy()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setslice_step_overrun">test_setslice_step_overrun()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.doctestcompare-module.html#temp_install">temp_install()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.doctestcompare-module.html">lxml.doctestcompare</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_step">test_getslice_step()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy_elementtree">test_shallowcopy_elementtree()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_tail">test_setslice_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_text">test_getslice_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_simple">test_simple()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy">test_shallowcopy()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html5_doctype">test_html5_doctype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy_elementtree">test_shallowcopy_elementtree()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test__str">test__str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base">test_html_base()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_simple">test_simple()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr">test_addattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_base_tag">test_html_base_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_element">test_sourceline_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_element">test_addattr_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_HTML_base_url_docinfo">test_HTML_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_end">test_sourceline_iterparse_end()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_addattr_list">test_addattr_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_html_decl">test_html_decl()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_start">test_sourceline_iterparse_start()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_element">test_sourceline_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_colon">test_html_element_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_parse">test_sourceline_parse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_end">test_sourceline_iterparse_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_empty">test_html_element_name_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_XML">test_sourceline_XML()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_iterparse_start">test_sourceline_iterparse_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_quote">test_html_element_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_standalone">test_standalone()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_parse">test_sourceline_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_element_name_space">test_html_element_name_space()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup">test_standard_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_sourceline_XML">test_sourceline_XML()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_noops">test_addnext_noops()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_feed_parser">test_html_feed_parser()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_str">test_str()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_standalone">test_standalone()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_pi">test_addnext_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_feed_parser_chunky">test_html_feed_parser_chunky()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes">test_strip_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_standard_lookup">test_standard_lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root">test_addnext_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_feed_parser_more_tags">test_html_feed_parser_more_tags()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes_ns">test_strip_attributes_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_str">test_str()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addnext_root_comment">test_addnext_root_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_file_error">test_html_file_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements">test_strip_elements()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes">test_strip_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_fromstring_target_exceptions">test_html_fromstring_target_exceptions()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements_ns">test_strip_elements_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_attributes_ns">test_strip_attributes_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_ids">test_html_ids()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags">test_strip_tags()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements">test_strip_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_ids_no_collect_ids">test_html_ids_no_collect_ids()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_and_remove">test_strip_tags_and_remove()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_elements_ns">test_strip_elements_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse">test_html_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_doc_style">test_strip_tags_doc_style()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags">test_strip_tags()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_broken">test_html_iterparse_broken()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_ns">test_strip_tags_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_and_remove">test_strip_tags_and_remove()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_broken_no_recover">test_html_iterparse_broken_no_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment">test_strip_tags_pi_comment()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_doc_style">test_strip_tags_doc_style()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_file">test_html_iterparse_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment_all">test_strip_tags_pi_comment_all()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_ns">test_strip_tags_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_start">test_html_iterparse_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom">test_sub_data_element_nsmap_custom()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment">test_strip_tags_pi_comment()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_addprevious_root_pi">test_addprevious_root_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_iterparse_stop_short">test_html_iterparse_stop_short()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom_prefixes">test_sub_data_element_nsmap_custom_prefixes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_strip_tags_pi_comment_all">test_strip_tags_pi_comment_all()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_anonymous_namespace">test_anonymous_namespace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_empty">test_html_parser_target_doctype_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_default">test_sub_data_element_nsmap_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom">test_sub_data_element_nsmap_custom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html">test_html_parser_target_doctype_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_empty">test_sub_data_element_nsmap_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_custom_prefixes">test_sub_data_element_nsmap_custom_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_doctype_html_full">test_html_parser_target_doctype_html_full()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom">test_sub_element_nsmap_custom()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_default">test_sub_data_element_nsmap_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.AsyncXmlFileTestCase-class.html">AsyncXmlFileTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_exceptions">test_html_parser_target_exceptions()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom_prefixes">test_sub_element_nsmap_custom_prefixes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_data_element_nsmap_empty">test_sub_data_element_nsmap_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.AsyncXmlFileTestCase-class.html">AsyncXmlFileTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_parser_target_tag">test_html_parser_target_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_default">test_sub_element_nsmap_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom">test_sub_element_nsmap_custom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_html_prefix_nsmap">test_html_prefix_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_empty">test_sub_element_nsmap_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_custom_prefixes">test_sub_element_nsmap_custom_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_colon">test_html_subelement_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement">test_subelement()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_default">test_sub_element_nsmap_default()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_as_attrib">test_attrib_as_attrib()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_empty">test_html_subelement_name_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_attribute_invalid">test_subelement_attribute_invalid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_sub_element_nsmap_empty">test_sub_element_nsmap_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_clear">test_attrib_clear()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_quote">test_html_subelement_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_colon">test_subelement_name_colon()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement">test_subelement()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_copy">test_attrib_copy()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_html_subelement_name_space">test_html_subelement_name_space()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_empty">test_subelement_name_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_attribute_invalid">test_subelement_attribute_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html">test_htmlparser</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_quote">test_subelement_name_quote()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_colon">test_subelement_name_colon()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_http_client">test_http_client()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_space">test_subelement_name_space()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_empty">test_subelement_name_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_http_client_404">test_http_client_404()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_nsmap">test_subelement_nsmap()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_quote">test_subelement_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_http_client_gzip">test_http_client_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference">test_subelement_reference()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_name_space">test_subelement_name_space()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attrib_order">test_attrib_order()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html">test_http_io</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes">test_subelement_with_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_subelement_nsmap">test_subelement_nsmap()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop">test_attrib_pop()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_ietf_decl">test_ietf_decl()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns">test_subelement_with_attributes_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference">test_subelement_reference()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_ietf_decl">test_ietf_decl()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_subtree_copy_thread">test_subtree_copy_thread()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes">test_subelement_with_attributes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_empty_default">test_attrib_pop_empty_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.EncodingsTestCase-class.html#test_illegal_utf8">test_illegal_utf8()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns">test_subelement_with_attributes_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_invalid_args">test_attrib_pop_invalid_args()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.EncodingsTestCase-class.html#test_illegal_utf8_recover">test_illegal_utf8_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_subtree_copy_thread">test_subtree_copy_thread()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_pop_unknown">test_attrib_pop_unknown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_include_paths">test_include_paths()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_css-module.html">lxml.tests.test_css</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attrib_set_clear">test_attrib_set_clear()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html">test_incremental_xmlfile</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare-module.html">lxml.tests.test_doctestcompare</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_attribute">test_attribute()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_index">test_index()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_css-module.html">lxml.tests.test_css</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_attribute_based_lookup">test_attribute_based_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert">test_insert()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath-module.html">lxml.tests.test_elementpath</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare-module.html">lxml.tests.test_doctestcompare</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_contains">test_attribute_contains()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_beyond_index">test_insert_beyond_index()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_attribute_extra">test_attribute_extra()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_name_interning">test_insert_name_interning()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath-module.html">lxml.tests.test_elementpath</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_attribute_extra_duplicate">test_attribute_extra_duplicate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_negative">test_insert_negative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_gets_namespace_prefix_on_merge">test_attribute_gets_namespace_prefix_on_merge()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_external_document-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_external_document-module.html">lxml.tests.test_external_document</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_gets_namespace_prefix_on_merge_with_nons">test_attribute_gets_namespace_prefix_on_merge_with_nons()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_internal_dtds">test_internal_dtds()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_has_key">test_attribute_has_key()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_invalid_decl_1">test_invalid_decl_1()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_external_document-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_external_document-module.html">lxml.tests.test_external_document</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items">test_attribute_items()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_invalid_decl_2">test_invalid_decl_2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
-</tr>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</a>)</span></td>
+</tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items2">test_attribute_items2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html">test_io</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io-module.html">lxml.tests.test_io</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_items_ns">test_attribute_items_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_iterator">test_attribute_iterator()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html">test_isoschematron</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io-module.html">lxml.tests.test_io</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_keeps_namespace_prefix_on_merge">test_attribute_keeps_namespace_prefix_on_merge()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#test_suite">test_suite()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_keeps_namespace_prefix_on_merge_with_nons">test_attribute_keeps_namespace_prefix_on_merge_with_nons()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail">test_iter_remove_tail()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys">test_attribute_keys()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors">test_iterancestors()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#test_suite">test_suite()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
+</tr>
+<tr>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys2">test_attribute_keys2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag">test_iterancestors_tag()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup-module.html">lxml.tests.test_pyclasslookup</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys">test_attribute_keys()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys_ns">test_attribute_keys_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag">test_iterancestors_tag()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag_multiple">test_iterancestors_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng-module.html">lxml.tests.test_relaxng</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys2">test_attribute_keys2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation">test_attribute_manipulation()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterancestors_tag_multiple">test_iterancestors_tag_multiple()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax-module.html">lxml.tests.test_sax</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_keys_ns">test_attribute_keys_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip">test_attribute_namespace_roundtrip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail">test_iteration_clear_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron-module.html">lxml.tests.test_schematron</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_manipulation">test_attribute_manipulation()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip">test_attribute_namespace_roundtrip()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_attribute_quoting">test_attribute_quoting()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_attribute_quoting_unicode">test_attribute_quoting_unicode()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema-module.html">lxml.tests.test_xmlschema</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_attribute_quoting">test_attribute_quoting()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_set">test_attribute_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_attribute_quoting_unicode">test_attribute_quoting_unicode()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set">test_attribute_set()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty">test_iteration_set_tail_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#test_suite">test_suite()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_set">test_attribute_set()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid">test_attribute_set_invalid()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_ns">test_tag_reset_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set">test_attribute_set()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_nonstring">test_attribute_set_nonstring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_invalid">test_attribute_set_invalid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_str">test_attribute_str()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren">test_iterchildren()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_str_subclass">test_tag_str_subclass()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_set_nonstring">test_attribute_set_nonstring()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_attrib">test_attribute_update_attrib()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_reversed">test_iterchildren_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_write">test_tag_write()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_str">test_attribute_str()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_dict">test_attribute_update_dict()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag">test_iterchildren_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_attrib">test_attribute_update_attrib()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_iter">test_attribute_update_iter()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple">test_iterchildren_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_dict">test_attribute_update_dict()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_sequence">test_attribute_update_sequence()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple_posarg">test_iterchildren_tag_multiple_posarg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_iter">test_attribute_update_iter()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values">test_attribute_values()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_multiple_reversed">test_iterchildren_tag_multiple_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_update_sequence">test_attribute_update_sequence()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_values">test_attribute_values()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_posarg">test_iterchildren_tag_posarg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_append">test_tail_append()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values">test_attribute_values()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values_ns">test_attribute_values_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterchildren_tag_reversed">test_iterchildren_tag_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_attribute_values">test_attribute_values()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move">test_attribute_xmlns_move()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants">test_iterdescendants()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_none">test_tail_set_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_values_ns">test_attribute_values_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attributes_get">test_attributes_get()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag">test_iterdescendants_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move">test_attribute_xmlns_move()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_bad_element">test_bad_element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterdescendants_tag_multiple">test_iterdescendants_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_str_subclass">test_tail_str_subclass()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attributes_get">test_attributes_get()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute">test_boolean_attribute()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text">test_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_bad_element">test_bad_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute_round_trip">test_boolean_attribute_round_trip()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_attrib_ns">test_iterparse_attrib_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_empty">test_text_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute">test_boolean_attribute()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute_xml_adds_empty_string">test_boolean_attribute_xml_adds_empty_string()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken">test_iterparse_broken()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute_round_trip">test_boolean_attribute_round_trip()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#test_buffering">test_buffering()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken_multi_recover">test_iterparse_broken_multi_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_out">test_text_escape_out()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_boolean_attribute_xml_adds_empty_string">test_boolean_attribute_xml_adds_empty_string()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_buffering">test_buffering()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_broken_recover">test_iterparse_broken_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_escape_tostring">test_text_escape_tostring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#test_buffering">test_buffering()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_build_from_xpath_result">test_build_from_xpath_result()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_cdata">test_iterparse_cdata()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_other">test_text_other()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_buffering">test_buffering()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_build_tree">test_build_tree()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_clear">test_iterparse_clear()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_text_str_subclass">test_text_str_subclass()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_build_from_xpath_result">test_build_from_xpath_result()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html">test_builder</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_comments">test_iterparse_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_create_xslt">test_thread_create_xslt()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_build_tree">test_build_tree()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_invalid">test_byte_invalid()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_8bit_override">test_iterparse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_error_log">test_thread_error_log()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html">test_builder</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_zero">test_byte_zero()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_encoding_error">test_iterparse_encoding_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_thread_mix">test_thread_mix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_invalid">test_byte_invalid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n">test_c14n()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_file">test_iterparse_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_global_parse">test_thread_pipeline_global_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_byte_zero">test_byte_zero()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_exclusive">test_c14n_element_tostring_exclusive()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd_end">test_iterparse_file_dtd_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html#test_thread_pipeline_thread_parse">test_thread_pipeline_thread_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n">test_c14n()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_with_comments">test_c14n_element_tostring_with_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_iterparse_file_dtd_start">test_iterparse_file_dtd_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_exclusive">test_c14n_element_tostring_exclusive()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_exclusive">test_c14n_exclusive()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_getiterator">test_iterparse_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_element_tostring_with_comments">test_c14n_element_tostring_with_comments()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file">test_c14n_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_incomplete">test_iterparse_incomplete()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_exclusive">test_c14n_exclusive()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file_gzip">test_c14n_file_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_keep_cdata">test_iterparse_keep_cdata()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file">test_c14n_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_gzip">test_c14n_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_large">test_iterparse_large()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_file_gzip">test_c14n_file_gzip()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_exclusive">test_c14n_tostring_exclusive()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_move_elements">test_iterparse_move_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_gzip">test_c14n_gzip()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_inclusive_ns_prefixes">test_c14n_tostring_inclusive_ns_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_pis">test_iterparse_pis()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_exclusive">test_c14n_tostring_exclusive()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_with_comments">test_c14n_tostring_with_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_remove_comments">test_iterparse_remove_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_inclusive_ns_prefixes">test_c14n_tostring_inclusive_ns_prefixes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_with_comments">test_c14n_with_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start">test_iterparse_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_tostring_with_comments">test_c14n_tostring_with_comments()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_c_api">test_c_api()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start_end">test_iterparse_start_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element_tail">test_tostring_element_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html#test_c14n_with_comments">test_c14n_with_comments()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeC14NTestCase-class.html">ETreeC14NTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html#test_cache">test_cache()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_strip">test_iterparse_strip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_html">test_tostring_method_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_c_api">test_c_api()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_cdata">test_cdata()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag">test_iterparse_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_html_with_tail">test_tostring_method_html_with_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html#test_cache">test_cache()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata">test_cdata()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_all">test_iterparse_tag_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_text">test_tostring_method_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_cdata">test_cdata()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_errors">test_cdata_errors()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns">test_iterparse_tag_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_method_text_encoding">test_tostring_method_text_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata">test_cdata()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_parser">test_cdata_parser()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_all">test_iterparse_tag_ns_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_errors">test_cdata_errors()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_cdata_solo">test_cdata_solo()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty">test_iterparse_tag_ns_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_none">test_tostring_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_parser">test_cdata_parser()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_tail">test_cdata_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tag_ns_empty_all">test_iterparse_tag_ns_empty_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_builder.BuilderTestCase-class.html#test_cdata_solo">test_cdata_solo()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_type">test_cdata_type()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterparse_tree_comments">test_iterparse_tree_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_standalone">test_tostring_standalone()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_tail">test_cdata_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_xpath">test_cdata_xpath()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_iterparse_utf16_bom">test_iterparse_utf16_bom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_type">test_cdata_type()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute">test_change_pytype_attribute()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_iterparse_utf8_bom">test_iterparse_utf8_bom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode">test_tostring_unicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_cdata_xpath">test_cdata_xpath()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child">test_child()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings">test_itersiblings()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_tostring_unicode_element">test_tostring_unicode_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_change_pytype_attribute">test_change_pytype_attribute()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_addattr">test_child_addattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag">test_itersiblings_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child">test_child()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr">test_child_getattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_itersiblings_tag_multiple">test_itersiblings_tag_multiple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_addattr">test_child_addattr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr_empty_ns">test_child_getattr_empty_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext">test_itertext()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr">test_child_getattr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index">test_child_index()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext_child">test_itertext_child()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_getattr_empty_ns">test_child_getattr_empty_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index_neg">test_child_index_neg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk">test_iterwalk()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index">test_child_index()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_iter">test_child_iter()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_attrib_ns">test_iterwalk_attrib_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_index_neg">test_child_index_neg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_len">test_child_len()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_clear">test_iterwalk_clear()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_iter">test_child_iter()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_nonexistant">test_child_nonexistant()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_end_skip">test_iterwalk_end_skip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_len">test_child_len()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_ns_nons">test_child_ns_nons()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_getiterator">test_iterwalk_getiterator()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_nonexistant">test_child_nonexistant()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_set_ro">test_child_set_ro()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_ns_skip">test_iterwalk_ns_skip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_ns_nons">test_child_ns_nons()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_class_lookup">test_class_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start">test_iterwalk_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_child_set_ro">test_child_set_ro()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_reentry">test_class_lookup_reentry()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end">test_iterwalk_start_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder">test_treebuilder()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_class_lookup">test_class_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_type_mismatch">test_class_lookup_type_mismatch()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end_skip">test_iterwalk_start_end_skip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target">test_treebuilder_target()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_reentry">test_class_lookup_reentry()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename">test_class_parse_filename()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end_tags">test_iterwalk_start_end_tags()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool">test_type_bool()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_class_lookup_type_mismatch">test_class_lookup_type_mismatch()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename_remove_previous">test_class_parse_filename_remove_previous()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_end_tags_with_root">test_iterwalk_start_end_tags_with_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_bool_cmp">test_type_bool_cmp()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename">test_class_parse_filename()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_fileobject">test_class_parse_fileobject()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_start_tags">test_iterwalk_start_tags()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_filename_remove_previous">test_class_parse_filename_remove_previous()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_unamed_fileobject">test_class_parse_unamed_fileobject()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag">test_iterwalk_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_fileobject">test_class_parse_fileobject()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html">test_classlookup</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_iterwalk_tag_all">test_iterwalk_tag_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision">test_type_float_precision()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_class_parse_unamed_fileobject">test_class_parse_unamed_fileobject()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_clean_doctype">test_clean_doctype()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_large_sourceline_XML">test_large_sourceline_XML()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_float_precision_consistency">test_type_float_precision_consistency()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html">test_classlookup</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear">test_clear()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup">test_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int">test_type_int()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_clean_doctype">test_clean_doctype()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub">test_clear_sub()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_attrib">test_lookup_attrib()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_int_cmp">test_type_int_cmp()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear">test_clear()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_tail">test_clear_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_bool">test_lookup_bool()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub">test_clear_sub()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_closing_out_of_order_in_error_case">test_closing_out_of_order_in_error_case()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get">test_lookup_get()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_NoneType">test_type_NoneType()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_tail">test_clear_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment">test_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_get_default">test_lookup_get_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_closing_out_of_order_in_error_case">test_closing_out_of_order_in_error_case()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_comment">test_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getchildren">test_lookup_getchildren()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment">test_comment()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_comment_base">test_comment_base()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem">test_lookup_getitem()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_complex">test_type_str_as_complex()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_comment">test_comment()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_comment_before_dtd">test_comment_before_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getitem_neg">test_lookup_getitem_neg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_float">test_type_str_as_float()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_comment_base">test_comment_base()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_empty">test_comment_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getnext">test_lookup_getnext()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_as_int">test_type_str_as_int()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_comment_before_dtd">test_comment_before_dtd()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice">test_comment_getitem_getslice()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getparent">test_lookup_getparent()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_cmp">test_type_str_cmp()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_empty">test_comment_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable">test_comment_immutable()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getprevious">test_lookup_getprevious()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice">test_comment_getitem_getslice()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable_attrib">test_comment_immutable_attrib()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_getslice">test_lookup_getslice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_hash">test_type_str_hash()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable">test_comment_immutable()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_no_proxy_yet">test_comment_no_proxy_yet()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iter_children">test_lookup_iter_children()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_immutable_attrib">test_comment_immutable_attrib()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_nonsense">test_comment_nonsense()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren">test_lookup_iterchildren()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_mod">test_type_str_mod()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_no_proxy_yet">test_comment_no_proxy_yet()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_parse_empty">test_comment_parse_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_iterchildren_tag">test_lookup_iterchildren_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_nonsense">test_comment_nonsense()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_text">test_comment_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_keep_ref_assertion">test_lookup_keep_ref_assertion()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_comment_parse_empty">test_comment_parse_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_whitespace">test_comment_whitespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_len">test_lookup_len()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_str_sequence">test_type_str_sequence()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_text">test_comment_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_comments_fallback">test_comments_fallback()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_prefix">test_lookup_prefix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_unregistered">test_type_unregistered()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_whitespace">test_comment_whitespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_attribute_names_in_dicts">test_concurrent_attribute_names_in_dicts()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_sourceline">test_lookup_sourceline()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr">test_type_ustr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_comments_fallback">test_comments_fallback()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_class_lookup">test_concurrent_class_lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tag">test_lookup_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_add">test_type_ustr_add()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_attribute_names_in_dicts">test_concurrent_attribute_names_in_dicts()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_proxies">test_concurrent_proxies()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_tail">test_lookup_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_class_lookup">test_concurrent_class_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_countchildren">test_countchildren()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#test_lookup_text">test_lookup_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html">PyClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_intliteral">test_type_ustr_intliteral()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_concurrent_proxies">test_concurrent_proxies()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_crash">test_crash()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_lookup_without_fallback">test_lookup_without_fallback()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_type_ustr_mul">test_type_ustr_mul()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_countchildren">test_countchildren()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element">test_create_element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html#test_main_xslt_in_thread">test_main_xslt_in_thread()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_unescaped_script">test_unescaped_script()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_crash">test_crash()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element_default">test_create_element_default()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_makeelement">test_makeelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_unescaped_script_incremental">test_unescaped_script_incremental()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element">test_create_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_create_from_partial_doc">test_create_from_partial_doc()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice">test_merge_namespaced_subtree_as_slice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html">test_unicode</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_create_element_default">test_create_element_default()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html">test_css</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_method_context_manager_misuse">test_method_context_manager_misuse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_attr">test_unicode_attr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_create_from_partial_doc">test_create_from_partial_doc()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_css.CSSTestCase-class.html#test_cssselect">test_cssselect()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_css.CSSTestCase-class.html">CSSTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_missing_attributes">test_missing_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid">test_unicode_byte_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_css-module.html">test_css</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup">test_custom_lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_missing_children">test_missing_children()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_invalid_sequence">test_unicode_byte_invalid_sequence()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_css.CSSTestCase-class.html#test_cssselect">test_cssselect()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_css.CSSTestCase-class.html">CSSTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup_ns_fallback">test_custom_lookup_ns_fallback()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML">test_module_HTML()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_unicode_byte_zero">test_unicode_byte_zero()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup">test_custom_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_attrib_attributes_precedence">test_data_element_attrib_attributes_precedence()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_access">test_module_HTML_access()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_comment">test_unicode_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_custom_lookup_ns_fallback">test_custom_lookup_ns_fallback()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_bool">test_data_element_bool()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_broken">test_module_HTML_broken()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode.UnicodeTestCase-class.html#test_unicode_ns_invalid">test_unicode_ns_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_attrib_attributes_precedence">test_data_element_attrib_attributes_precedence()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg">test_data_element_data_element_arg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_cdata">test_module_HTML_cdata()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_bool">test_data_element_bool()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_pytype">test_data_element_data_element_arg_invalid_pytype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_pretty_print">test_module_HTML_pretty_print()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg">test_data_element_data_element_arg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_xsi">test_data_element_data_element_arg_invalid_xsi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_HTML_unicode">test_module_HTML_unicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_pytype">test_data_element_data_element_arg_invalid_pytype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype">test_data_element_data_element_arg_pytype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_error">test_module_parse_fileobject_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_invalid_xsi">test_data_element_data_element_arg_invalid_xsi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_none">test_data_element_data_element_arg_pytype_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_late_error">test_module_parse_fileobject_late_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype">test_data_element_data_element_arg_pytype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_xsitype">test_data_element_data_element_arg_pytype_xsitype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_fileobject_type_error">test_module_parse_fileobject_type_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_none">test_data_element_data_element_arg_pytype_none()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_xsitype">test_data_element_data_element_arg_xsitype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_gzipobject">test_module_parse_gzipobject()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_pytype_xsitype">test_data_element_data_element_arg_pytype_xsitype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_element_arg">test_data_element_element_arg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html">test_module_parse_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_data_element_arg_xsitype">test_data_element_data_element_arg_xsitype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float">test_data_element_float()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_default_doctype">test_module_parse_html_default_doctype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_element_arg">test_data_element_element_arg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash">test_data_element_float_hash()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_error">test_module_parse_html_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float">test_data_element_float()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr">test_data_element_float_hash_repr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_filelike">test_module_parse_html_filelike()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash">test_data_element_float_hash()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_precision">test_data_element_float_precision()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_module_parse_html_norecover">test_module_parse_html_norecover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_hash_repr">test_data_element_float_hash_repr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int">test_data_element_int()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_module_parse_large_fileobject">test_module_parse_large_fileobject()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_float_precision">test_data_element_float_precision()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int_hash">test_data_element_int_hash()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int">test_data_element_int()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_pytype">test_data_element_invalid_pytype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_int_hash">test_data_element_int_hash()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_xsi">test_data_element_invalid_xsi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_multiple_elementrees">test_multiple_elementrees()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_pytype">test_data_element_invalid_pytype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_NoneType">test_data_element_NoneType()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup">test_namespace_cleanup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder.BuilderTestCase-class.html">BuilderTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_invalid_xsi">test_data_element_invalid_xsi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom">test_data_element_nsmap_custom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_attributes">test_namespace_cleanup_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_NoneType">test_data_element_NoneType()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom_prefixes">test_data_element_nsmap_custom_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_deep">test_namespace_cleanup_deep()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom">test_data_element_nsmap_custom()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_default">test_data_element_nsmap_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_deep_to_top">test_namespace_cleanup_deep_to_top()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_custom_prefixes">test_data_element_nsmap_custom_prefixes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_empty">test_data_element_nsmap_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_keep_prefixes">test_namespace_cleanup_keep_prefixes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_default">test_data_element_nsmap_default()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none">test_data_element_pytype_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_keep_prefixes_top">test_namespace_cleanup_keep_prefixes_top()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_nsmap_empty">test_data_element_nsmap_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat">test_data_element_pytype_none_compat()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespace_cleanup_many">test_namespace_cleanup_many()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none">test_data_element_pytype_none()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes">test_data_element_pytypes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_namespace_lookup">test_namespace_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytype_none_compat">test_data_element_pytype_none_compat()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str">test_data_element_str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_anonymous">test_namespace_nested_anonymous()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.EncodingsTestCase-class.html">EncodingsTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_pytypes">test_data_element_pytypes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_floatliteral">test_data_element_str_floatliteral()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nested_nsmap">test_namespace_nested_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str">test_data_element_str()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_intliteral">test_data_element_str_intliteral()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_namespace_nsmap">test_namespace_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_floatliteral">test_data_element_str_floatliteral()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered">test_data_element_unregistered()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces">test_namespaces()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_str_intliteral">test_data_element_str_intliteral()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr">test_data_element_ustr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_namespaces_after_serialize">test_namespaces_after_serialize()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_unregistered">test_data_element_unregistered()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_floatliteral">test_data_element_ustr_floatliteral()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_copy_element">test_namespaces_copy_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr">test_data_element_ustr()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_intliteral">test_data_element_ustr_intliteral()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default">test_namespaces_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_floatliteral">test_data_element_ustr_floatliteral()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes">test_data_element_xsitypes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_attr">test_namespaces_default_and_attr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode.UnicodeTestCase-class.html">UnicodeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_ustr_intliteral">test_data_element_ustr_intliteral()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed">test_data_element_xsitypes_prefixed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_and_other">test_namespaces_default_and_other()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes">test_data_element_xsitypes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_default_copy_element">test_namespaces_default_copy_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_prefixed">test_data_element_xsitypes_prefixed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi">test_dataelement_xsi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_elementtree">test_namespaces_elementtree()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io.ETreeIOTestCase-class.html">ETreeIOTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_data_element_xsitypes_xsdprefixed">test_data_element_xsitypes_xsdprefixed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_namespaces_reuse_after_move">test_namespaces_reuse_after_move()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi">test_dataelement_xsi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error">test_dataelement_xsi_prefix_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_nested_default_namespace">test_nested_default_namespace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_nsmap">test_dataelement_xsi_nsmap()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_tail">test_date_element_efactory_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_nested_default_namespace_and_other">test_nested_default_namespace_and_other()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dataelement_xsi_prefix_error">test_dataelement_xsi_prefix_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_text">test_date_element_efactory_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_network_dtd">test_network_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_tail">test_date_element_efactory_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate">test_deannotate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_non_io_exception_continues_closing">test_non_io_exception_continues_closing()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_date_element_efactory_text">test_date_element_efactory_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_apos">test_declaration_apos()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_fail">test_write_fail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_deannotate">test_deannotate()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_escape_quote_pid">test_declaration_escape_quote_pid()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access2">test_ns_access2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_write_fails">test_write_fails()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_apos">test_declaration_apos()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_quote_withoutpid">test_declaration_quote_withoutpid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_attr">test_ns_attr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_escape_quote_pid">test_declaration_escape_quote_pid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_ns_classes">test_ns_classes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip">test_write_file_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_declaration_quote_withoutpid">test_declaration_quote_withoutpid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring">test_ns_decl_tostring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_file_gzip_parse">test_write_file_gzip_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_default">test_ns_decl_tostring_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_elementtree">test_deepcopy_elementtree()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd">test_deepcopy_elementtree_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip">test_write_gzip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_elementtree">test_deepcopy_elementtree()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi">test_deepcopy_elementtree_pi()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_ns_events">test_ns_events()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip_doctype">test_write_gzip_doctype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_dtd">test_deepcopy_elementtree_dtd()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html#test_write_gzip_level">test_write_gzip_level()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeWriteTestCase-class.html">ETreeWriteTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_elementtree_pi">test_deepcopy_elementtree_pi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi">test_deepcopy_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_setting">test_ns_setting()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi_dtd">test_deepcopy_pi_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_tag_parse">test_ns_tag_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html">test_write_method_html()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi">test_deepcopy_pi()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_subelement">test_deepcopy_subelement()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html">test_nsclasses</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_text">test_write_method_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_deepcopy_pi_dtd">test_deepcopy_pi_dtd()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_nsmap_prefix_invalid">test_nsmap_prefix_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_write_namespaced_element">test_write_namespaced_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_subelement">test_deepcopy_subelement()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup">test_default_class_lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path">test_object_path()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude">test_xinclude()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup_pull_parser">test_default_class_lookup_pull_parser()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr">test_object_path_addattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude_resolver">test_xinclude_resolver()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup">test_default_class_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_default_namespace">test_default_namespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create">test_object_path_addattr_create()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude_resolver_recursive">test_xinclude_resolver_recursive()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_default_class_lookup_pull_parser">test_default_class_lookup_pull_parser()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken">test_default_parser_HTML_broken()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_element">test_object_path_addattr_create_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html#test_xinclude_text">test_xinclude_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree._XIncludeTestCase-class.html" onclick="show_private();">_XIncludeTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_default_namespace">test_default_namespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname">test_default_tagname()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_create_list">test_object_path_addattr_create_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_XML">test_XML()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_default_parser_HTML_broken">test_default_parser_HTML_broken()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns">test_del_attribute_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_addattr_element">test_object_path_addattr_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_xml_base">test_xml_base()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_default_tagname">test_default_tagname()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed">test_del_attribute_ns_parsed()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_absolute">test_object_path_default_absolute()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xml_base">test_xml_base()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns">test_del_attribute_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert">test_del_insert()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_default_relative">test_object_path_default_relative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_attribute_ns_parsed">test_del_attribute_ns_parsed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setitem">test_del_setitem()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot">test_object_path_dot()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert">test_del_insert()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice">test_del_setslice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_list">test_object_path_dot_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setitem">test_del_setitem()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem">test_delitem()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root">test_object_path_dot_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice">test_del_setslice()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail">test_delitem_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_dot_root_list">test_object_path_dot_root_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem">test_delitem()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice">test_delslice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail">test_object_path_fail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail">test_delitem_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_child_tail">test_delslice_child_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty">test_object_path_fail_parse_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice">test_delslice()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_memory">test_delslice_memory()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_fail_parse_empty_list">test_object_path_fail_parse_empty_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_child_tail">test_delslice_child_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative1">test_delslice_negative1()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_hasattr">test_object_path_hasattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_memory">test_delslice_memory()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2">test_delslice_negative2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index">test_object_path_index()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative1">test_delslice_negative1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step">test_delslice_step()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_lookup">test_object_path_index_fail_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2">test_delslice_negative2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative">test_delslice_step_negative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_fail_parse">test_object_path_index_fail_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step">test_delslice_step()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative2">test_delslice_step_negative2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_index_list">test_object_path_index_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative">test_delslice_step_negative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_tail">test_delslice_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_list">test_object_path_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative2">test_delslice_step_negative2()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths">test_descendant_paths()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns">test_object_path_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_comment_error">test_xmlschema_comment_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_tail">test_delslice_tail()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child">test_descendant_paths_child()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_ns_list">test_object_path_ns_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_default_attributes">test_xmlschema_default_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths">test_descendant_paths()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix">test_descendant_paths_prefix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set">test_object_path_set()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_child">test_descendant_paths_child()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_attributes">test_differing_attributes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create">test_object_path_set_create()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_error_log">test_xmlschema_error_log()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_descendant_paths_prefix">test_descendant_paths_prefix()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_tags">test_differing_tags()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_element">test_object_path_set_create_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_error_log_path">test_xmlschema_error_log_path()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_attributes">test_differing_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dir">test_dir()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_create_list">test_object_path_set_create_list()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_file">test_xmlschema_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_differing_tags">test_differing_tags()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_empty">test_docinfo_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_set_element">test_object_path_set_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_illegal_validation_error">test_xmlschema_illegal_validation_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_dir">test_dir()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_name_only">test_docinfo_name_only()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_object_path_syntax">test_object_path_syntax()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_import_file">test_xmlschema_import_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_empty">test_docinfo_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_public">test_docinfo_public()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html">test_objectify</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_name_only">test_docinfo_name_only()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_system">test_docinfo_system()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html#test_open_namespaced_element">test_open_namespaced_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.HtmlFileTestCase-class.html">HtmlFileTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_public">test_docinfo_public()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html">test_doctestcompare</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse">test_xmlschema_iterparse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_docinfo_system">test_docinfo_system()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_name_only_roundtrip">test_doctype_name_only_roundtrip()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_base_url_docinfo">test_parse_base_url_docinfo()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare-module.html">test_doctestcompare</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_output_override">test_doctype_output_override()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_cdata">test_parse_cdata()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_iterparse_incomplete">test_xmlschema_iterparse_incomplete()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_name_only_roundtrip">test_doctype_name_only_roundtrip()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html">test_dtd</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html#test_xmlschema_nested_resolvers">test_xmlschema_nested_resolvers()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_doctype_output_override">test_doctype_output_override()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd">test_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse">test_xmlschema_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html">test_dtd</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_api_internal">test_dtd_api_internal()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html#test_xmlschema_parse_default_attributes">test_xmlschema_parse_default_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd">test_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid">test_dtd_assertValid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_api_internal">test_dtd_api_internal()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_attrs">test_dtd_attrs()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_assertValid">test_dtd_assertValid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_broken">test_dtd_broken()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_attrs">test_dtd_attrs()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_file">test_dtd_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html#test_parse_error_logging">test_parse_error_logging()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_broken">test_dtd_broken()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal">test_dtd_internal()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaResolversTestCase-class.html">ETreeXMLSchemaResolversTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_file">test_dtd_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal_invalid">test_dtd_internal_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal">test_dtd_internal()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid">test_dtd_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_parse_file_dtd">test_parse_file_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema.ETreeXMLSchemaTestCase-class.html">ETreeXMLSchemaTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_internal_invalid">test_dtd_internal_invalid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid_duplicate_id">test_dtd_invalid_duplicate_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid">test_dtd_invalid()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dtd_io">test_dtd_io()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_boolean">test_xpath_boolean()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_invalid_duplicate_id">test_dtd_invalid_duplicate_id()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_file_not_found">test_dtd_parse_file_not_found()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object">test_parse_file_object()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dtd_io">test_dtd_io()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_invalid">test_dtd_parse_invalid()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object_encoding">test_parse_file_object_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_class_prefix_error">test_xpath_class_prefix_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_file_not_found">test_dtd_parse_file_not_found()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid">test_dtd_parse_valid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_fileobject_unicode">test_parse_fileobject_unicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_invalid">test_dtd_parse_invalid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_file_url">test_dtd_parse_valid_file_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_parser_type_error">test_parse_parser_type_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid">test_dtd_parse_valid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative">test_dtd_parse_valid_relative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_comments">test_parse_remove_comments()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_file_url">test_dtd_parse_valid_file_url()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative_file_url">test_dtd_parse_valid_relative_file_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_remove_pis">test_parse_remove_pis()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">ETreeETXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative">test_dtd_parse_valid_relative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_stringio">test_dtd_stringio()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_stringio">test_parse_stringio()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_parse_valid_relative_file_url">test_dtd_parse_valid_relative_file_url()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dump_none">test_dump_none()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_context_node">test_xpath_context_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_dtd_stringio">test_dtd_stringio()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib">test_efactory_attrib()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_parse_stringio_base_url">test_parse_stringio_base_url()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_document_root">test_xpath_document_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_dump_none">test_dump_none()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool">test_efactory_bool()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_parse_utf8_bom">test_parse_utf8_bom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html#test_xpath_elementtree_error">test_xpath_elementtree_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathClassTestCase-class.html">ETreeXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_attrib">test_efactory_attrib()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float">test_efactory_float()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_with_encoding">test_parse_with_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_bool">test_efactory_bool()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int">test_efactory_int()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parseid">test_parseid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_float">test_efactory_float()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested">test_efactory_nested()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_parser_based_lookup">test_parser_based_lookup()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_int">test_efactory_int()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none">test_efactory_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding">test_parser_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_nested">test_efactory_nested()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str">test_efactory_str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_encoding_unknown">test_parser_encoding_unknown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_none">test_efactory_none()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype">test_efactory_subtype()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io.HttpIOTestCase-class.html#test_parser_input_mix">test_parser_input_mix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io.HttpIOTestCase-class.html">HttpIOTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_str">test_efactory_str()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode">test_efactory_unicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_attrib">test_parser_target_attrib()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_subtype">test_efactory_subtype()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation">test_efactory_value_concatenation()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_cdata">test_parser_target_cdata()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_unicode">test_efactory_unicode()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element">test_element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_comment">test_parser_target_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html#test_xpath_exslt_functions_strings">test_xpath_exslt_functions_strings()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathExsltTestCase-class.html">ETreeXPathExsltTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_efactory_value_concatenation">test_efactory_value_concatenation()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element">test_element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_data">test_parser_target_data()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions">test_xpath_extensions()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element">test_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_element_base">test_element_base()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">test_parser_target_entity()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_error">test_xpath_extensions_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element">test_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_element_base_children">test_element_base_children()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity_unknown">test_parser_target_entity_unknown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_mix">test_xpath_extensions_mix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_element_base">test_element_base()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_contains">test_element_contains()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_close">test_parser_target_error_in_close()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes">test_xpath_extensions_nodes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_element_base_children">test_element_base_children()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation">test_element_creation()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_end">test_parser_target_error_in_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append">test_xpath_extensions_nodes_append()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_contains">test_element_contains()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_element_cyclic_gc_none">test_element_cyclic_gc_none()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start">test_parser_target_error_in_start()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_nodes_append2">test_xpath_extensions_nodes_append2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_element_creation">test_element_creation()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_negative">test_element_indexing_negative()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start_and_close">test_parser_target_error_in_start_and_close()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_extensions_wrong_args">test_xpath_extensions_wrong_args()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_element_cyclic_gc_none">test_element_cyclic_gc_none()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_only_text">test_element_indexing_only_text()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_exception">test_parser_target_feed_exception()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_attribute">test_xpath_list_attribute()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_negative">test_element_indexing_negative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text">test_element_indexing_with_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_feed_no_id_dict">test_parser_target_feed_no_id_dict()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_only_text">test_element_indexing_only_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text2">test_element_indexing_with_text2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_fromstring_exception">test_parser_target_fromstring_exception()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text">test_element_indexing_with_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_colon">test_element_name_colon()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_pi">test_parser_target_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_comment">test_xpath_list_comment()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_indexing_with_text2">test_element_indexing_with_text2()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_empty">test_element_name_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_property">test_parser_target_property()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_elements">test_xpath_list_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_colon">test_element_name_colon()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_quote">test_element_name_quote()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_parser_target_recover">test_parser_target_recover()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_empty">test_element_name_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_space">test_element_name_space()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_tag">test_parser_target_tag()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_quote">test_element_name_quote()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_names">test_element_names()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_version">test_parser_version()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_name_space">test_element_name_space()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested">test_element_nested()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi">test_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_text_parent_no_smart_strings">test_xpath_list_text_parent_no_smart_strings()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_names">test_element_names()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested_with_text">test_element_nested_with_text()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi">test_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_list_unicode_text_parent">test_xpath_list_unicode_text_parent()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested">test_element_nested()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_nsmap">test_element_nsmap()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_pi">test_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace">test_xpath_namespace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_nested_with_text">test_element_nested_with_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom">test_element_nsmap_custom()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_pi_base">test_pi_base()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_namespace_empty">test_xpath_namespace_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_nsmap">test_element_nsmap()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom_prefixes">test_element_nsmap_custom_prefixes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi_nonsense">test_pi_nonsense()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_ns">test_xpath_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom">test_element_nsmap_custom()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_default">test_element_nsmap_default()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_parse">test_pi_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_custom_prefixes">test_element_nsmap_custom_prefixes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_empty">test_element_nsmap_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_attrib">test_pi_pseudo_attributes_attrib()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_default">test_element_nsmap_default()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_refcycle">test_element_refcycle()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pi_pseudo_attributes_get">test_pi_pseudo_attributes_get()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_number">test_xpath_number()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_element_nsmap_empty">test_element_nsmap_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax">test_element_sax()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle">test_pickle()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_xpath_on_context_node">test_xpath_on_context_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_element_refcycle">test_element_refcycle()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_default_ns_prefix">test_element_sax_default_ns_prefix()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html">NSPrefixSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_boolelement">test_pickle_boolelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_xpath_on_foreign_context_node">test_xpath_on_foreign_context_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax">test_element_sax()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax_ns">test_element_sax_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_elementtree">test_pickle_elementtree()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_default_ns_prefix">test_element_sax_default_ns_prefix()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_ns_prefix">test_element_sax_ns_prefix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html">NSPrefixSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_floattelement">test_pickle_floattelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_element_sax_ns">test_element_sax_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_twin_ns_prefix">test_element_sax_twin_ns_prefix()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html">NSPrefixSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_intelement">test_pickle_intelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_text_from_other_document">test_xpath_text_from_other_document()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_ns_prefix">test_element_sax_ns_prefix()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html">NSPrefixSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes">test_element_with_attributes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_noneelement">test_pickle_noneelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables">test_xpath_variables()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html#test_element_sax_twin_ns_prefix">test_element_sax_twin_ns_prefix()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.NSPrefixSaxTestCase-class.html">NSPrefixSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra">test_element_with_attributes_extra()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pickle_strelement">test_pickle_strelement()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_xpath_variables_nodeset">test_xpath_variables_nodeset()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes">test_element_with_attributes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix">test_prefix()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra">test_element_with_attributes_extra()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_keywords">test_element_with_attributes_keywords()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_prefix_default_ns">test_prefix_default_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_ns">test_element_with_attributes_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_processinginstruction">test_processinginstruction()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_keywords">test_element_with_attributes_keywords()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_write_empty">test_element_write_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_proxy_collect_siblings">test_proxy_collect_siblings()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsinil_deannotate">test_xsinil_deannotate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_ns">test_element_with_attributes_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_write_text">test_element_write_text()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_proxy_collect_siblings_text">test_proxy_collect_siblings_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_xsitype_deannotate">test_xsitype_deannotate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_write_empty">test_element_write_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html">test_elementpath</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_hashing">test_proxy_hashing()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html">test_xslt</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_element_write_text">test_element_write_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html">test_elementtree</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse">test_proxy_reuse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt">test_xslt()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath-module.html">test_elementpath</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ElementTree">test_ElementTree()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_del_root">test_proxy_reuse_after_del_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_access_control_repr">test_xslt_access_control_repr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html">test_elementtree</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree">test_elementtree()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ProxyTestCase-class.html#test_proxy_reuse_after_gc">test_proxy_reuse_after_gc()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ProxyTestCase-class.html">ProxyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_apply_error_log">test_xslt_apply_error_log()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ElementTree">test_ElementTree()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_find_qname">test_elementtree_find_qname()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_simple_target">test_pull_from_simple_target()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_broken">test_xslt_broken()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree">test_elementtree()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_ns_qname">test_elementtree_findall_ns_qname()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_simple_target_start_end">test_pull_from_simple_target_start_end()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_copy">test_xslt_copy()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_find_qname">test_elementtree_find_qname()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_qname">test_elementtree_findall_qname()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_tree_builder">test_pull_from_tree_builder()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_ns_qname">test_elementtree_findall_ns_qname()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath">test_elementtree_getelementpath()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.XMLPullParserTest-class.html#test_pull_from_tree_builder_subclass">test_pull_from_tree_builder_subclass()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.XMLPullParserTest-class.html">XMLPullParserTest</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_findall_qname">test_elementtree_findall_qname()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath_ns">test_elementtree_getelementpath_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_empty">test_pyannotate_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath">test_elementtree_getelementpath()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator">test_elementtree_getiterator()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_ignore_old">test_pyannotate_ignore_old()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse">test_xslt_document_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_getelementpath_ns">test_elementtree_getelementpath_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter">test_elementtree_getiterator_filter()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pyannotate_use_old">test_pyannotate_use_old()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_allow">test_xslt_document_parse_allow()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator">test_elementtree_getiterator()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath">test_elementtree_getpath()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html">test_pyclasslookup</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny">test_xslt_document_parse_deny()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter">test_elementtree_getiterator_filter()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath_partial">test_elementtree_getpath_partial()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_pypy_proxy_collect">test_pypy_proxy_collect()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_parse_deny_all">test_xslt_document_parse_deny_all()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath">test_elementtree_getpath()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_parser_target">test_elementtree_parser_target()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation">test_pytype_annotation()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML">test_xslt_document_XML()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_elementtree_getpath_partial">test_elementtree_getpath_partial()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_parser_target_type_error">test_elementtree_parser_target_type_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_empty">test_pytype_annotation_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_document_XML_resolver">test_xslt_document_XML_resolver()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_parser_target">test_elementtree_parser_target()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_empty_decl">test_empty_decl()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_annotation_use_old">test_pytype_annotation_use_old()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_elementtree_error">test_xslt_elementtree_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_elementtree_parser_target_type_error">test_elementtree_parser_target_type_error()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_empty_parse">test_empty_parse()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_deannotate">test_pytype_deannotate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_empty">test_xslt_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_empty_decl">test_empty_decl()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_pytype_xsitype_annotation">test_pytype_xsitype_annotation()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding">test_xslt_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_errors.ErrorTestCase-class.html#test_empty_parse">test_empty_parse()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors.ErrorTestCase-class.html">ErrorTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname">test_qname()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_encoding_override">test_xslt_encoding_override()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_latin1">test_encoding_8bit_latin1()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib">test_qname_attrib()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_encoding">test_encoding()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio">test_encoding_8bit_parse_stringio()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib_resolve">test_qname_attrib_resolve()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_include">test_xslt_include()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_latin1">test_encoding_8bit_latin1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_xml">test_encoding_8bit_xml()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_getset">test_qname_attribute_getset()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio">test_encoding_8bit_parse_stringio()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_exact">test_encoding_exact()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve">test_qname_attribute_resolve()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_xml">test_encoding_8bit_xml()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_exact">test_encoding_exact()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring">test_encoding_tostring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_cmp">test_qname_cmp()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding">test_encoding_tostring_default_encoding()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_colon">test_qname_colon()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring">test_encoding_tostring()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub">test_encoding_tostring_sub()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_element">test_qname_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding">test_encoding_tostring_default_encoding()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_empty">test_qname_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub">test_encoding_tostring_sub()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown">test_encoding_tostring_unknown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_namespace_localname">test_qname_namespace_localname()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_encoding_tostring_utf16">test_encoding_tostring_utf16()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_none">test_qname_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_multiple_parameters">test_xslt_multiple_parameters()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown">test_encoding_tostring_unknown()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_utf8_bom">test_encoding_utf8_bom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_space">test_qname_space()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_encoding_tostring_utf16">test_encoding_tostring_utf16()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_write_default_encoding">test_encoding_write_default_encoding()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_qname_text_resolve">test_qname_text_resolve()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_invalid">test_xslt_parameter_invalid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_utf8_bom">test_encoding_utf8_bom()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append">test_entity_append()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace">test_register_namespace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_missing">test_xslt_parameter_missing()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_write_default_encoding">test_encoding_write_default_encoding()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append_parsed">test_entity_append_parsed()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_type_stringify">test_registered_type_stringify()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_parameter_xpath">test_xslt_parameter_xpath()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append">test_entity_append()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_error">test_entity_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_registered_types">test_registered_types()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_append_parsed">test_entity_append_parsed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_parse">test_entity_parse()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html#test_registry">test_registry()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses.ETreeNamespaceClassesTestCase-class.html">ETreeNamespaceClassesTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_error">test_entity_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_restructure">test_entity_restructure()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_boolean">test_rel_xpath_boolean()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_parse">test_entity_parse()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_values">test_entity_values()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html#test_rel_xpath_list_elements">test_rel_xpath_list_elements()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeXPathTestCase-class.html">ETreeXPathTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_restructure">test_entity_restructure()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_equal_input">test_equal_input()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html">test_relaxng</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_id">test_xslt_pi_embedded_id()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_entity_values">test_entity_values()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html">test_errors</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng">test_relaxng()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_embedded_xmlid">test_xslt_pi_embedded_xmlid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_equal_input">test_equal_input()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_escaping">test_escaping()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact">test_relaxng_compact()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get">test_xslt_pi_get()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html">test_errors</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html">test_etree</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact_file_obj">test_relaxng_compact_file_obj()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_escaping">test_escaping()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_etree_parse_io_error">test_etree_parse_io_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html#test_relaxng_compact_str">test_relaxng_compact_str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.RelaxNGCompactTestCase-class.html">RelaxNGCompactTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_all_reversed">test_xslt_pi_get_all_reversed()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html">test_etree</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_attributes">test_etree_sax_attributes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_elementtree_error">test_relaxng_elementtree_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_get_unknown">test_xslt_pi_get_unknown()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_io._IOTestCaseBase-class.html#test_etree_parse_io_error">test_etree_parse_io_error()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_io._IOTestCaseBase-class.html" onclick="show_private();">_IOTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment">test_etree_sax_comment()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_error">test_relaxng_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_pi_set_new">test_xslt_pi_set_new()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_attributes">test_etree_sax_attributes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment_root">test_etree_sax_comment_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_generic_error">test_relaxng_generic_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment">test_etree_sax_comment()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double">test_etree_sax_double()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_include">test_relaxng_include()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_comment_root">test_etree_sax_comment_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error">test_etree_sax_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema">test_relaxng_invalid_schema()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_double">test_etree_sax_double()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2">test_etree_sax_error2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema2">test_relaxng_invalid_schema2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error">test_etree_sax_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns">test_etree_sax_handler_default_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema3">test_relaxng_invalid_schema3()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_error2">test_etree_sax_error2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns_None">test_etree_sax_handler_default_ns_None()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_invalid_schema4">test_relaxng_invalid_schema4()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.Py3XSLTTestCase-class.html">Py3XSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns">test_etree_sax_handler_default_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns">test_etree_sax_no_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_shortcut">test_relaxng_shortcut()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_handler_default_ns_None">test_etree_sax_handler_default_ns_None()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns_attributes">test_etree_sax_no_ns_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html#test_relaxng_stringio">test_relaxng_stringio()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng.ETreeRelaxNGTestCase-class.html">ETreeRelaxNGTestCase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns">test_etree_sax_no_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns1">test_etree_sax_ns1()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove">test_remove()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_no_ns_attributes">test_etree_sax_no_ns_attributes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns2">test_etree_sax_ns2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns1">test_etree_sax_ns1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns_attributes">test_etree_sax_ns_attributes()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns2">test_etree_sax_ns2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi">test_etree_sax_pi()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_ns_attributes">test_etree_sax_ns_attributes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root">test_etree_sax_pi_root()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace">test_replace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating">test_remove_while_iterating()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_write_output_failure">test_xslt_write_output_failure()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi">test_etree_sax_pi()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns">test_etree_sax_redefine_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new">test_replace_new()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace">test_replace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_write_output_file">test_xslt_write_output_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_pi_root">test_etree_sax_pi_root()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple">test_etree_sax_simple()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_replace_new">test_replace_new()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#test_xslt_write_output_file_path">test_xslt_write_output_file_path()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_redefine_ns">test_etree_sax_redefine_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests-module.html">tests</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml-module.html">lxml</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_etree_sax_simple">test_etree_sax_simple()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty">test_resolve_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_bytes_dtd">test_resolve_bytes_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.QName-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.QName-class.html">QName</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error">test_resolve_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_evil_class_lookup">test_evil_class_lookup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_empty">test_resolve_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd">test_resolve_file_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_error">test_resolve_error()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Entity-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Entity-class.html" onclick="show_private();">_Entity</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html#test_evil_class_lookup">test_evil_class_lookup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup.ClassLookupTestCase-class.html">ClassLookupTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd">test_resolve_filelike_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_file_dtd">test_resolve_file_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.ObjectifiedElement-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.ObjectifiedElement-class.html">ObjectifiedElement</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_math">test_exslt_math()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd">test_resolve_filename_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filelike_dtd">test_resolve_filelike_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="xml.etree.ElementTree.Element-class.html#text">text</a><br />
 <span class="index-where">(in&nbsp;<a href="xml.etree.ElementTree.Element-class.html">Element</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match">test_exslt_regexp_match()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative">test_resolve_filename_dtd_relative()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd">test_resolve_filename_dtd()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.doctestcompare.LXMLOutputChecker-class.html#text_compare">text_compare()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.doctestcompare.LXMLOutputChecker-class.html">LXMLOutputChecker</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match1">test_exslt_regexp_match1()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd">test_resolve_string_dtd()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_filename_dtd_relative">test_resolve_filename_dtd_relative()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.HtmlMixin-class.html#text_content">text_content()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.HtmlMixin-class.html">HtmlMixin</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match2">test_exslt_regexp_match2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root">test_root()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_resolve_string_dtd">test_resolve_string_dtd()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TEXTAREA">TEXTAREA</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_match_groups">test_exslt_regexp_match_groups()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html">test_sax</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_root">test_root()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.TextareaElement-class.html">TextareaElement</a></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_replace">test_exslt_regexp_replace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom">test_sax_to_pulldom()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html">test_sax</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TFOOT">TFOOT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_regexp_test">test_exslt_regexp_test()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom_multiple_namespaces">test_sax_to_pulldom_multiple_namespaces()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom">test_sax_to_pulldom()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TH">TH</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str">test_exslt_str()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types">test_schema_types()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html#test_sax_to_pulldom_multiple_namespaces">test_sax_to_pulldom_multiple_namespaces()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax.ETreeSaxTestCase-class.html">ETreeSaxTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#THEAD">THEAD</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html#test_exslt_str_attribute_replace">test_exslt_str_attribute_replace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeEXSLTTestCase-class.html">ETreeEXSLTTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed">test_schema_types_prefixed()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types">test_schema_types()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_builder-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_builder-module.html">lxml.tests.test_builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html">test_schematron</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_schema_types_prefixed">test_schema_types_prefixed()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_classlookup-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_classlookup-module.html">lxml.tests.test_classlookup</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element">test_extension_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_elements_only">test_extension_element_apply_templates_elements_only()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html">test_schematron</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_dtd-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd-module.html">lxml.tests.test_dtd</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates">test_extension_element_apply_templates()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_remove_blank_text">test_extension_element_apply_templates_remove_blank_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_elementtree-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_elements_only">test_extension_element_apply_templates_elements_only()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_abstract">test_schematron_abstract()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron">test_schematron()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_errors-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_errors-module.html">lxml.tests.test_errors</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_remove_blank_text">test_extension_element_apply_templates_remove_blank_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_assertValid">test_schematron_assertValid()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_abstract">test_schematron_abstract()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser-module.html">lxml.tests.test_htmlparser</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node">test_extension_element_apply_templates_target_node()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_call">test_schematron_call()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_assertValid">test_schematron_assertValid()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_http_io-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_http_io-module.html">lxml.tests.test_http_io</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_apply_templates_target_node_doc">test_extension_element_apply_templates_target_node_doc()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_customization">test_schematron_customization()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_call">test_schematron_call()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_comment_pi_context">test_extension_element_comment_pi_context()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_customization">test_schematron_customization()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_io-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_io-module.html">lxml.tests.test_io</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_content">test_extension_element_content()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron-module.html">lxml.tests.test_isoschematron</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_doc_context">test_extension_element_doc_context()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_empty_pattern">test_schematron_empty_pattern()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_elementtree_error">test_schematron_elementtree_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_nsclasses-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_nsclasses-module.html">lxml.tests.test_nsclasses</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children">test_extension_element_process_children()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_error_log">test_schematron_error_log()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_empty_pattern">test_schematron_empty_pattern()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_append_only">test_extension_element_process_children_to_append_only()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_fail_on_report">test_schematron_fail_on_report()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_error_log">test_schematron_error_log()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_pyclasslookup-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_pyclasslookup-module.html">lxml.tests.test_pyclasslookup</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_to_read_only_raise">test_extension_element_process_children_to_read_only_raise()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_element">test_schematron_from_element()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_fail_on_report">test_schematron_fail_on_report()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_relaxng-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_relaxng-module.html">lxml.tests.test_relaxng</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_process_children_with_subextension_element">test_extension_element_process_children_with_subextension_element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_file">test_schematron_from_file()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_element">test_schematron_from_element()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_sax-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_sax-module.html">lxml.tests.test_sax</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#test_extension_element_raise">test_extension_element_raise()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_tree">test_schematron_from_tree()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_file">test_schematron_from_file()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_schematron-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron-module.html">lxml.tests.test_schematron</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions1">test_extensions1()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_args">test_schematron_invalid_args()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_external_document-module.html">test_external_document</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_from_tree">test_schematron_from_tree()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html#test_extensions2">test_extensions2()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtFuncTestCase-class.html">ETreeXSLTExtFuncTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema">test_schematron_invalid_schema()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_external_document.ExternalDocumentTestCase-class.html#test_external_document_adoption">test_external_document_adoption()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_external_document.ExternalDocumentTestCase-class.html">ExternalDocumentTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_args">test_schematron_invalid_args()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_unicode-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_unicode-module.html">lxml.tests.test_unicode</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_external_document-module.html">test_external_document</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests-module.html">lxml.tests</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_attributes">test_extra_attributes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema">test_schematron_invalid_schema()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xmlschema-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xmlschema-module.html">lxml.tests.test_xmlschema</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_external_document.ExternalDocumentTestCase-class.html#test_external_document_adoption">test_external_document_adoption()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_external_document.ExternalDocumentTestCase-class.html">ExternalDocumentTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_children">test_extra_children()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator-module.html">lxml.tests.test_xpathevaluator</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_attributes">test_extra_attributes()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_preceding_text">test_failure_preceding_text()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_empty">test_schematron_invalid_schema_empty()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_xslt-module.html#this_dir">this_dir</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt-module.html">lxml.tests.test_xslt</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html#test_extra_children">test_extra_children()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_doctestcompare.DoctestCompareTest-class.html">DoctestCompareTest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_Element">test_failure_trailing_Element()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadingTestCase-class.html">ThreadingTestCase</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_preceding_text">test_failure_preceding_text()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_text">test_failure_trailing_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases">test_schematron_phases()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html#test_schematron_invalid_schema_namespace">test_schematron_invalid_schema_namespace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_schematron.ETreeSchematronTestCase-class.html">ETreeSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_threading.ThreadPipelineTestCase-class.html">ThreadPipelineTestCase</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_threading-module.html">lxml.tests.test_threading</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_Element">test_failure_trailing_Element()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases_kwarg">test_schematron_phases_kwarg()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases">test_schematron_phases()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.diff.InsensitiveSequenceMatcher-class.html#threshold">threshold</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff.InsensitiveSequenceMatcher-class.html" onclick="show_private();">InsensitiveSequenceMatcher</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_failure_trailing_text">test_failure_trailing_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_relaxng_embedded">test_schematron_relaxng_embedded()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_phases_kwarg">test_schematron_phases_kwarg()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TITLE">TITLE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_result_report">test_schematron_result_report()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_relaxng_embedded">test_schematron_relaxng_embedded()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_etree-module.html#tmpfile">tmpfile()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron">test_schematron_store_schematron()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_result_report">test_schematron_result_report()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.Classes-class.html#toggle">toggle()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.Classes-class.html">Classes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_xslt">test_schematron_store_xslt()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_schematron">test_schematron_store_schematron()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.diff.token-class.html">token</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_validate">test_schematron_validate()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover">test_feed_parser_recover()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_store_xslt">test_schematron_store_xslt()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize">tokenize()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_xmlschema_embedded">test_schematron_xmlschema_embedded()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover_no_id_dict">test_feed_parser_recover_no_id_dict()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_validate">test_schematron_validate()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.diff-module.html#tokenize_annotated">tokenize_annotated()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff-module.html">lxml.html.diff</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover">test_feed_parser_recover()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_set_decl_html">test_set_decl_html()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html#test_schematron_xmlschema_embedded">test_schematron_xmlschema_embedded()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_isoschematron.ETreeISOSchematronTestCase-class.html">ETreeISOSchematronTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.defs-module.html#top_level_tags">top_level_tags</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.defs-module.html">lxml.html.defs</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_feed_parser_recover_no_id_dict">test_feed_parser_recover_no_id_dict()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_public">test_set_decl_public()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html#test_set_decl_html">test_set_decl_html()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_htmlparser.HtmlParserTestCase-class.html">HtmlParserTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.XSLT-class.html#tostring">tostring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.XSLT-class.html">XSLT</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_system">test_set_decl_system()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html">BytesIOXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_public">test_set_decl_public()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tostring">tostring()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html" onclick="show_private();">_XMLPullParserTest</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_set_string">test_set_string()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html#test_set_decl_system">test_set_decl_system()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_dtd.ETreeDtdTestCase-class.html">ETreeDtdTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tostringlist">tostringlist()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.BytesIOXmlFileTestCase-class.html">BytesIOXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_not_closing">test_filelike_not_closing()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_set_string">test_set_string()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree-module.html#tounicode">tounicode()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_close">test_filelike_close()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html#test_find">test_find()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TR">TR</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html#test_filelike_not_closing">test_filelike_not_closing()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase-class.html">SimpleFileLikeXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_empty">test_set_text_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorDomains-class.html#TREE">TREE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorDomains-class.html">ErrorDomains</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html#test_find">test_find()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementpath.EtreeElementPathTestCase-class.html">EtreeElementPathTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_none">test_set_text_none()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall">test_findall()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_empty">test_set_text_empty()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_INVALID_DEC">TREE_INVALID_DEC</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_different_nsmaps">test_findall_different_nsmaps()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_none">test_set_text_none()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr">test_setattr()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_INVALID_HEX">TREE_INVALID_HEX</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall">test_findall()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr_nonunicode">test_setattr_nonunicode()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_empty_prefix">test_findall_empty_prefix()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr">test_setattr()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_NOT_UTF8">TREE_NOT_UTF8</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_different_nsmaps">test_findall_different_nsmaps()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem">test_setitem()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setattr_nonunicode">test_setattr_nonunicode()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.tests.test_objectify-module.html#TREE_PYTYPE">TREE_PYTYPE</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify-module.html">lxml.tests.test_objectify</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_empty_prefix">test_findall_empty_prefix()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem2">test_setitem2()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem">test_setitem()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.ErrorTypes-class.html#TREE_UNTERMINATED_ENTITY">TREE_UNTERMINATED_ENTITY</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ErrorTypes-class.html">ErrorTypes</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem2">test_setitem2()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setitem_assert">test_setitem_assert()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree.TreeBuilder-class.html">TreeBuilder</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_syntax_error">test_findall_syntax_error()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_setitem_assert">test_setitem_assert()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_indexerror">test_setitem_indexerror()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="xml.etree.ElementTree.TreeBuilder-class.html">TreeBuilder</a></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_findall_ns">test_findall_ns()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_replace">test_setitem_replace()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#test_flush">test_flush()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_indexerror">test_setitem_indexerror()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.builder-module.html#TT">TT</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.builder-module.html">lxml.html.builder</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#test_findall_syntax_error">test_findall_syntax_error()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string">test_setitem_string()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_flush">test_flush()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_replace">test_setitem_replace()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._LogEntry-class.html#type">type</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._LogEntry-class.html" onclick="show_private();">_LogEntry</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html#test_flush">test_flush()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile.TempPathXmlFileTestCase-class.html">TempPathXmlFileTestCase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string_special">test_setitem_string_special()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstring">test_fromstring()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string">test_setitem_string()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.InputElement-class.html#type">type</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.InputElement-class.html">InputElement</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html#test_flush">test_flush()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html" onclick="show_private();">_XmlFileTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_tail">test_setitem_tail()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#test_setitem_string_special">test_setitem_string_special()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.PyType-class.html#type_check">type_check</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.PyType-class.html">PyType</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstring">test_fromstring()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice">test_setslice()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_tail">test_setitem_tail()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._LogEntry-class.html#type_name">type_name</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._LogEntry-class.html" onclick="show_private();">_LogEntry</a>)</span></td>
 </tr>
 <tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all">test_setslice_all()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index">&nbsp;</td>
-</tr>
-<tr>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_empty">test_setslice_all_empty()</a><br />
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice">test_setslice()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 <td width="33%" class="link-index">&nbsp;</td>
 </tr>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c668adf..c7fd4df 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 04912b4..923ef5c 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a3b4a64..ab5efc6 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bf330a1..2016747 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 21f30a0..1a1d9fc 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6243710..feb6510 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 91c8362..19168e5 100644 (file)
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NoneElement-class.html">NoneElement</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.html.diff.token-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.html.diff.token-class.html" onclick="show_private();">token</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren">_test_getchildren()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_multiple_extension_elements_with_output_parent">_test_multiple_extension_elements_with_output_parent()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__ne__">__ne__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.BoolElement-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.BoolElement-class.html">BoolElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html#_test_multiple_extension_elements_with_output_parent">_test_multiple_extension_elements_with_output_parent()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTExtElementTestCase-class.html">ETreeXSLTExtElementTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle">_test_pickle()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.objectify.StringElement-class.html#__ne__">__ne__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.StringElement-class.html">StringElement</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NoneElement-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NoneElement-class.html">NoneElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html#_test_pickle">_test_pickle()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_objectify.ObjectifyTestCase-class.html">ObjectifyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html#_test_python_error_logging">_test_python_error_logging()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__neg__">__neg__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html#_test_python_error_logging">_test_python_error_logging()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeErrorLogTest-class.html">ETreeErrorLogTest</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding">_test_wrong_unicode_encoding()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.builder.ElementMaker-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.builder.ElementMaker-class.html">ElementMaker</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.ObjectifiedDataElement-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.ObjectifiedDataElement-class.html">ObjectifiedDataElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding">_test_wrong_unicode_encoding()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#_test_xpath_compile_unicode">_test_xpath_compile_unicode()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">ETreeETXPathClassTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.AncestorsIterator-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.AncestorsIterator-class.html" onclick="show_private();">AncestorsIterator</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.PyType-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.PyType-class.html">PyType</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html#_test_xpath_compile_unicode">_test_xpath_compile_unicode()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xpathevaluator.ETreeETXPathClassTestCase-class.html">ETreeETXPathClassTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.builder.ElementMaker-class.html#_typemap">_typemap</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.builder.ElementMaker-class.html">ElementMaker</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.AttributeBasedElementClassLookup-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.AttributeBasedElementClassLookup-class.html">AttributeBasedElementClassLookup</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.StringElement-class.html#__repr__">__repr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.StringElement-class.html">StringElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.builder.ElementMaker-class.html#_typemap">_typemap</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.builder.ElementMaker-class.html">ElementMaker</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.isoschematron.Schematron-class.html#_validation_errors">_validation_errors</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.isoschematron.Schematron-class.html">Schematron</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.C14NError-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.C14NError-class.html">C14NError</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.etree._Element-class.html#__reversed__">__reversed__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree._Element-class.html" onclick="show_private();">_Element</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.isoschematron.Schematron-class.html#_validation_errors">_validation_errors</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.isoschematron.Schematron-class.html">Schematron</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree._Validator-class.html">_Validator</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.CDATA-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.CDATA-class.html">CDATA</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rlshift__">__rlshift__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._Validator-class.html">_Validator</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.ElementInclude-module.html#_wrap_et_loader">_wrap_et_loader()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.ElementInclude-module.html">lxml.ElementInclude</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.CommentBase-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.CommentBase-class.html">CommentBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rmod__">__rmod__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.ElementInclude-module.html#_wrap_et_loader">_wrap_et_loader()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.ElementInclude-module.html">lxml.ElementInclude</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement">_writeElement()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.CustomElementClassLookup-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.CustomElementClassLookup-class.html">CustomElementClassLookup</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.StringElement-class.html#__rmod__">__rmod__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.StringElement-class.html">StringElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement">_writeElement()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_writeElement">_writeElement()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DTD-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTD-class.html">DTD</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rmul__">__rmul__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html#_writeElement">_writeElement()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree.ETreeOnlyTestCase-class.html">ETreeOnlyTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile">_writeElementFile()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DTDError-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTDError-class.html">DTDError</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.StringElement-class.html#__rmul__">__rmul__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.StringElement-class.html">StringElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile">_writeElementFile()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html" onclick="show_private();">_ETreeTestCaseBase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html">_XIncludeTestCase</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DTDParseError-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTDParseError-class.html">DTDParseError</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__ror__">__ror__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_etree._XIncludeTestCase-class.html">_XIncludeTestCase</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_etree-module.html">lxml.tests.test_etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#_xml_schema_root">_xml_schema_root</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DTDValidateError-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DTDValidateError-class.html">DTDValidateError</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rpow__">__rpow__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.isoschematron-module.html#_xml_schema_root">_xml_schema_root</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.isoschematron-module.html">lxml.isoschematron</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html">_XmlFileTestCaseBase</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DocInfo-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DocInfo-class.html" onclick="show_private();">DocInfo</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rrshift__">__rrshift__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_incremental_xmlfile._XmlFileTestCaseBase-class.html">_XmlFileTestCaseBase</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_incremental_xmlfile-module.html">lxml.tests.test_incremental_xmlfile</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html">_XMLPullParserTest</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.DocumentInvalid-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.DocumentInvalid-class.html">DocumentInvalid</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rshift__">__rshift__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_elementtree._XMLPullParserTest-class.html">_XMLPullParserTest</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_elementtree-module.html">lxml.tests.test_elementtree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree._XPathEvaluatorBase-class.html">_XPathEvaluatorBase</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ETCompatXMLParser-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ETCompatXMLParser-class.html">ETCompatXMLParser</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rsub__">__rsub__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._XPathEvaluatorBase-class.html">_XPathEvaluatorBase</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_xslt_setup">_xslt_setup()</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ETXPath-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ETXPath-class.html">ETXPath</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rtruediv__">__rtruediv__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html#_xslt_setup">_xslt_setup()</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.tests.test_xslt.ETreeXSLTTestCase-class.html">ETreeXSLTTestCase</a>)</span></td>
+<td width="33%" class="link-index"><a href="lxml.etree._XSLTProcessingInstruction-class.html">_XSLTProcessingInstruction</a><br />
+<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ElementBase-class.html#__new__">__new__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ElementBase-class.html">ElementBase</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.NumberElement-class.html#__rxor__">__rxor__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.NumberElement-class.html">NumberElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._XSLTProcessingInstruction-class.html">_XSLTProcessingInstruction</a><br />
+<td width="33%" class="link-index"><a href="lxml.etree._XSLTResultTree-class.html">_XSLTResultTree</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
 </tr>
 <tr>
 <span class="index-where">(in&nbsp;<a href="lxml.etree.ElementChildIterator-class.html" onclick="show_private();">ElementChildIterator</a>)</span></td>
 <td width="33%" class="link-index"><a href="lxml.objectify.ObjectifiedElement-class.html#__setattr__">__setattr__()</a><br />
 <span class="index-where">(in&nbsp;<a href="lxml.objectify.ObjectifiedElement-class.html">ObjectifiedElement</a>)</span></td>
-<td width="33%" class="link-index"><a href="lxml.etree._XSLTResultTree-class.html">_XSLTResultTree</a><br />
-<span class="index-where">(in&nbsp;<a href="lxml.etree-module.html">lxml.etree</a>)</span></td>
+<td width="33%" class="link-index">&nbsp;</td>
 </tr>
 <tr>
 <td width="33%" class="link-index"><a href="lxml.etree.ElementClassLookup-class.html#__new__">__new__()</a><br />
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df08b55..0348aa5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 10e844d..77ab2a4 100644 (file)
@@ -239,7 +239,7 @@ with statically linked libraries.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd4949d..dd7dccc 100644 (file)
@@ -130,7 +130,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0a368d..6d5ecfb 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d6e0b46..1b2896d 100644 (file)
@@ -537,7 +537,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 26888e7..fdd4f74 100644 (file)
@@ -230,7 +230,7 @@ exceptions.BaseException --+           |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 40d69c3..65a59b5 100644 (file)
@@ -207,8 +207,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 0x7f9bafe9da50&gt;,
- 'partial': &lt;capsule object &quot;PyObject *&quot; at 0x7f9bafe9da80&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 0x7f9baf<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 0x7f6cce0ac270&gt;,
+ 'partial': &lt;capsule object &quot;PyObject *&quot; at 0x7f6cce0ac2a0&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 0x7f6cce<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -249,8 +249,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 0x7f9bafe9da50&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 0x7f9bafe9da80&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 0x7f6cce0ac270&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 0x7f6cce0ac2a0&gt;<code class="variable-group">}</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -289,7 +289,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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2d79998..31503da 100644 (file)
@@ -439,7 +439,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 953749f..a52e391 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4680d03..28c36e3 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 539057e..a5a1928 100644 (file)
@@ -309,7 +309,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 71fbf68..8490688 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 15cc5b0..55020a0 100644 (file)
@@ -312,7 +312,7 @@ lxml extensions + HTML support.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d01aad5..b4c96bb 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e574007..d002340 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 81d077f..ee3569a 100644 (file)
@@ -1127,7 +1127,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e6996d2..d6d519e 100644 (file)
@@ -230,7 +230,7 @@ doctest.OutputChecker --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bc1554b..e5212e0 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index edfc329..af6f42f 100644 (file)
@@ -350,7 +350,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 64510f2..dfb4b47 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.3.1
+        4.3.2
       </p>
 </div><!-- ==================== CLASSES ==================== -->
 <a name="section-Classes"></a>
@@ -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, 3, 1, 0)"><code class="variable-group">(</code>4<code class="variable-op">, </code>3<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, 3, 2, 0)"><code class="variable-group">(</code>4<code class="variable-op">, </code>3<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 0x7f9bb4249f30&gt;,
+lDoc *, PyObject *, int)&quot; at 0x7f6cd29a50c0&gt;,
  'appendChild': &lt;capsule object &quot;void (struct LxmlElement *, struct Lx\
-mlElement *)&quot; at 0x7f9bb425a750&gt;,
+mlElement *)&quot; at 0x7f6cd29a58a0&gt;,
  'appendChildToElement': &lt;capsule object &quot;int (struct LxmlElement *, s\
-truct LxmlElement *)&quot; at 0x7f9bb425a780&gt;,
+truct LxmlElement *)&quot; at 0x7f6cd29a58d0&gt;,
  'attributeValue': &lt;capsule object &quot;PyObject *(xmlNode *, xmlAttr *)&quot; \
-at 0x7f9bb425a420&gt;,
+at 0x7f6cd29a5570&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>
@@ -2504,13 +2504,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 0x7f9bb4249f30&gt;<code class="variable-op">,</code>
+lDoc *, PyObject *, int)&quot; at 0x7f6cd29a50c0&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 0x7f9bb425a750&gt;<code class="variable-op">,</code>
+mlElement *)&quot; at 0x7f6cd29a58a0&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 0x7f9bb425a780&gt;<code class="variable-op">,</code>
+truct LxmlElement *)&quot; at 0x7f6cd29a58d0&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 0x7f9bb425a420&gt;<code class="variable-op">,</code>
+at 0x7f6cd29a5570&gt;<code class="variable-op">,</code>
 <code class="variable-ellipsis">...</code>
 </pre></td></tr></table>
 </dd>
@@ -2576,7 +2576,7 @@ at 0x7f9bb425a420&gt;<code class="variable-op">,</code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f7f22ab..ffed090 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7abc615..473030f 100644 (file)
@@ -294,7 +294,7 @@ missing.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b14738a..7bda236 100644 (file)
@@ -246,7 +246,7 @@ Error during C14N serialisation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 66f36ce..a6ec7f8 100644 (file)
@@ -237,7 +237,7 @@ a string
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a12cf6c..2084966 100644 (file)
@@ -350,7 +350,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1c15014..da9a93f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3d6d5f0..72d39ab 100644 (file)
@@ -412,7 +412,7 @@ catalog.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 41f6d30..3af88b8 100644 (file)
@@ -252,7 +252,7 @@ Base class for DTD errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60fd8fc..fa707fc 100644 (file)
@@ -248,7 +248,7 @@ Error while parsing a DTD.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c8c63ff..22be3b6 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7c12daa..32f9cb9 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3ba7f26..43cc66d 100644 (file)
@@ -248,7 +248,7 @@ method fails.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 84fd0e0..4fbab1e 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b6aa193..7d501b7 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7256f93..9826997 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2dfc1f1..1e55355 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f40d4d..e435021 100644 (file)
@@ -233,7 +233,7 @@ Superclass of Element class lookups.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8f2a92..8d7e5b2 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60beec1..ca68bc4 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8397d51..c4f3922 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index be3f1da..2f3319d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7d23289..fe2dc96 100644 (file)
@@ -351,7 +351,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2ccd6ad..e4b7a4c 100644 (file)
@@ -246,7 +246,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fdad637..e5ade6b 100644 (file)
@@ -486,7 +486,7 @@ Libxml2 error domains
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f74c053..1a08dd1 100644 (file)
@@ -244,7 +244,7 @@ Libxml2 error levels
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c54f36c..3eeda0a 100644 (file)
@@ -5407,7 +5407,7 @@ Libxml2 error types
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 18649b0..ab8e4d0 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 282d31c..ec1f75a 100644 (file)
@@ -348,7 +348,7 @@ reasons.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2ca082..ca672c4 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ca15bd..5d5e1d7 100644 (file)
@@ -288,7 +288,7 @@ this one.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index de08c64..0d39260 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 97d91f8..58f46e8 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3d30a37..34debc4 100644 (file)
@@ -248,7 +248,7 @@ Error registering a namespace extension.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 356dcd0..192fc73 100644 (file)
@@ -352,7 +352,7 @@ called after object creation.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7bf3939..a388af0 100644 (file)
@@ -341,7 +341,7 @@ exceptions.BaseException --+           |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 69f7fed..86fd7ef 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a0da0b4..b01ac75 100644 (file)
@@ -246,7 +246,7 @@ Internal lxml parser error.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd2080b..63cfe4a 100644 (file)
@@ -434,7 +434,7 @@ format.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 57cf791..ab06335 100644 (file)
@@ -290,7 +290,7 @@ iteration methods).</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7fd9981..8438e36 100644 (file)
@@ -488,7 +488,7 @@ their text content.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3e1f16f..e7d1de8 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cb7e6a1..b17e9ff 100644 (file)
@@ -252,7 +252,7 @@ Base class for RelaxNG errors.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7432a82..dd578d2 100644 (file)
@@ -549,7 +549,7 @@ Libxml2 RelaxNG error types
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3ea50b2..38a3f7d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d80b517..b510a3b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 696be6c..0326495 100644 (file)
@@ -455,7 +455,7 @@ argument.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6595be2..e26ed0c 100644 (file)
@@ -367,7 +367,7 @@ errors in lxml.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0028999..a772137 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5e0a8f..dc3cbf1 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b4e8469..b76ae75 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 90ad5ed..a79bafd 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 44866d1..394b20a 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7d3bbb7..f99d563 100644 (file)
@@ -383,7 +383,7 @@ element.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fcf3796..879aad9 100644 (file)
@@ -292,7 +292,7 @@ processing.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1a89afe..801c98c 100644 (file)
@@ -246,7 +246,7 @@ Error during XInclude processing.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e75e14..7e9ce3b 100644 (file)
@@ -369,7 +369,7 @@ apply to the default parser.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ea50c2b..6dde585 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 094835a..4f90846 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 78a7f58..3ee1163 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c8cb91b..8f2c50f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d573cce..4be6bfb 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce528e9..74d7fb0 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index db20497..e664ad4 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 51db45e..8d75c1f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb0597d..6d9dbde 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 701f7e7..35a801d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 08ee94e..6431900 100644 (file)
@@ -254,7 +254,7 @@ Error during XPath evaluation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0038c9c..7abb46f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9d1b939..b4c62c0 100644 (file)
@@ -250,7 +250,7 @@ Error handling an XPath result.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b39cbab..3ee03c3 100644 (file)
@@ -244,7 +244,7 @@ exceptions.BaseException --+               |
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c47b95d..3ecc39f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 29ce4a7..afae0f1 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ca3f1a4..d711875 100644 (file)
@@ -248,7 +248,7 @@ Error running an XSL transformation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8bf94c2..2b2467b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 590d755..88727d1 100644 (file)
@@ -398,7 +398,7 @@ case.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd206dc..568dd7a 100644 (file)
@@ -248,7 +248,7 @@ Error registering an XSLT extension.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4fb6e8d..61e7a09 100644 (file)
@@ -248,7 +248,7 @@ Error parsing a stylesheet document.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3ea1c74..65c3b71 100644 (file)
@@ -226,7 +226,7 @@ Error serialising an XSLT result.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d34c895..7ae8158 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1f00134..e7cf43f 100644 (file)
@@ -347,7 +347,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 924548e..c8ed095 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f803ef3..af2dd04 100644 (file)
@@ -228,7 +228,7 @@ document is cleaned up.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1014668..a5a657e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d272aa7..8723c18 100644 (file)
@@ -1643,7 +1643,7 @@ parents.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3c1ea0d..e0df3ce 100644 (file)
@@ -277,7 +277,7 @@ Dead but public. :)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 849dac8..c0d8cde 100644 (file)
@@ -279,7 +279,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2266e9d..80e42ee 100644 (file)
@@ -268,7 +268,7 @@ basestring --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2f491fa..4197ba2 100644 (file)
@@ -232,7 +232,7 @@ Dead but public. :)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 55d7fca..c5b1718 100644 (file)
@@ -1079,7 +1079,7 @@ class directly.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dd5c81a..1a16028 100644 (file)
@@ -334,7 +334,7 @@ basestring --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd77262..dc5a379 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 93d92e7..f145c9e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3030e27..0b938d8 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2c2f415..1a431a9 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 38447ce..0e64908 100644 (file)
@@ -571,7 +571,7 @@ entries.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 269909e..dbcf265 100644 (file)
@@ -195,7 +195,8 @@ object --+
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="filename"></a><span class="summary-name">filename</span>
+        <a name="filename"></a><span class="summary-name">filename</span><br />
+      The file path where the report originated, if any.
     </td>
   </tr>
 <tr>
@@ -224,7 +225,8 @@ object --+
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a name="message"></a><span class="summary-name">message</span>
+        <a name="message"></a><span class="summary-name">message</span><br />
+      The log message string.
     </td>
   </tr>
 <tr>
@@ -357,7 +359,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2bcd93b..9d4297d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5eb9dca..7085d21 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 95f89a3..22847c0 100644 (file)
@@ -230,7 +230,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0afb376..cb32625 100644 (file)
@@ -263,7 +263,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 93e0e8b..77d1d0f 100644 (file)
@@ -347,7 +347,7 @@ Base class for XML validators.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8bd3d56..8b5ec9e 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 68d37e7..800c884 100644 (file)
@@ -391,7 +391,7 @@ the processing instruction.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 49fe2c4..d773623 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e258c10..b820112 100644 (file)
@@ -285,7 +285,7 @@ xmlfile.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e722af..e1d2a31 100644 (file)
@@ -489,7 +489,7 @@ attribute default values are requested.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d331cce..062aed2 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f29ded7..205b991 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f6ea46e..31a3c16 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a8889ba..1a5ee1b 100644 (file)
@@ -4057,7 +4057,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b69a995..46bd900 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f48bb13..beef16f 100644 (file)
@@ -541,7 +541,7 @@ checkboxes with the same name.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d63a55f..98da7d5 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 99d694f..5bae5ec 100644 (file)
@@ -264,7 +264,7 @@ keyword.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2fa0b96..248706a 100644 (file)
@@ -121,7 +121,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0edb998..589ae54 100644 (file)
@@ -683,7 +683,7 @@ _abcoll.Container --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f95019c..989f0f9 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c358230..ceffa83 100644 (file)
@@ -255,7 +255,7 @@ objects.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 154c949..11de0e1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7926dbe..de00b60 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bf9192b..3f1a792 100644 (file)
@@ -365,7 +365,7 @@ Element classes.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ebfe99e..05be780 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 97bdcd3..9fecf4e 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2508a65..4e80dd1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5deebbf..32002e8 100644 (file)
@@ -406,7 +406,7 @@ checked, this returns None.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f7a28b..e6a7945 100644 (file)
@@ -432,7 +432,7 @@ nput' or local-name(.) = 'textarea')]
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a935307..78f0fe9 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4506524..9e289b6 100644 (file)
@@ -312,7 +312,7 @@ can't be found.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index edd5133..a8e62a9 100644 (file)
@@ -584,7 +584,7 @@ to unselect the option.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 851285c..e3908b8 100644 (file)
@@ -362,7 +362,7 @@ unchecks any other value).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9a99e0a..154386d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5bb3da..67d1bcd 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fa48c35..12dc731 100644 (file)
@@ -267,7 +267,7 @@ parser like this:</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ad3b89a..7aeed52 100644 (file)
@@ -254,7 +254,7 @@ of the resulting document.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8605531..09c3d01 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ff6843e..3d0a2a0 100644 (file)
@@ -436,7 +436,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9988cb2..18ca84f 100644 (file)
@@ -749,7 +749,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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7042e25..7b6f722 100644 (file)
@@ -1324,7 +1324,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8762538..a13cc09 100644 (file)
@@ -775,7 +775,7 @@ more sneaky attempts.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 686470c..2162183 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7aeaf9e..303dca3 100644 (file)
@@ -235,7 +235,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3718d28..6e81025 100644 (file)
@@ -1413,7 +1413,7 @@ includes the elements tail.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3c7901c..5a8bb72 100644 (file)
@@ -1807,7 +1807,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e9dbaa3..6bf5337 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7451938..d7e959e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 49e2a30..c37b1a6 100644 (file)
@@ -243,7 +243,7 @@ triple with n==0.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d21aa73..6e4c14e 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8a0fc75..d3dc770 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dae0ca1..9211b07 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4cd986d..3a262c7 100644 (file)
@@ -401,7 +401,7 @@ space.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8fea7c0..202f05f 100644 (file)
@@ -565,7 +565,7 @@ escendant-or-self::x:textarea
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ceaab60..ba64375 100644 (file)
@@ -794,7 +794,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e0a7243..fbb5f2f 100644 (file)
@@ -304,7 +304,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 85b8118..27631fe 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index accc235..7466dcc 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index feaee94..85d28c9 100644 (file)
@@ -674,7 +674,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 54b25c5..bf4a4c0 100644 (file)
@@ -257,7 +257,7 @@ html5lib.treebuilders.getTreeBuilder(treeType)</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b6523f5..d507aa2 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4c1471a..c1cc456 100644 (file)
@@ -488,7 +488,7 @@ keyword.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cdf7fe1..a4a6d94 100644 (file)
@@ -546,7 +546,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 40e6ad6..b21ab0e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 59f29b5..942b983 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ab2f734..8f36f2b 100644 (file)
@@ -117,7 +117,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 99c9ae1..36faa4e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 19eb2e0..cfbf142 100644 (file)
@@ -101,7 +101,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b01d04..509ea82 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 231894c..9281313 100644 (file)
@@ -633,7 +633,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 07ea386..8d38c34 100644 (file)
@@ -628,7 +628,7 @@ been turned off).
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2b8e2f4..894cda5 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.3.1
+        4.3.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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7fb8ba5..087d2c2 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c4c6286..d402e2b 100644 (file)
@@ -366,7 +366,7 @@ some text
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 10876d6..746733b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fe9e1ed..7f58387 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 68fb4d6..ed946d4 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index da014a4..c40e5cb 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f257330..8759d5d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2f94889..055d38a 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4cfd982..b17c411 100644 (file)
@@ -410,7 +410,7 @@ doing.</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 12eaf46..739e395 100644 (file)
@@ -861,7 +861,7 @@ returned in document order.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 045e63d..f8e41b2 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5beda46..534ecea 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 496d793..80a7027 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f410b2c..ee612b0 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2135dbb..306900d 100644 (file)
@@ -108,7 +108,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c07fb09..d633f77 100644 (file)
@@ -240,8 +240,8 @@ them against a SAX ContentHandler.</td>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
-        <a href="lxml.sax-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'_getNsTag': &lt;capsule object &quot;PyObject *(PyObject *)&quot; at 0x7f9baf60e6\
-c0&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">_getNsTag</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *(PyObj<code class="variable-ellipsis">...</code></code>
+        <a href="lxml.sax-module.html#__pyx_capi__" class="summary-name">__pyx_capi__</a> = <code title="{'_getNsTag': &lt;capsule object &quot;PyObject *(PyObject *)&quot; at 0x7f6ccdd4ff\
+00&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">_getNsTag</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *(PyObj<code class="variable-ellipsis">...</code></code>
     </td>
   </tr>
 <tr>
@@ -282,8 +282,8 @@ c0&gt;}"><code class="variable-group">{</code><code class="variable-quote">'</co
   <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">_getNsTag</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *(PyObject *)&quot; at 0x7f9baf60e6<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
-c0&gt;<code class="variable-group">}</code>
+<code class="variable-group">{</code><code class="variable-quote">'</code><code class="variable-string">_getNsTag</code><code class="variable-quote">'</code><code class="variable-op">: </code>&lt;capsule object &quot;PyObject *(PyObject *)&quot; at 0x7f6ccdd4ff<span class="variable-linewrap"><img src="crarr.png" alt="\" /></span>
+00&gt;<code class="variable-group">}</code>
 </pre></td></tr></table>
 </dd>
   </dl>
@@ -322,7 +322,7 @@ c0&gt;<code class="variable-group">}</code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4e513fa..634fb51 100644 (file)
@@ -642,7 +642,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 78fe450..0a03fe8 100644 (file)
@@ -897,7 +897,7 @@ Locator provides useful information.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c708b76..0f67735 100644 (file)
@@ -379,7 +379,7 @@ Produces SAX events for an element and children.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 27c054f..cd1dd6f 100644 (file)
@@ -210,7 +210,7 @@ General SAX error.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a6c37f7..bc298c5 100644 (file)
@@ -175,7 +175,7 @@ namespace registry mechanism</em>    </li>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9fd3c09..8073e6d 100644 (file)
@@ -103,7 +103,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6049685..c308666 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c1132da..cab0752 100644 (file)
@@ -609,7 +609,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb8d44b..c8a7caa 100644 (file)
@@ -414,7 +414,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cecac25..0b127ff 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index acf5ee0..e20e073 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e2716da..8063d8a 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d79d1c4..4961177 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e1ff495..3e9d093 100644 (file)
@@ -264,7 +264,7 @@ Simple HTTP request dumper for tests.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index df01676..64ace7a 100644 (file)
@@ -198,7 +198,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d48b828..bc02cc6 100644 (file)
@@ -247,7 +247,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7196081..0bf3218 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 041827b..c27a56c 100644 (file)
@@ -331,7 +331,7 @@ message.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6620046..f5582bc 100644 (file)
@@ -1178,7 +1178,7 @@ ElementTree.XML(&quot;&quot;&quot;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9877316..ae86848 100644 (file)
@@ -1487,7 +1487,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c69316e..7ba3c57 100644 (file)
@@ -677,7 +677,7 @@ unserialize(&quot;&quot;&quot;
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0ca26c9..97a5314 100644 (file)
@@ -637,7 +637,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aa6b19f..62102b4 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index fb26ba5..da2862b 100644 (file)
@@ -259,7 +259,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index aa2fd49..9282da3 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 18e2adc..c111e8b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 66cc712..55ac325 100644 (file)
@@ -1270,7 +1270,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5434d3d..c45de94 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8d85598..9ebea4d 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3cf705c..c9e66ec 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0e8c70b..ca3d7c8 100644 (file)
@@ -212,7 +212,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 00cd7f7..0233e12 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4e4b134..5f0b6aa 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 38a1bf7..a3a4523 100644 (file)
@@ -332,7 +332,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cd37ab7..19311ec 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6da35b3..3ea1d1b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bf6c13b..0f0d25b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e8d5e5d..1d3868a 100644 (file)
@@ -1236,7 +1236,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 069094b..937cab5 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c268f99..6b89864 100644 (file)
@@ -228,7 +228,7 @@ Tests for the ElementPath implementation.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3842dc7..76afb9e 100644 (file)
@@ -634,7 +634,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 65e9f17..608e9ad 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index befcb75..b2decdb 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b5b80d..4716eed 100644 (file)
@@ -2665,8 +2665,8 @@ lxml.tests.test_xpathevaluator.tag
 xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-896', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
 <a name="L790"></a><tt class="py-lineno"> 790</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L791"></a><tt class="py-lineno"> 791</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iteration_crash"></a><div id="_ETreeTestCaseBase.test_iteration_crash-def"><a name="L792"></a><tt class="py-lineno"> 792</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_crash-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_crash');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iteration_crash-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_crash-expanded"><a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-comment"># this would cause a crash in the past</tt> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_set_tail_empty"></a><div id="_ETreeTestCaseBase.test_iteration_set_tail_empty-def"><a name="L792"></a><tt class="py-lineno"> 792</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_set_tail_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_set_tail_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty">test_iteration_set_tail_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_set_tail_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_set_tail_empty-expanded"><a name="L793"></a><tt class="py-lineno"> 793</tt>  <tt class="py-line">        <tt class="py-comment"># this would cause a crash in the past</tt> </tt>
 <a name="L794"></a><tt class="py-lineno"> 794</tt>  <tt class="py-line">        <tt id="link-897" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
@@ -2679,300 +2679,290 @@ lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="retu
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
 lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-899', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
-<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt id="link-900" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-900', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-901" class="py-name"><a title="lxml.etree
+<a name="L795"></a><tt class="py-lineno"> 795</tt>  <tt class="py-line">        <tt id="link-900" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-900', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-901" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.html5parser.fromstring
+lxml.html.soupparser.fromstring
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-901', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;p&gt;&lt;/p&gt;x&lt;/html&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt id="link-902" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-902', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-903" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-903', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+</div><a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_clear_tail"></a><div id="_ETreeTestCaseBase.test_iteration_clear_tail-def"><a name="L799"></a><tt class="py-lineno"> 799</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_clear_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_clear_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail">test_iteration_clear_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_clear_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_clear_tail-expanded"><a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt class="py-comment"># this would cause a crash in the past</tt> </tt>
+<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt id="link-904" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.html5parser.fromstring
+lxml.html.soupparser.fromstring
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-904', 'fromstring', 'link-805');">fromstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-905" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-901', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-902" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-905', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-906" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-902', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;p&gt;&lt;/p&gt;x&lt;/html&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L796"></a><tt class="py-lineno"> 796</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt id="link-903" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-903', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L797"></a><tt class="py-lineno"> 797</tt>  <tt class="py-line">            <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-904" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-904', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-</div><a name="L798"></a><tt class="py-lineno"> 798</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iteration_reversed"></a><div id="_ETreeTestCaseBase.test_iteration_reversed-def"><a name="L799"></a><tt class="py-lineno"> 799</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_reversed-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_reversed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iteration_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_reversed-expanded"><a name="L800"></a><tt class="py-lineno"> 800</tt>  <tt class="py-line">        <tt id="link-905" class="py-name"><a title="lxml.etree.XML
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-906', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
+<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt id="link-907" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-907', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-908" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.html5parser.fromstring
+lxml.html.soupparser.fromstring
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-908', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;p&gt;&lt;/p&gt;x&lt;/html&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt id="link-909" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-909', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">            <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-910" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-910', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+</div><a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_reversed"></a><div id="_ETreeTestCaseBase.test_iteration_reversed-def"><a name="L806"></a><tt class="py-lineno"> 806</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_reversed-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_reversed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_reversed-expanded"><a name="L807"></a><tt class="py-lineno"> 807</tt>  <tt class="py-line">        <tt id="link-911" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-905', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-906" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-911', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-912" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-906', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-907" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-912', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-913" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-907', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L801"></a><tt class="py-lineno"> 801</tt>  <tt class="py-line">        <tt id="link-908" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-908', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-909" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-913', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt id="link-914" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-914', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-915" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-909', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-910" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-910', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L802"></a><tt class="py-lineno"> 802</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L803"></a><tt class="py-lineno"> 803</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">reversed</tt><tt class="py-op">(</tt><tt id="link-911" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-911', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L804"></a><tt class="py-lineno"> 804</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-912" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-912', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-913" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-915', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-916" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-916', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">reversed</tt><tt class="py-op">(</tt><tt id="link-917" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-917', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-918" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-918', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-919" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-913', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L805"></a><tt class="py-lineno"> 805</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'three'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'one'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L806"></a><tt class="py-lineno"> 806</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iteration_subelement"></a><div id="_ETreeTestCaseBase.test_iteration_subelement-def"><a name="L807"></a><tt class="py-lineno"> 807</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_subelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_subelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iteration_subelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_subelement-expanded"><a name="L808"></a><tt class="py-lineno"> 808</tt>  <tt class="py-line">        <tt id="link-914" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-919', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'three'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'one'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_subelement"></a><div id="_ETreeTestCaseBase.test_iteration_subelement-def"><a name="L814"></a><tt class="py-lineno"> 814</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_subelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_subelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_subelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_subelement-expanded"><a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">        <tt id="link-920" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-914', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-915" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-920', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-921" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-915', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-916" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-921', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-922" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-916', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L809"></a><tt class="py-lineno"> 809</tt>  <tt class="py-line"> </tt>
-<a name="L810"></a><tt class="py-lineno"> 810</tt>  <tt class="py-line">        <tt id="link-917" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-917', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-918" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-922', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line"> </tt>
+<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">        <tt id="link-923" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-923', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-924" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-918', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-919" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-919', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L811"></a><tt class="py-lineno"> 811</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L812"></a><tt class="py-lineno"> 812</tt>  <tt class="py-line">        <tt id="link-920" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-924', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-925" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-925', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line">        <tt id="link-926" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-920', 'add', 'link-74');">add</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L813"></a><tt class="py-lineno"> 813</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-921" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-921', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L814"></a><tt class="py-lineno"> 814</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-922" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-922', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-923" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-926', 'add', 'link-74');">add</a></tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L820"></a><tt class="py-lineno"> 820</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-927" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-927', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-928" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-928', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-929" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-923', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L815"></a><tt class="py-lineno"> 815</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-924" class="py-name"><a title="lxml.html.CheckboxValues.add
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-929', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt id="link-930" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-924', 'add', 'link-74');">add</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L816"></a><tt class="py-lineno"> 816</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-925" class="py-name"><a title="lxml.etree
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-930', 'add', 'link-74');">add</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-931" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-925', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-926" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-926', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-927" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-927', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'four'</tt><tt class="py-op">)</tt> </tt>
-<a name="L817"></a><tt class="py-lineno"> 817</tt>  <tt class="py-line">                <tt id="link-928" class="py-name"><a title="lxml.html.CheckboxValues.add
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-931', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-932" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-932', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-933" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-933', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'four'</tt><tt class="py-op">)</tt> </tt>
+<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">                <tt id="link-934" class="py-name"><a title="lxml.html.CheckboxValues.add
 lxml.html.Classes.add
-lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-928', 'add', 'link-74');">add</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L818"></a><tt class="py-lineno"> 818</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'three'</tt><tt class="py-op">,</tt> <tt class="py-string">'four'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L819"></a><tt class="py-lineno"> 819</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iteration_del_child"></a><div id="_ETreeTestCaseBase.test_iteration_del_child-def"><a name="L820"></a><tt class="py-lineno"> 820</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_del_child-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_del_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iteration_del_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_del_child-expanded"><a name="L821"></a><tt class="py-lineno"> 821</tt>  <tt class="py-line">        <tt id="link-929" class="py-name"><a title="lxml.etree.XML
+lxml.html.MultipleSelectOptions.add" class="py-name" href="#" onclick="return doclink('link-934', 'add', 'link-74');">add</a></tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'three'</tt><tt class="py-op">,</tt> <tt class="py-string">'four'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_del_child"></a><div id="_ETreeTestCaseBase.test_iteration_del_child-def"><a name="L827"></a><tt class="py-lineno"> 827</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_del_child-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_del_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_del_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_del_child-expanded"><a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">        <tt id="link-935" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-929', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-930" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-935', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-936" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-930', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-931" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-936', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-937" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-931', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L822"></a><tt class="py-lineno"> 822</tt>  <tt class="py-line"> </tt>
-<a name="L823"></a><tt class="py-lineno"> 823</tt>  <tt class="py-line">        <tt id="link-932" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-932', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-933" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-937', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"> </tt>
+<a name="L830"></a><tt class="py-lineno"> 830</tt>  <tt class="py-line">        <tt id="link-938" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-938', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-939" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-933', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-934" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-934', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L824"></a><tt class="py-lineno"> 824</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L825"></a><tt class="py-lineno"> 825</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-935" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-935', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L826"></a><tt class="py-lineno"> 826</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-936" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-936', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-937" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-939', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-940" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-940', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two&gt;Two&lt;/two&gt;Hm&lt;three/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-941" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-941', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-942" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-942', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-943" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-937', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L827"></a><tt class="py-lineno"> 827</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt id="link-938" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-938', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L828"></a><tt class="py-lineno"> 828</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L829"></a><tt class="py-lineno"> 829</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iteration_double"></a><div id="_ETreeTestCaseBase.test_iteration_double-def"><a name="L830"></a><tt class="py-lineno"> 830</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_double-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_double');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iteration_double-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_double-expanded"><a name="L831"></a><tt class="py-lineno"> 831</tt>  <tt class="py-line">        <tt id="link-939" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-943', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">            <tt class="py-keyword">del</tt> <tt id="link-944" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-944', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iteration_double"></a><div id="_ETreeTestCaseBase.test_iteration_double-def"><a name="L837"></a><tt class="py-lineno"> 837</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iteration_double-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iteration_double');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iteration_double-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iteration_double-expanded"><a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">        <tt id="link-945" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-939', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-940" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-945', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-946" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-940', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-941" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-946', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-947" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-941', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L832"></a><tt class="py-lineno"> 832</tt>  <tt class="py-line"> </tt>
-<a name="L833"></a><tt class="py-lineno"> 833</tt>  <tt class="py-line">        <tt id="link-942" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-942', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-943" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-947', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line"> </tt>
+<a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line">        <tt id="link-948" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-948', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-949" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-943', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-944" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-944', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L834"></a><tt class="py-lineno"> 834</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L835"></a><tt class="py-lineno"> 835</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el0</tt> <tt class="py-keyword">in</tt> <tt id="link-945" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-945', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L836"></a><tt class="py-lineno"> 836</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-946" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-946', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el0</tt><tt class="py-op">.</tt><tt id="link-947" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-949', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-950" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-950', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;&lt;one/&gt;&lt;two/&gt;&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L842"></a><tt class="py-lineno"> 842</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el0</tt> <tt class="py-keyword">in</tt> <tt id="link-951" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-951', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">            <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-952" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-952', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el0</tt><tt class="py-op">.</tt><tt id="link-953" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-947', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L837"></a><tt class="py-lineno"> 837</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el1</tt> <tt class="py-keyword">in</tt> <tt id="link-948" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-948', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L838"></a><tt class="py-lineno"> 838</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-949" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-949', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el1</tt><tt class="py-op">.</tt><tt id="link-950" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-953', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">el1</tt> <tt class="py-keyword">in</tt> <tt id="link-954" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-954', 'root', 'link-50');">root</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">                <tt class="py-name">result</tt><tt class="py-op">.</tt><tt id="link-955" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-955', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">el1</tt><tt class="py-op">.</tt><tt id="link-956" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-950', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L839"></a><tt class="py-lineno"> 839</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L840"></a><tt class="py-lineno"> 840</tt>  <tt class="py-line"> </tt>
-<a name="L841"></a><tt class="py-lineno"> 841</tt>  <tt class="py-line">    <tt id="link-951" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-951', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_itertext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_itertext"></a><div id="_ETreeTestCaseBase.test_itertext-def"><a name="L842"></a><tt class="py-lineno"> 842</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_itertext-toggle" onclick="return toggle('_ETreeTestCaseBase.test_itertext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext">test_itertext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_itertext-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_itertext-expanded"><a name="L843"></a><tt class="py-lineno"> 843</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
-<a name="L844"></a><tt class="py-lineno"> 844</tt>  <tt class="py-line">        <tt id="link-952" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-956', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt><tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">,</tt> <tt class="py-string">'one'</tt><tt class="py-op">,</tt> <tt class="py-string">'two'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line"> </tt>
+<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">    <tt id="link-957" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-957', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_itertext'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_itertext"></a><div id="_ETreeTestCaseBase.test_itertext-def"><a name="L849"></a><tt class="py-lineno"> 849</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_itertext-toggle" onclick="return toggle('_ETreeTestCaseBase.test_itertext');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext">test_itertext</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_itertext-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_itertext-expanded"><a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
+<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">        <tt id="link-958" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-952', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-953" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-958', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-959" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-953', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-954" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-959', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-960" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-954', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L845"></a><tt class="py-lineno"> 845</tt>  <tt class="py-line">        <tt id="link-955" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-955', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-956" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-960', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L852"></a><tt class="py-lineno"> 852</tt>  <tt class="py-line">        <tt id="link-961" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-961', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-962" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-956', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-957" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-957', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root&gt;RTEXT&lt;a&gt;&lt;/a&gt;ATAIL&lt;b/&gt;&lt;c&gt;CTEXT&lt;/c&gt;CTAIL&lt;/root&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L846"></a><tt class="py-lineno"> 846</tt>  <tt class="py-line"> </tt>
-<a name="L847"></a><tt class="py-lineno"> 847</tt>  <tt class="py-line">        <tt id="link-958" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-962', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-963" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-963', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root&gt;RTEXT&lt;a&gt;&lt;/a&gt;ATAIL&lt;b/&gt;&lt;c&gt;CTEXT&lt;/c&gt;CTAIL&lt;/root&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line"> </tt>
+<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt id="link-964" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-958', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-959" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-959', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-960" class="py-name" targets="Method lxml.etree._Element.itertext()=lxml.etree._Element-class.html#itertext"><a title="lxml.etree._Element.itertext" class="py-name" href="#" onclick="return doclink('link-960', 'itertext', 'link-960');">itertext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L848"></a><tt class="py-lineno"> 848</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"RTEXT"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATAIL"</tt><tt class="py-op">,</tt> <tt class="py-string">"CTEXT"</tt><tt class="py-op">,</tt> <tt class="py-string">"CTAIL"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L849"></a><tt class="py-lineno"> 849</tt>  <tt class="py-line">                          <tt id="link-961" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-964', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-965" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-965', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-966" class="py-name" targets="Method lxml.etree._Element.itertext()=lxml.etree._Element-class.html#itertext"><a title="lxml.etree._Element.itertext" class="py-name" href="#" onclick="return doclink('link-966', 'itertext', 'link-966');">itertext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"RTEXT"</tt><tt class="py-op">,</tt> <tt class="py-string">"ATAIL"</tt><tt class="py-op">,</tt> <tt class="py-string">"CTEXT"</tt><tt class="py-op">,</tt> <tt class="py-string">"CTAIL"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line">                          <tt id="link-967" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-961', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L850"></a><tt class="py-lineno"> 850</tt>  <tt class="py-line"> </tt>
-<a name="L851"></a><tt class="py-lineno"> 851</tt>  <tt class="py-line">    <tt id="link-962" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-962', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_itertext_child'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_itertext_child"></a><div id="_ETreeTestCaseBase.test_itertext_child-def"><a name="L852"></a><tt class="py-lineno"> 852</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_itertext_child-toggle" onclick="return toggle('_ETreeTestCaseBase.test_itertext_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext_child">test_itertext_child</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_itertext_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_itertext_child-expanded"><a name="L853"></a><tt class="py-lineno"> 853</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
-<a name="L854"></a><tt class="py-lineno"> 854</tt>  <tt class="py-line">        <tt id="link-963" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-967', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line"> </tt>
+<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">    <tt id="link-968" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-968', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_itertext_child'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_itertext_child"></a><div id="_ETreeTestCaseBase.test_itertext_child-def"><a name="L859"></a><tt class="py-lineno"> 859</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_itertext_child-toggle" onclick="return toggle('_ETreeTestCaseBase.test_itertext_child');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_itertext_child">test_itertext_child</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_itertext_child-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_itertext_child-expanded"><a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
+<a name="L861"></a><tt class="py-lineno"> 861</tt>  <tt class="py-line">        <tt id="link-969" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-963', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-964" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-969', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-970" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-964', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-965" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-970', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-965', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L855"></a><tt class="py-lineno"> 855</tt>  <tt class="py-line">        <tt id="link-966" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-966', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-967" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-971', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">        <tt id="link-972" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-972', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-973" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-967', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-968" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-968', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root&gt;RTEXT&lt;a&gt;&lt;/a&gt;ATAIL&lt;b/&gt;&lt;c&gt;CTEXT&lt;/c&gt;CTAIL&lt;/root&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L856"></a><tt class="py-lineno"> 856</tt>  <tt class="py-line"> </tt>
-<a name="L857"></a><tt class="py-lineno"> 857</tt>  <tt class="py-line">        <tt id="link-969" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-973', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-974" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-974', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;root&gt;RTEXT&lt;a&gt;&lt;/a&gt;ATAIL&lt;b/&gt;&lt;c&gt;CTEXT&lt;/c&gt;CTAIL&lt;/root&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line"> </tt>
+<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">        <tt id="link-975" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-969', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-970" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-970', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-971" class="py-name"><a title="lxml.etree._Element.itertext" class="py-name" href="#" onclick="return doclink('link-971', 'itertext', 'link-960');">itertext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L858"></a><tt class="py-lineno"> 858</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"CTEXT"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L859"></a><tt class="py-lineno"> 859</tt>  <tt class="py-line">                          <tt id="link-972" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-975', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-976" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-976', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-977" class="py-name"><a title="lxml.etree._Element.itertext" class="py-name" href="#" onclick="return doclink('link-977', 'itertext', 'link-966');">itertext</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"CTEXT"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">                          <tt id="link-978" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-972', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L860"></a><tt class="py-lineno"> 860</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_findall"></a><div id="_ETreeTestCaseBase.test_findall-def"><a name="L861"></a><tt class="py-lineno"> 861</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_findall-toggle" onclick="return toggle('_ETreeTestCaseBase.test_findall');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_findall-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_findall-expanded"><a name="L862"></a><tt class="py-lineno"> 862</tt>  <tt class="py-line">        <tt id="link-973" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-978', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_findall"></a><div id="_ETreeTestCaseBase.test_findall-def"><a name="L868"></a><tt class="py-lineno"> 868</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_findall-toggle" onclick="return toggle('_ETreeTestCaseBase.test_findall');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall">test_findall</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_findall-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_findall-expanded"><a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt id="link-979" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-973', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-974" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-979', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-980" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-974', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-975" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-980', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-981" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-975', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L863"></a><tt class="py-lineno"> 863</tt>  <tt class="py-line">        <tt id="link-976" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-976', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-977" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-981', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line">        <tt id="link-982" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-982', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-983" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-977', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-978" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-978', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;b/&gt;&lt;c&gt;&lt;b/&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L864"></a><tt class="py-lineno"> 864</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-979" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-979', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-980" class="py-name" targets="Method lxml.etree._Element.findall()=lxml.etree._Element-class.html#findall,Method lxml.etree._ElementTree.findall()=lxml.etree._ElementTree-class.html#findall"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-980', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">"c"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L865"></a><tt class="py-lineno"> 865</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-981" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-981', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-982" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-982', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//c"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L866"></a><tt class="py-lineno"> 866</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-983" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-983', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-984" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-984', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L867"></a><tt class="py-lineno"> 867</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-985" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-985', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-986" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-986', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L868"></a><tt class="py-lineno"> 868</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-987" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-987', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-988', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-<a name="L869"></a><tt class="py-lineno"> 869</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-989" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-989', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-990', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L870"></a><tt class="py-lineno"> 870</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_findall_ns"></a><div id="_ETreeTestCaseBase.test_findall_ns-def"><a name="L871"></a><tt class="py-lineno"> 871</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_findall_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_findall_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_findall_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_findall_ns-expanded"><a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt id="link-991" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-983', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-984" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-984', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;c/&gt;&lt;/b&gt;&lt;b/&gt;&lt;c&gt;&lt;b/&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L871"></a><tt class="py-lineno"> 871</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-985" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-985', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-986" class="py-name" targets="Method lxml.etree._Element.findall()=lxml.etree._Element-class.html#findall,Method lxml.etree._ElementTree.findall()=lxml.etree._ElementTree-class.html#findall"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-986', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">"c"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L872"></a><tt class="py-lineno"> 872</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-987" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-987', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-988" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-988', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//c"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-989" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-989', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-990" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-990', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-991" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-991', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-992" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-992', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-993" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-993', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-994" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-994', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-995" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-995', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-996" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-996', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_findall_ns"></a><div id="_ETreeTestCaseBase.test_findall_ns-def"><a name="L878"></a><tt class="py-lineno"> 878</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_findall_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_findall_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_findall_ns">test_findall_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_findall_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_findall_ns-expanded"><a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">        <tt id="link-997" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-991', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-992" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-997', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-998" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-992', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-993" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-998', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-999" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-993', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L873"></a><tt class="py-lineno"> 873</tt>  <tt class="py-line">        <tt id="link-994" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-994', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-995" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-999', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">        <tt id="link-1000" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1000', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1001" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-995', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-996" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-996', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:x="X" xmlns:y="Y"&gt;&lt;x:b&gt;&lt;c/&gt;&lt;/x:b&gt;&lt;b/&gt;&lt;c&gt;&lt;x:b/&gt;&lt;b/&gt;&lt;/c&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L874"></a><tt class="py-lineno"> 874</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-997" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-997', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-998" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-998', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//{X}b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-<a name="L875"></a><tt class="py-lineno"> 875</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-999" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-999', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1000" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1000', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L876"></a><tt class="py-lineno"> 876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1001" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1001', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1002" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1002', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">"b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L877"></a><tt class="py-lineno"> 877</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_element_with_attributes_keywords"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-def"><a name="L878"></a><tt class="py-lineno"> 878</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_keywords-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_keywords');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_keywords">test_element_with_attributes_keywords</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-expanded"><a name="L879"></a><tt class="py-lineno"> 879</tt>  <tt class="py-line">        <tt id="link-1003" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1003', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1004" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1004', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1005" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1005', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L880"></a><tt class="py-lineno"> 880</tt>  <tt class="py-line">         </tt>
-<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1006" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1006', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
-<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1007" class="py-name"><a title="lxml.etree._Element.attrib
-lxml.etree._ProcessingInstruction.attrib
-lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1007', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1008" class="py-name"><a title="lxml.etree._Element.attrib
-lxml.etree._ProcessingInstruction.attrib
-lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1008', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1001', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1002" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1002', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:x="X" xmlns:y="Y"&gt;&lt;x:b&gt;&lt;c/&gt;&lt;/x:b&gt;&lt;b/&gt;&lt;c&gt;&lt;x:b/&gt;&lt;b/&gt;&lt;/c&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L881"></a><tt class="py-lineno"> 881</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1003" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1003', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1004" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1004', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//{X}b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
+<a name="L882"></a><tt class="py-lineno"> 882</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1005" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1005', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1006" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1006', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">".//b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L883"></a><tt class="py-lineno"> 883</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1007" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1007', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1008" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1008', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">"b"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">2</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L884"></a><tt class="py-lineno"> 884</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_element_with_attributes"></a><div id="_ETreeTestCaseBase.test_element_with_attributes-def"><a name="L885"></a><tt class="py-lineno"> 885</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes">test_element_with_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_element_with_attributes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes-expanded"><a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt id="link-1009" class="py-name"><a title="lxml.etree.Element
+<a name="_ETreeTestCaseBase.test_element_with_attributes_keywords"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-def"><a name="L885"></a><tt class="py-lineno"> 885</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_keywords-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_keywords');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_keywords">test_element_with_attributes_keywords</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_keywords-expanded"><a name="L886"></a><tt class="py-lineno"> 886</tt>  <tt class="py-line">        <tt id="link-1009" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
 xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1009', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1010" class="py-name"><a title="lxml.etree
@@ -2988,7 +2978,7 @@ xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink(
 <a name="L888"></a><tt class="py-lineno"> 888</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1012" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1012', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1012', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">=</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
 <a name="L889"></a><tt class="py-lineno"> 889</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1013" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
@@ -2998,8 +2988,8 @@ lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
 xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1014', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L891"></a><tt class="py-lineno"> 891</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_element_with_attributes_extra"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-def"><a name="L892"></a><tt class="py-lineno"> 892</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_extra-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_extra');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra">test_element_with_attributes_extra</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-expanded"><a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt id="link-1015" class="py-name"><a title="lxml.etree.Element
+<a name="_ETreeTestCaseBase.test_element_with_attributes"></a><div id="_ETreeTestCaseBase.test_element_with_attributes-def"><a name="L892"></a><tt class="py-lineno"> 892</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes">test_element_with_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_element_with_attributes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes-expanded"><a name="L893"></a><tt class="py-lineno"> 893</tt>  <tt class="py-line">        <tt id="link-1015" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
 xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1015', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1016" class="py-name"><a title="lxml.etree
@@ -3011,11 +3001,11 @@ lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="retu
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
 xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1017', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line"> </tt>
+<a name="L894"></a><tt class="py-lineno"> 894</tt>  <tt class="py-line">         </tt>
 <a name="L895"></a><tt class="py-lineno"> 895</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1018" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1018', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">'Baz'</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1018', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
 <a name="L896"></a><tt class="py-lineno"> 896</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1019" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
@@ -3024,40 +3014,40 @@ xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return d
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
 xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1020', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Baz'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1021" class="py-name"><a title="lxml.etree._Element.attrib
-lxml.etree._ProcessingInstruction.attrib
-lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1021', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'baz'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L899"></a><tt class="py-lineno"> 899</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-def"><a name="L900"></a><tt class="py-lineno"> 900</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-expanded"><a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line">        <tt id="link-1022" class="py-name"><a title="lxml.etree.Element
+</div><a name="L898"></a><tt class="py-lineno"> 898</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_element_with_attributes_extra"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-def"><a name="L899"></a><tt class="py-lineno"> 899</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_extra-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_extra');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra">test_element_with_attributes_extra</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra-expanded"><a name="L900"></a><tt class="py-lineno"> 900</tt>  <tt class="py-line">        <tt id="link-1021" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1022', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1023" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1021', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1022" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1023', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1024" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1022', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1023" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1024', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line"> </tt>
-<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1025" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1023', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L901"></a><tt class="py-lineno"> 901</tt>  <tt class="py-line"> </tt>
+<a name="L902"></a><tt class="py-lineno"> 902</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1024" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1025', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">'Baz'</tt><tt class="py-op">)</tt> </tt>
-<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1026" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1024', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">'Baz'</tt><tt class="py-op">)</tt> </tt>
+<a name="L903"></a><tt class="py-lineno"> 903</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1025" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1026', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1025', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L904"></a><tt class="py-lineno"> 904</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1026" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+lxml.tests.selftest2.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1026', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
 <a name="L905"></a><tt class="py-lineno"> 905</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Baz'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1027" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1027', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1027', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'baz'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L906"></a><tt class="py-lineno"> 906</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_element_with_attributes_ns"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-def"><a name="L907"></a><tt class="py-lineno"> 907</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_ns">test_element_with_attributes_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-expanded"><a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">        <tt id="link-1028" class="py-name"><a title="lxml.etree.Element
+<a name="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-def"><a name="L907"></a><tt class="py-lineno"> 907</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_extra_duplicate">test_element_with_attributes_extra_duplicate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_extra_duplicate-expanded"><a name="L908"></a><tt class="py-lineno"> 908</tt>  <tt class="py-line">        <tt id="link-1028" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
 xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1028', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1029" class="py-name"><a title="lxml.etree
@@ -3073,21 +3063,21 @@ xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink(
 <a name="L910"></a><tt class="py-lineno"> 910</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1031" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1031', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}bar'</tt><tt class="py-op">:</tt><tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1031', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">:</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">bar</tt><tt class="py-op">=</tt><tt class="py-string">'Baz'</tt><tt class="py-op">)</tt> </tt>
 <a name="L911"></a><tt class="py-lineno"> 911</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1032" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1032', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1033" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1032', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L912"></a><tt class="py-lineno"> 912</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Baz'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1033" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1033', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns2}bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1033', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
 </div><a name="L913"></a><tt class="py-lineno"> 913</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_subelement_with_attributes"></a><div id="_ETreeTestCaseBase.test_subelement_with_attributes-def"><a name="L914"></a><tt class="py-lineno"> 914</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_with_attributes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_with_attributes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes">test_subelement_with_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_subelement_with_attributes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_with_attributes-expanded"><a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt id="link-1034" class="py-name"><a title="lxml.etree.Element
+<a name="_ETreeTestCaseBase.test_element_with_attributes_ns"></a><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-def"><a name="L914"></a><tt class="py-lineno"> 914</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_element_with_attributes_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_element_with_attributes_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_element_with_attributes_ns">test_element_with_attributes_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_element_with_attributes_ns-expanded"><a name="L915"></a><tt class="py-lineno"> 915</tt>  <tt class="py-line">        <tt id="link-1034" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1034', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt>  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1035" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1034', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1035" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
@@ -3096,8721 +3086,8860 @@ lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="retu
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
 xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1036', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line">        <tt id="link-1037" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1037', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1038" class="py-name"><a title="lxml.etree
+<a name="L916"></a><tt class="py-lineno"> 916</tt>  <tt class="py-line"> </tt>
+<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1037" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1037', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}bar'</tt><tt class="py-op">:</tt><tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1038" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+lxml.tests.selftest2.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1038', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1039" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+lxml.tests.selftest2.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1039', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns2}bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_subelement_with_attributes"></a><div id="_ETreeTestCaseBase.test_subelement_with_attributes-def"><a name="L921"></a><tt class="py-lineno"> 921</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_with_attributes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_with_attributes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes">test_subelement_with_attributes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_subelement_with_attributes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_with_attributes-expanded"><a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line">        <tt id="link-1040" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1040', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt>  <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1041" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1038', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1039" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1039', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L917"></a><tt class="py-lineno"> 917</tt>  <tt class="py-line">         </tt>
-<a name="L918"></a><tt class="py-lineno"> 918</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1040" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1041', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1042" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1040', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
-<a name="L919"></a><tt class="py-lineno"> 919</tt>  <tt class="py-line">        <tt id="link-1041" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1041', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"Baz"</tt><tt class="py-op">)</tt> </tt>
-<a name="L920"></a><tt class="py-lineno"> 920</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Baz"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1042" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1042', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L923"></a><tt class="py-lineno"> 923</tt>  <tt class="py-line">        <tt id="link-1043" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1043', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1044" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1044', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1045" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1045', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">         </tt>
+<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1046" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1046', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
+<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line">        <tt id="link-1047" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1047', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt><tt class="py-op">=</tt><tt class="py-string">"Baz"</tt><tt class="py-op">)</tt> </tt>
+<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Baz"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1048" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1042', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'baz'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L921"></a><tt class="py-lineno"> 921</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1043" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1048', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'baz'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1049" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1043', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L922"></a><tt class="py-lineno"> 922</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_subelement_with_attributes_ns"></a><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-def"><a name="L923"></a><tt class="py-lineno"> 923</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_with_attributes_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns">test_subelement_with_attributes_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-expanded"><a name="L924"></a><tt class="py-lineno"> 924</tt>  <tt class="py-line">        <tt id="link-1044" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1049', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_subelement_with_attributes_ns"></a><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-def"><a name="L930"></a><tt class="py-lineno"> 930</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_with_attributes_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_with_attributes_ns">test_subelement_with_attributes_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_with_attributes_ns-expanded"><a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">        <tt id="link-1050" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1044', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1045" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1050', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1051" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1045', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1046" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1051', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1052" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1046', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L925"></a><tt class="py-lineno"> 925</tt>  <tt class="py-line">        <tt id="link-1047" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1047', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1048" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1052', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L932"></a><tt class="py-lineno"> 932</tt>  <tt class="py-line">        <tt id="link-1053" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1053', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1054" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1048', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1049" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1049', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L926"></a><tt class="py-lineno"> 926</tt>  <tt class="py-line"> </tt>
-<a name="L927"></a><tt class="py-lineno"> 927</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1050" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1054', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1055" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1055', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line"> </tt>
+<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1056" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1050', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
-<a name="L928"></a><tt class="py-lineno"> 928</tt>  <tt class="py-line">        <tt id="link-1051" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1051', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}bar'</tt><tt class="py-op">:</tt><tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L929"></a><tt class="py-lineno"> 929</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1052" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1056', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
+<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line">        <tt id="link-1057" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1057', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">:</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}bar'</tt><tt class="py-op">:</tt><tt class="py-string">'Bar'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1058" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1052', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L930"></a><tt class="py-lineno"> 930</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1053" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1058', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns1}foo'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1059" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1053', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns2}bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L931"></a><tt class="py-lineno"> 931</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_write"></a><div id="_ETreeTestCaseBase.test_write-def"><a name="L932"></a><tt class="py-lineno"> 932</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write">test_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write-expanded"><a name="L933"></a><tt class="py-lineno"> 933</tt>  <tt class="py-line">        <tt id="link-1054" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1059', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'{ns2}bar'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_write"></a><div id="_ETreeTestCaseBase.test_write-def"><a name="L939"></a><tt class="py-lineno"> 939</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write">test_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write-expanded"><a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">        <tt id="link-1060" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1054', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1055" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1060', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1061" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1055', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1056" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1061', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1062" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1056', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L934"></a><tt class="py-lineno"> 934</tt>  <tt class="py-line">        <tt id="link-1057" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1062', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">        <tt id="link-1063" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1057', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1058" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1063', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1064" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1058', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1059" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1064', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1065" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1059', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L935"></a><tt class="py-lineno"> 935</tt>  <tt class="py-line"> </tt>
-<a name="L936"></a><tt class="py-lineno"> 936</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L937"></a><tt class="py-lineno"> 937</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
-<a name="L938"></a><tt class="py-lineno"> 938</tt>  <tt class="py-line">            <tt id="link-1060" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1060', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1061" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1065', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line"> </tt>
+<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
+<a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line">            <tt id="link-1066" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1066', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1067" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1061', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1062" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1062', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc%s&gt;This is a test.&lt;/doc%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L939"></a><tt class="py-lineno"> 939</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1063" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1067', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1068" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1068', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc%s&gt;This is a test.&lt;/doc%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1069" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1063', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1064" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1064', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-1065" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1065', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L940"></a><tt class="py-lineno"> 940</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1066" class="py-name" targets="Method lxml.etree._ElementTree.write()=lxml.etree._ElementTree-class.html#write"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1066', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L941"></a><tt class="py-lineno"> 941</tt>  <tt class="py-line">            <tt id="link-1067" class="py-name" targets="Method lxml.etree.TreeBuilder.data()=lxml.etree.TreeBuilder-class.html#data"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1067', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L942"></a><tt class="py-lineno"> 942</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L943"></a><tt class="py-lineno"> 943</tt>  <tt class="py-line">                <tt id="link-1068" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1068', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc%s&gt;This is a test.&lt;/doc%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L944"></a><tt class="py-lineno"> 944</tt>  <tt class="py-line">                <tt id="link-1069" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-1069', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-1070" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1070', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L945"></a><tt class="py-lineno"> 945</tt>  <tt class="py-line"> </tt>
-<a name="L946"></a><tt class="py-lineno"> 946</tt>  <tt class="py-line">    <tt id="link-1071" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1071', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_write_method_html'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_write_method_html"></a><div id="_ETreeTestCaseBase.test_write_method_html-def"><a name="L947"></a><tt class="py-lineno"> 947</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_method_html-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_method_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html">test_write_method_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_write_method_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_method_html-expanded"><a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">        <tt id="link-1072" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1069', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1070" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1070', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-1071" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1071', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L947"></a><tt class="py-lineno"> 947</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1072" class="py-name" targets="Method lxml.etree._ElementTree.write()=lxml.etree._ElementTree-class.html#write"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1072', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L948"></a><tt class="py-lineno"> 948</tt>  <tt class="py-line">            <tt id="link-1073" class="py-name" targets="Method lxml.etree.TreeBuilder.data()=lxml.etree.TreeBuilder-class.html#data"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1073', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">                <tt id="link-1074" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1074', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc%s&gt;This is a test.&lt;/doc%s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">                <tt id="link-1075" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-1075', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-1076" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1076', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line"> </tt>
+<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">    <tt id="link-1077" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1077', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_write_method_html'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_write_method_html"></a><div id="_ETreeTestCaseBase.test_write_method_html-def"><a name="L954"></a><tt class="py-lineno"> 954</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_method_html-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_method_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_html">test_write_method_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_write_method_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_method_html-expanded"><a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">        <tt id="link-1078" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1072', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1073" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1078', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1079" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1073', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1074" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1079', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1080" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1074', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L949"></a><tt class="py-lineno"> 949</tt>  <tt class="py-line">        <tt id="link-1075" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1080', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">        <tt id="link-1081" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1075', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1076" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1081', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1082" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1076', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1077" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1082', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1083" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1077', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L950"></a><tt class="py-lineno"> 950</tt>  <tt class="py-line">        <tt id="link-1078" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1078', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1079" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1083', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line">        <tt id="link-1084" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1084', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1085" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1079', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1080" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1080', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L951"></a><tt class="py-lineno"> 951</tt>  <tt class="py-line">         </tt>
-<a name="L952"></a><tt class="py-lineno"> 952</tt>  <tt class="py-line">        <tt id="link-1081" class="py-name" targets="Package lxml.html=lxml.html-module.html,Method lxml.html.diff.href_token.html()=lxml.html.diff.href_token-class.html#html,Method lxml.html.diff.tag_token.html()=lxml.html.diff.tag_token-class.html#html,Method lxml.html.diff.token.html()=lxml.html.diff.token-class.html#html"><a title="lxml.html
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1085', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1086" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1086', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">         </tt>
+<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt id="link-1087" class="py-name" targets="Package lxml.html=lxml.html-module.html,Method lxml.html.diff.href_token.html()=lxml.html.diff.href_token-class.html#html,Method lxml.html.diff.tag_token.html()=lxml.html.diff.tag_token-class.html#html,Method lxml.html.diff.token.html()=lxml.html.diff.token-class.html#html"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1081', 'html', 'link-1081');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-1082" class="py-name"><a title="lxml.etree.Element
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1087', 'html', 'link-1087');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-1088" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1082', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
-<a name="L953"></a><tt class="py-lineno"> 953</tt>  <tt class="py-line">        <tt id="link-1083" class="py-name" targets="Variable lxml.html.HtmlMixin.body=lxml.html.HtmlMixin-class.html#body"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-1083', 'body', 'link-1083');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-1084" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1084', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1085" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1088', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt id="link-1089" class="py-name" targets="Variable lxml.html.HtmlMixin.body=lxml.html.HtmlMixin-class.html#body"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-1089', 'body', 'link-1089');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-1090" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1090', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1091" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1085', 'html', 'link-1081');">html</a></tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
-<a name="L954"></a><tt class="py-lineno"> 954</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-1086" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1086', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1087" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-1087', 'body', 'link-1083');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'p'</tt><tt class="py-op">)</tt> </tt>
-<a name="L955"></a><tt class="py-lineno"> 955</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-1088" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1091', 'html', 'link-1087');">html</a></tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-1092" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1092', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1093" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-1093', 'body', 'link-1089');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'p'</tt><tt class="py-op">)</tt> </tt>
+<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-1094" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1088', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"html"</tt> </tt>
-<a name="L956"></a><tt class="py-lineno"> 956</tt>  <tt class="py-line">        <tt id="link-1089" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1089', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-string">'br'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1090" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1090', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</tt> </tt>
-<a name="L957"></a><tt class="py-lineno"> 957</tt>  <tt class="py-line"> </tt>
-<a name="L958"></a><tt class="py-lineno"> 958</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1091" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1094', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"html"</tt> </tt>
+<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt id="link-1095" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1095', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-string">'br'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1096" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1096', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</tt> </tt>
+<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line"> </tt>
+<a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1097" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1091', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1092" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1092', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-1093" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1097', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1098" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1098', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-1099" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1093', 'html', 'link-1081');">html</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L959"></a><tt class="py-lineno"> 959</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
-<a name="L960"></a><tt class="py-lineno"> 960</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1094" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1094', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1095" class="py-name" targets="Variable lxml.html.FormElement.method=lxml.html.FormElement-class.html#method"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-1095', 'method', 'link-1095');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">)</tt> </tt>
-<a name="L961"></a><tt class="py-lineno"> 961</tt>  <tt class="py-line">        <tt id="link-1096" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1096', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1097" class="py-name" targets="Method lxml.etree._Element.replace()=lxml.etree._Element-class.html#replace"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-1097', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-1098" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1098', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-1099" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1099', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L962"></a><tt class="py-lineno"> 962</tt>  <tt class="py-line"> </tt>
-<a name="L963"></a><tt class="py-lineno"> 963</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1100" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1100', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;&lt;p&gt;html&lt;br&gt;test&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L964"></a><tt class="py-lineno"> 964</tt>  <tt class="py-line">                          <tt id="link-1101" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1101', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L965"></a><tt class="py-lineno"> 965</tt>  <tt class="py-line"> </tt>
-<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">    <tt id="link-1102" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1102', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_write_method_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_write_method_text"></a><div id="_ETreeTestCaseBase.test_write_method_text-def"><a name="L967"></a><tt class="py-lineno"> 967</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_method_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_method_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_text">test_write_method_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_write_method_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_method_text-expanded"><a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt id="link-1103" class="py-name"><a title="lxml.etree.ElementTree
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-1099', 'html', 'link-1087');">html</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L966"></a><tt class="py-lineno"> 966</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
+<a name="L967"></a><tt class="py-lineno"> 967</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1100" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1100', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1101" class="py-name" targets="Variable lxml.html.FormElement.method=lxml.html.FormElement-class.html#method"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-1101', 'method', 'link-1101');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">)</tt> </tt>
+<a name="L968"></a><tt class="py-lineno"> 968</tt>  <tt class="py-line">        <tt id="link-1102" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1102', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-1103" class="py-name" targets="Method lxml.etree._Element.replace()=lxml.etree._Element-class.html#replace"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-1103', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-1104" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1104', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-1105" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1105', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line"> </tt>
+<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1106" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1106', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;&lt;p&gt;html&lt;br&gt;test&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">                          <tt id="link-1107" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1107', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line"> </tt>
+<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">    <tt id="link-1108" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1108', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_write_method_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_write_method_text"></a><div id="_ETreeTestCaseBase.test_write_method_text-def"><a name="L974"></a><tt class="py-lineno"> 974</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_method_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_method_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_method_text">test_write_method_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_write_method_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_method_text-expanded"><a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt id="link-1109" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1103', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1104" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1109', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1110" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1104', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1105" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1110', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1111" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1105', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L969"></a><tt class="py-lineno"> 969</tt>  <tt class="py-line">        <tt id="link-1106" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1111', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt id="link-1112" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1106', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1107" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1112', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1113" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1107', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1108" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1113', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1114" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1108', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L970"></a><tt class="py-lineno"> 970</tt>  <tt class="py-line">        <tt id="link-1109" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1109', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1110" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1114', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">        <tt id="link-1115" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1115', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1116" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1110', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1111" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1111', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L971"></a><tt class="py-lineno"> 971</tt>  <tt class="py-line">         </tt>
-<a name="L972"></a><tt class="py-lineno"> 972</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1112" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1116', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1117" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1117', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">         </tt>
+<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1118" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1112', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L973"></a><tt class="py-lineno"> 973</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1113" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1118', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1119" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1113', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"A"</tt> </tt>
-<a name="L974"></a><tt class="py-lineno"> 974</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1114" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1114', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail"</tt> </tt>
-<a name="L975"></a><tt class="py-lineno"> 975</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1115" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1115', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L976"></a><tt class="py-lineno"> 976</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1116" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1119', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"A"</tt> </tt>
+<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1120" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1120', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail"</tt> </tt>
+<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1121" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1121', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1122" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1116', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"B"</tt> </tt>
-<a name="L977"></a><tt class="py-lineno"> 977</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1117" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1117', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL"</tt> </tt>
-<a name="L978"></a><tt class="py-lineno"> 978</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1118" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1118', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L979"></a><tt class="py-lineno"> 979</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1119" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1122', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"B"</tt> </tt>
+<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1123" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1123', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL"</tt> </tt>
+<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1124" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1124', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1125" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1119', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"C"</tt> </tt>
-<a name="L980"></a><tt class="py-lineno"> 980</tt>  <tt class="py-line">         </tt>
-<a name="L981"></a><tt class="py-lineno"> 981</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1120" class="py-name"><a title="lxml.etree.ElementTree
-xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1120', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1121" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1121', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L982"></a><tt class="py-lineno"> 982</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
-<a name="L983"></a><tt class="py-lineno"> 983</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1122" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1122', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1123" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-1123', 'method', 'link-1095');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"text"</tt><tt class="py-op">)</tt> </tt>
-<a name="L984"></a><tt class="py-lineno"> 984</tt>  <tt class="py-line">        <tt id="link-1124" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1124', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L985"></a><tt class="py-lineno"> 985</tt>  <tt class="py-line"> </tt>
-<a name="L986"></a><tt class="py-lineno"> 986</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1125" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1125', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ABTAILCtail'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">                          <tt id="link-1126" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1126', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_write_fail"></a><div id="_ETreeTestCaseBase.test_write_fail-def"><a name="L989"></a><tt class="py-lineno"> 989</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_fail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_fail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_fail">test_write_fail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_write_fail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_fail-expanded"><a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">        <tt id="link-1127" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1125', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"C"</tt> </tt>
+<a name="L987"></a><tt class="py-lineno"> 987</tt>  <tt class="py-line">         </tt>
+<a name="L988"></a><tt class="py-lineno"> 988</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1126" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1126', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1127" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1127', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L989"></a><tt class="py-lineno"> 989</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt>  </tt>
+<a name="L990"></a><tt class="py-lineno"> 990</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1128" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1128', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-1129" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-1129', 'method', 'link-1101');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"text"</tt><tt class="py-op">)</tt> </tt>
+<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt id="link-1130" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1130', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
+<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1131" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1131', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ABTAILCtail'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">                          <tt id="link-1132" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-1132', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_write_fail"></a><div id="_ETreeTestCaseBase.test_write_fail-def"><a name="L996"></a><tt class="py-lineno"> 996</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_fail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_fail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_fail">test_write_fail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_write_fail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_fail-expanded"><a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">        <tt id="link-1133" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1127', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1128" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1133', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1134" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1128', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1129" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1134', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1135" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1129', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L991"></a><tt class="py-lineno"> 991</tt>  <tt class="py-line">        <tt id="link-1130" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1135', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">        <tt id="link-1136" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1130', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1131" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1136', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1137" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1131', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1132" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1137', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1138" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1132', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L992"></a><tt class="py-lineno"> 992</tt>  <tt class="py-line"> </tt>
-<a name="L993"></a><tt class="py-lineno"> 993</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1133" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1138', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L999"></a><tt class="py-lineno"> 999</tt>  <tt class="py-line"> </tt>
+<a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1139" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1133', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt> <tt id="link-1134" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1139', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt> <tt id="link-1140" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1134', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1135" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1135', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;This is a test.&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-<a name="L994"></a><tt class="py-lineno"> 994</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1136" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1136', 'write', 'link-1066');">write</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L995"></a><tt class="py-lineno"> 995</tt>  <tt class="py-line">                          <tt class="py-string">"definitely////\\-\\nonexisting\\-\\////FILE"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L996"></a><tt class="py-lineno"> 996</tt>  <tt class="py-line"> </tt>
-<a name="L997"></a><tt class="py-lineno"> 997</tt>  <tt class="py-line">    <tt class="py-comment"># this could trigger a crash, apparently because the document</tt> </tt>
-<a name="L998"></a><tt class="py-lineno"> 998</tt>  <tt class="py-line">    <tt class="py-comment"># reference was prematurely garbage collected</tt> </tt>
-<a name="_ETreeTestCaseBase.test_crash"></a><div id="_ETreeTestCaseBase.test_crash-def"><a name="L999"></a><tt class="py-lineno"> 999</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_crash-toggle" onclick="return toggle('_ETreeTestCaseBase.test_crash');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_crash">test_crash</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_crash-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_crash-expanded"><a name="L1000"></a><tt class="py-lineno">1000</tt>  <tt class="py-line">        <tt id="link-1137" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1140', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1141" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1141', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;doc&gt;This is a test.&lt;/doc&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1142" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1142', 'write', 'link-1072');">write</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">                          <tt class="py-string">"definitely////\\-\\nonexisting\\-\\////FILE"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line"> </tt>
+<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">    <tt class="py-comment"># this could trigger a crash, apparently because the document</tt> </tt>
+<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">    <tt class="py-comment"># reference was prematurely garbage collected</tt> </tt>
+<a name="_ETreeTestCaseBase.test_crash"></a><div id="_ETreeTestCaseBase.test_crash-def"><a name="L1006"></a><tt class="py-lineno">1006</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_crash-toggle" onclick="return toggle('_ETreeTestCaseBase.test_crash');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_crash">test_crash</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_crash-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_crash-expanded"><a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">        <tt id="link-1143" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1137', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1138" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1143', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1144" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1138', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1139" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1144', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1145" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1139', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1001"></a><tt class="py-lineno">1001</tt>  <tt class="py-line">         </tt>
-<a name="L1002"></a><tt class="py-lineno">1002</tt>  <tt class="py-line">        <tt id="link-1140" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1140', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-1141" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1145', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">         </tt>
+<a name="L1009"></a><tt class="py-lineno">1009</tt>  <tt class="py-line">        <tt id="link-1146" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1146', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-1147" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1141', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1003"></a><tt class="py-lineno">1003</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1004"></a><tt class="py-lineno">1004</tt>  <tt class="py-line">            <tt id="link-1142" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1142', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1143" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1147', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">            <tt id="link-1148" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1148', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1149" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1143', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'value'</tt> </tt>
-<a name="L1005"></a><tt class="py-lineno">1005</tt>  <tt class="py-line">            <tt id="link-1144" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1149', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">'value'</tt> </tt>
+<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">            <tt id="link-1150" class="py-name" targets="Variable lxml.html.CheckboxGroup.value=lxml.html.CheckboxGroup-class.html#value,Variable lxml.html.InputElement.value=lxml.html.InputElement-class.html#value,Variable lxml.html.RadioGroup.value=lxml.html.RadioGroup-class.html#value,Variable lxml.html.SelectElement.value=lxml.html.SelectElement-class.html#value,Variable lxml.html.TextareaElement.value=lxml.html.TextareaElement-class.html#value"><a title="lxml.html.CheckboxGroup.value
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1144', 'value', 'link-1144');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1145" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1145', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1146" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1150', 'value', 'link-1150');">value</a></tt> <tt class="py-op">=</tt> <tt id="link-1151" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1151', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1152" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1146', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
-<a name="L1006"></a><tt class="py-lineno">1006</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1147" class="py-name"><a title="lxml.html.CheckboxGroup.value
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1152', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">'key'</tt><tt class="py-op">]</tt> </tt>
+<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1153" class="py-name"><a title="lxml.html.CheckboxGroup.value
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1147', 'value', 'link-1144');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1007"></a><tt class="py-lineno">1007</tt>  <tt class="py-line">             </tt>
-<a name="L1008"></a><tt class="py-lineno">1008</tt>  <tt class="py-line">    <tt class="py-comment"># from doctest; for some reason this caused crashes too</tt> </tt>
-<a name="_ETreeTestCaseBase.test_write_ElementTreeDoctest"></a><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-def"><a name="L1009"></a><tt class="py-lineno">1009</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_ElementTreeDoctest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest">test_write_ElementTreeDoctest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-expanded"><a name="L1010"></a><tt class="py-lineno">1010</tt>  <tt class="py-line">        <tt id="link-1148" class="py-name"><a title="lxml.etree.Element
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-1153', 'value', 'link-1150');">value</a></tt><tt class="py-op">,</tt> <tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">             </tt>
+<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">    <tt class="py-comment"># from doctest; for some reason this caused crashes too</tt> </tt>
+<a name="_ETreeTestCaseBase.test_write_ElementTreeDoctest"></a><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-def"><a name="L1016"></a><tt class="py-lineno">1016</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-toggle" onclick="return toggle('_ETreeTestCaseBase.test_write_ElementTreeDoctest');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_write_ElementTreeDoctest">test_write_ElementTreeDoctest</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_write_ElementTreeDoctest-expanded"><a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">        <tt id="link-1154" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1148', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1149" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1154', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1155" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1149', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1150" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1155', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1156" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1150', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1011"></a><tt class="py-lineno">1011</tt>  <tt class="py-line">        <tt id="link-1151" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1156', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">        <tt id="link-1157" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1151', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1152" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1157', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1158" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1152', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1153" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1158', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1159" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1153', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L1012"></a><tt class="py-lineno">1012</tt>  <tt class="py-line">         </tt>
-<a name="L1013"></a><tt class="py-lineno">1013</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1014"></a><tt class="py-lineno">1014</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1015"></a><tt class="py-lineno">1015</tt>  <tt class="py-line">            <tt id="link-1154" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1154', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-1155" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1159', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">         </tt>
+<a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1021"></a><tt class="py-lineno">1021</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">10</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">            <tt id="link-1160" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1160', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-1161" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1155', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1016"></a><tt class="py-lineno">1016</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1156" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_element()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element" class="py-name" href="#" onclick="return doclink('link-1156', '_check_element', 'link-1156');">_check_element</a></tt><tt class="py-op">(</tt><tt id="link-1157" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1157', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1017"></a><tt class="py-lineno">1017</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1158" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1161', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'tag%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1162" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_element()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element" class="py-name" href="#" onclick="return doclink('link-1162', '_check_element', 'link-1162');">_check_element</a></tt><tt class="py-op">(</tt><tt id="link-1163" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1163', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-1164" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1158', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1159" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1159', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1018"></a><tt class="py-lineno">1018</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1160" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1160', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L1019"></a><tt class="py-lineno">1019</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1161" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree" class="py-name" href="#" onclick="return doclink('link-1161', '_check_element_tree', 'link-1161');">_check_element_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1020"></a><tt class="py-lineno">1020</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_subelement_reference"></a><div id="_ETreeTestCaseBase.test_subelement_reference-def"><a name="L1021"></a><tt class="py-lineno">1021</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_reference-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_reference');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference">test_subelement_reference</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_subelement_reference-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_reference-expanded"><a name="L1022"></a><tt class="py-lineno">1022</tt>  <tt class="py-line">        <tt id="link-1162" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1164', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-1165" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1165', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-1166" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-1166', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1167" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element_tree" class="py-name" href="#" onclick="return doclink('link-1167', '_check_element_tree', 'link-1167');">_check_element_tree</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_subelement_reference"></a><div id="_ETreeTestCaseBase.test_subelement_reference-def"><a name="L1028"></a><tt class="py-lineno">1028</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_subelement_reference-toggle" onclick="return toggle('_ETreeTestCaseBase.test_subelement_reference');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_subelement_reference">test_subelement_reference</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_subelement_reference-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_subelement_reference-expanded"><a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt id="link-1168" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1162', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1163" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1168', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1169" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1163', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1164" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1169', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1170" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1164', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1023"></a><tt class="py-lineno">1023</tt>  <tt class="py-line">        <tt id="link-1165" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1165', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1166" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1170', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt id="link-1171" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1171', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1172" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1166', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1167" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1167', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1024"></a><tt class="py-lineno">1024</tt>  <tt class="py-line">         </tt>
-<a name="L1025"></a><tt class="py-lineno">1025</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1168" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1168', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1026"></a><tt class="py-lineno">1026</tt>  <tt class="py-line">        <tt class="py-name">el2</tt> <tt class="py-op">=</tt> <tt id="link-1169" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1169', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1027"></a><tt class="py-lineno">1027</tt>  <tt class="py-line">        <tt class="py-name">el3</tt> <tt class="py-op">=</tt> <tt id="link-1170" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1170', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el2</tt><tt class="py-op">,</tt> <tt class="py-string">'baz'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1028"></a><tt class="py-lineno">1028</tt>  <tt class="py-line"> </tt>
-<a name="L1029"></a><tt class="py-lineno">1029</tt>  <tt class="py-line">        <tt class="py-name">al</tt> <tt class="py-op">=</tt> <tt id="link-1171" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1172', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1173" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1173', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">         </tt>
+<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-1174" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1171', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo2'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1030"></a><tt class="py-lineno">1030</tt>  <tt class="py-line">        <tt class="py-name">al2</tt> <tt class="py-op">=</tt> <tt id="link-1172" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1172', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">al</tt><tt class="py-op">,</tt> <tt class="py-string">'bar2'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1031"></a><tt class="py-lineno">1031</tt>  <tt class="py-line">        <tt class="py-name">al3</tt> <tt class="py-op">=</tt> <tt id="link-1173" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1173', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">al2</tt><tt class="py-op">,</tt> <tt class="py-string">'baz2'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1032"></a><tt class="py-lineno">1032</tt>  <tt class="py-line"> </tt>
-<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">        <tt class="py-comment"># now move al2 into el</tt> </tt>
-<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1174" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1174', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">al2</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1174', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1033"></a><tt class="py-lineno">1033</tt>  <tt class="py-line">        <tt class="py-name">el2</tt> <tt class="py-op">=</tt> <tt id="link-1175" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1175', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1034"></a><tt class="py-lineno">1034</tt>  <tt class="py-line">        <tt class="py-name">el3</tt> <tt class="py-op">=</tt> <tt id="link-1176" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1176', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el2</tt><tt class="py-op">,</tt> <tt class="py-string">'baz'</tt><tt class="py-op">)</tt> </tt>
 <a name="L1035"></a><tt class="py-lineno">1035</tt>  <tt class="py-line"> </tt>
-<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt class="py-comment"># now change al3 directly</tt> </tt>
-<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-name">al3</tt><tt class="py-op">.</tt><tt id="link-1175" class="py-name"><a title="lxml.etree.QName.text
+<a name="L1036"></a><tt class="py-lineno">1036</tt>  <tt class="py-line">        <tt class="py-name">al</tt> <tt class="py-op">=</tt> <tt id="link-1177" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1177', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo2'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1037"></a><tt class="py-lineno">1037</tt>  <tt class="py-line">        <tt class="py-name">al2</tt> <tt class="py-op">=</tt> <tt id="link-1178" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1178', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">al</tt><tt class="py-op">,</tt> <tt class="py-string">'bar2'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line">        <tt class="py-name">al3</tt> <tt class="py-op">=</tt> <tt id="link-1179" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1179', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">al2</tt><tt class="py-op">,</tt> <tt class="py-string">'baz2'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line"> </tt>
+<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-comment"># now move al2 into el</tt> </tt>
+<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">        <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1180" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1180', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">al2</tt><tt class="py-op">)</tt> </tt>
+<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line"> </tt>
+<a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line">        <tt class="py-comment"># now change al3 directly</tt> </tt>
+<a name="L1044"></a><tt class="py-lineno">1044</tt>  <tt class="py-line">        <tt class="py-name">al3</tt><tt class="py-op">.</tt><tt id="link-1181" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1175', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'baz2-modified'</tt> </tt>
-<a name="L1038"></a><tt class="py-lineno">1038</tt>  <tt class="py-line"> </tt>
-<a name="L1039"></a><tt class="py-lineno">1039</tt>  <tt class="py-line">        <tt class="py-comment"># it should have changed through this route too</tt> </tt>
-<a name="L1040"></a><tt class="py-lineno">1040</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1041"></a><tt class="py-lineno">1041</tt>  <tt class="py-line">            <tt class="py-string">'baz2-modified'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1042"></a><tt class="py-lineno">1042</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1176" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1181', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'baz2-modified'</tt> </tt>
+<a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line"> </tt>
+<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt class="py-comment"># it should have changed through this route too</tt> </tt>
+<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">            <tt class="py-string">'baz2-modified'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1182" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1176', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1043"></a><tt class="py-lineno">1043</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_set_text"></a><div id="_ETreeTestCaseBase.test_set_text-def"><a name="L1044"></a><tt class="py-lineno">1044</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_set_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text-expanded"><a name="L1045"></a><tt class="py-lineno">1045</tt>  <tt class="py-line">        <tt id="link-1177" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1182', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_set_text"></a><div id="_ETreeTestCaseBase.test_set_text-def"><a name="L1051"></a><tt class="py-lineno">1051</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_set_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text-expanded"><a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">        <tt id="link-1183" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1177', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1178" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1183', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1184" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1178', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1179" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1184', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1185" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1179', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1046"></a><tt class="py-lineno">1046</tt>  <tt class="py-line">        <tt id="link-1180" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1180', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1181" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1185', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">        <tt id="link-1186" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1186', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1187" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1181', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1182" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1182', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1047"></a><tt class="py-lineno">1047</tt>  <tt class="py-line">         </tt>
-<a name="L1048"></a><tt class="py-lineno">1048</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1183" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1187', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1188" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1188', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">         </tt>
+<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1189" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1183', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1049"></a><tt class="py-lineno">1049</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1184" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1184', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1050"></a><tt class="py-lineno">1050</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1185" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1189', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1190" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1190', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1191" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1185', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
-<a name="L1051"></a><tt class="py-lineno">1051</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1052"></a><tt class="py-lineno">1052</tt>  <tt class="py-line">            <tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1053"></a><tt class="py-lineno">1053</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1186" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1191', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
+<a name="L1058"></a><tt class="py-lineno">1058</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">            <tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1192" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1186', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1054"></a><tt class="py-lineno">1054</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1055"></a><tt class="py-lineno">1055</tt>  <tt class="py-line">            <tt class="py-string">'b'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1056"></a><tt class="py-lineno">1056</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1187" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1192', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">            <tt class="py-string">'b'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1193" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1187', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1057"></a><tt class="py-lineno">1057</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_set_text2"></a><div id="_ETreeTestCaseBase.test_set_text2-def"><a name="L1058"></a><tt class="py-lineno">1058</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_set_text2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text2-expanded"><a name="L1059"></a><tt class="py-lineno">1059</tt>  <tt class="py-line">        <tt id="link-1188" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1193', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_set_text2"></a><div id="_ETreeTestCaseBase.test_set_text2-def"><a name="L1065"></a><tt class="py-lineno">1065</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_set_text2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text2-expanded"><a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">        <tt id="link-1194" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1188', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1189" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1194', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1195" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1189', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1190" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1195', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1196" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1190', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1060"></a><tt class="py-lineno">1060</tt>  <tt class="py-line">        <tt id="link-1191" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1191', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1192" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1196', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">        <tt id="link-1197" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1197', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1198" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1192', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1193" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1193', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1061"></a><tt class="py-lineno">1061</tt>  <tt class="py-line">         </tt>
-<a name="L1062"></a><tt class="py-lineno">1062</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1194" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1198', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1199" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1199', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">         </tt>
+<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1200" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1194', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1063"></a><tt class="py-lineno">1063</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1195" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1200', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1201" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1195', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
-<a name="L1064"></a><tt class="py-lineno">1064</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1196" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1196', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt> <tt class="py-op">,</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1065"></a><tt class="py-lineno">1065</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1066"></a><tt class="py-lineno">1066</tt>  <tt class="py-line">            <tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1067"></a><tt class="py-lineno">1067</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1197" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1201', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
+<a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1202" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1202', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt> <tt class="py-op">,</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1072"></a><tt class="py-lineno">1072</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">            <tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1203" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1197', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1068"></a><tt class="py-lineno">1068</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1069"></a><tt class="py-lineno">1069</tt>  <tt class="py-line">            <tt class="py-string">'b'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1070"></a><tt class="py-lineno">1070</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1198" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1203', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line">            <tt class="py-string">'b'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1204" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1198', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1071"></a><tt class="py-lineno">1071</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_set_text_none"></a><div id="_ETreeTestCaseBase.test_set_text_none-def"><a name="L1072"></a><tt class="py-lineno">1072</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_none">test_set_text_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_set_text_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text_none-expanded"><a name="L1073"></a><tt class="py-lineno">1073</tt>  <tt class="py-line">        <tt id="link-1199" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1204', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_set_text_none"></a><div id="_ETreeTestCaseBase.test_set_text_none-def"><a name="L1079"></a><tt class="py-lineno">1079</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_none">test_set_text_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_set_text_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text_none-expanded"><a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt id="link-1205" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1199', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1200" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1205', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1206" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1200', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1201" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1206', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1207" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1201', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1074"></a><tt class="py-lineno">1074</tt>  <tt class="py-line"> </tt>
-<a name="L1075"></a><tt class="py-lineno">1075</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1202" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1207', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line"> </tt>
+<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1208" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1202', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1076"></a><tt class="py-lineno">1076</tt>  <tt class="py-line"> </tt>
-<a name="L1077"></a><tt class="py-lineno">1077</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1203" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1208', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line"> </tt>
+<a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1209" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1203', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
-<a name="L1078"></a><tt class="py-lineno">1078</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1204" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1209', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
+<a name="L1085"></a><tt class="py-lineno">1085</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1210" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1204', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1079"></a><tt class="py-lineno">1079</tt>  <tt class="py-line"> </tt>
-<a name="L1080"></a><tt class="py-lineno">1080</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1081"></a><tt class="py-lineno">1081</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1082"></a><tt class="py-lineno">1082</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1205" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1210', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line"> </tt>
+<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1211" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1205', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1083"></a><tt class="py-lineno">1083</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1206" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1206', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1207" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1207', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1084"></a><tt class="py-lineno">1084</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_set_text_empty"></a><div id="_ETreeTestCaseBase.test_set_text_empty-def"><a name="L1085"></a><tt class="py-lineno">1085</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_empty">test_set_text_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_set_text_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text_empty-expanded"><a name="L1086"></a><tt class="py-lineno">1086</tt>  <tt class="py-line">        <tt id="link-1208" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1211', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1212" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1212', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1213" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1213', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_set_text_empty"></a><div id="_ETreeTestCaseBase.test_set_text_empty-def"><a name="L1092"></a><tt class="py-lineno">1092</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_set_text_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_set_text_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text_empty">test_set_text_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_set_text_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_set_text_empty-expanded"><a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">        <tt id="link-1214" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1208', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1209" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1214', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1215" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1209', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1210" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1215', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1216" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1210', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1087"></a><tt class="py-lineno">1087</tt>  <tt class="py-line"> </tt>
-<a name="L1088"></a><tt class="py-lineno">1088</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1211" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1216', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line"> </tt>
+<a name="L1095"></a><tt class="py-lineno">1095</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1217" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1211', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1089"></a><tt class="py-lineno">1089</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1212" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1217', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1218" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1212', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1090"></a><tt class="py-lineno">1090</tt>  <tt class="py-line"> </tt>
-<a name="L1091"></a><tt class="py-lineno">1091</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1213" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1218', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line"> </tt>
+<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1219" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1213', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L1092"></a><tt class="py-lineno">1092</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1214" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1219', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1220" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1214', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1093"></a><tt class="py-lineno">1093</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1215" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1215', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1216" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1216', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1094"></a><tt class="py-lineno">1094</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_tail1"></a><div id="_ETreeTestCaseBase.test_tail1-def"><a name="L1095"></a><tt class="py-lineno">1095</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail1">test_tail1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tail1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail1-expanded"><a name="L1096"></a><tt class="py-lineno">1096</tt>  <tt class="py-line">        <tt id="link-1217" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1220', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1221" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1221', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1222" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1222', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_tail1"></a><div id="_ETreeTestCaseBase.test_tail1-def"><a name="L1102"></a><tt class="py-lineno">1102</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail1">test_tail1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tail1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail1-expanded"><a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt id="link-1223" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1217', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1218" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1223', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1224" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1218', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1219" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1224', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1225" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1219', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1097"></a><tt class="py-lineno">1097</tt>  <tt class="py-line">        <tt id="link-1220" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1220', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1221" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1225', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt id="link-1226" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1226', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1227" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1221', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1222" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1222', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1098"></a><tt class="py-lineno">1098</tt>  <tt class="py-line">         </tt>
-<a name="L1099"></a><tt class="py-lineno">1099</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1223" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1227', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1228" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1228', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">         </tt>
+<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1229" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1223', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1100"></a><tt class="py-lineno">1100</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1224" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1224', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'dag'</tt> </tt>
-<a name="L1101"></a><tt class="py-lineno">1101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'dag'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1102"></a><tt class="py-lineno">1102</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1225" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1225', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1103"></a><tt class="py-lineno">1103</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1226" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1226', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1104"></a><tt class="py-lineno">1104</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1227" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1227', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
-<a name="L1105"></a><tt class="py-lineno">1105</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1106"></a><tt class="py-lineno">1106</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1228" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1228', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'dag'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1229" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1229', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tail_append"></a><div id="_ETreeTestCaseBase.test_tail_append-def"><a name="L1110"></a><tt class="py-lineno">1110</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_append-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_append">test_tail_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tail_append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_append-expanded"><a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt id="link-1230" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1229', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1107"></a><tt class="py-lineno">1107</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1230" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1230', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'dag'</tt> </tt>
+<a name="L1108"></a><tt class="py-lineno">1108</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'dag'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1109"></a><tt class="py-lineno">1109</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1231" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1231', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1110"></a><tt class="py-lineno">1110</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1232" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1232', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1111"></a><tt class="py-lineno">1111</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1233" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1233', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hoi'</tt> </tt>
+<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1234" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1234', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'dag'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1235" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1235', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tail_append"></a><div id="_ETreeTestCaseBase.test_tail_append-def"><a name="L1117"></a><tt class="py-lineno">1117</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_append-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_append">test_tail_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tail_append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_append-expanded"><a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">        <tt id="link-1236" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1230', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1231" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1236', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1237" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1231', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1232" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1237', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1238" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1232', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1112"></a><tt class="py-lineno">1112</tt>  <tt class="py-line">         </tt>
-<a name="L1113"></a><tt class="py-lineno">1113</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1233" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1238', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line">         </tt>
+<a name="L1120"></a><tt class="py-lineno">1120</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1239" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1233', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1114"></a><tt class="py-lineno">1114</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1234" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1239', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1240" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1234', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1115"></a><tt class="py-lineno">1115</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1235" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1235', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b_tail'</tt> </tt>
-<a name="L1116"></a><tt class="py-lineno">1116</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1236" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1236', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1117"></a><tt class="py-lineno">1117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b_tail'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1118"></a><tt class="py-lineno">1118</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1237" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1237', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1119"></a><tt class="py-lineno">1119</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tail_set_twice"></a><div id="_ETreeTestCaseBase.test_tail_set_twice-def"><a name="L1120"></a><tt class="py-lineno">1120</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_set_twice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_set_twice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice">test_tail_set_twice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tail_set_twice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_set_twice-expanded"><a name="L1121"></a><tt class="py-lineno">1121</tt>  <tt class="py-line">        <tt id="link-1238" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1240', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1241" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1241', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b_tail'</tt> </tt>
+<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1242" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1242', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b_tail'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1243" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1243', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tail_set_twice"></a><div id="_ETreeTestCaseBase.test_tail_set_twice-def"><a name="L1127"></a><tt class="py-lineno">1127</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_set_twice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_set_twice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_twice">test_tail_set_twice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tail_set_twice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_set_twice-expanded"><a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">        <tt id="link-1244" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1238', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1239" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1244', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1245" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1239', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1240" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1245', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1246" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1240', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1122"></a><tt class="py-lineno">1122</tt>  <tt class="py-line">        <tt id="link-1241" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1241', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1242" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1246', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">        <tt id="link-1247" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1247', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1248" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1242', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1243" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1243', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1123"></a><tt class="py-lineno">1123</tt>  <tt class="py-line">         </tt>
-<a name="L1124"></a><tt class="py-lineno">1124</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1244" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1248', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1249" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1249', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">         </tt>
+<a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1250" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1244', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1125"></a><tt class="py-lineno">1125</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1245" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1245', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1126"></a><tt class="py-lineno">1126</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1246" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1246', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
-<a name="L1127"></a><tt class="py-lineno">1127</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1247" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1247', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
-<a name="L1128"></a><tt class="py-lineno">1128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1129"></a><tt class="py-lineno">1129</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1248" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1248', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1130"></a><tt class="py-lineno">1130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1249" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1249', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1250" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1250', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;bar&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1131"></a><tt class="py-lineno">1131</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_tail_set_none"></a><div id="_ETreeTestCaseBase.test_tail_set_none-def"><a name="L1132"></a><tt class="py-lineno">1132</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_set_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_set_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_none">test_tail_set_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tail_set_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_set_none-expanded"><a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt id="link-1251" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1250', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1132"></a><tt class="py-lineno">1132</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1251" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1251', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1133"></a><tt class="py-lineno">1133</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1252" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1252', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
+<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1253" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1253', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
+<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1254" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1254', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1255" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1255', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1256" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1256', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;bar&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_tail_set_none"></a><div id="_ETreeTestCaseBase.test_tail_set_none-def"><a name="L1139"></a><tt class="py-lineno">1139</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_set_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_set_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_set_none">test_tail_set_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tail_set_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_set_none-expanded"><a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt id="link-1257" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1251', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1252" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1257', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1258" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1252', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1253" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1258', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1259" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1253', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1134"></a><tt class="py-lineno">1134</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1254" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1259', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1260" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1254', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1135"></a><tt class="py-lineno">1135</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1255" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1255', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
-<a name="L1136"></a><tt class="py-lineno">1136</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1256" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1256', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L1137"></a><tt class="py-lineno">1137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1138"></a><tt class="py-lineno">1138</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L1139"></a><tt class="py-lineno">1139</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1257" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1257', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1140"></a><tt class="py-lineno">1140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1258" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1258', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1259" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1259', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1141"></a><tt class="py-lineno">1141</tt>  <tt class="py-line"> </tt>
-<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">    <tt id="link-1260" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1260', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_extend'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_extend"></a><div id="_ETreeTestCaseBase.test_extend-def"><a name="L1143"></a><tt class="py-lineno">1143</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_extend-toggle" onclick="return toggle('_ETreeTestCaseBase.test_extend');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_extend-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_extend-expanded"><a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">        <tt id="link-1261" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1261', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1262" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1260', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1142"></a><tt class="py-lineno">1142</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1261" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1261', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
+<a name="L1143"></a><tt class="py-lineno">1143</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1262" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1262', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1144"></a><tt class="py-lineno">1144</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1263" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1263', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1264" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1264', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1265" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1265', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line"> </tt>
+<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line">    <tt id="link-1266" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1266', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_extend'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_extend"></a><div id="_ETreeTestCaseBase.test_extend-def"><a name="L1150"></a><tt class="py-lineno">1150</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_extend-toggle" onclick="return toggle('_ETreeTestCaseBase.test_extend');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_extend">test_extend</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_extend-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_extend-expanded"><a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt id="link-1267" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1267', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1268" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1262', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1263" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1268', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1269" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1263', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1145"></a><tt class="py-lineno">1145</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1146"></a><tt class="py-lineno">1146</tt>  <tt class="py-line">            <tt id="link-1264" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1264', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1265" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1269', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">            <tt id="link-1270" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1270', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1271" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1265', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1266" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1266', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1267" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1267', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1147"></a><tt class="py-lineno">1147</tt>  <tt class="py-line">            <tt id="link-1268" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1268', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1269" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1271', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1272" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1272', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-1273" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1273', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">            <tt id="link-1274" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1274', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1275" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1269', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"text%d"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
-<a name="L1148"></a><tt class="py-lineno">1148</tt>  <tt class="py-line">            <tt id="link-1270" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1270', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1271" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1271', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail%d"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
-<a name="L1149"></a><tt class="py-lineno">1149</tt>  <tt class="py-line"> </tt>
-<a name="L1150"></a><tt class="py-lineno">1150</tt>  <tt class="py-line">        <tt id="link-1272" class="py-name" targets="Method lxml.etree.DTD.elements()=lxml.etree.DTD-class.html#elements"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1272', 'elements', 'link-1272');">elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1151"></a><tt class="py-lineno">1151</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1152"></a><tt class="py-lineno">1152</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1273" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1275', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"text%d"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
+<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">            <tt id="link-1276" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-1276', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-1277" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1277', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail%d"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
+<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
+<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">        <tt id="link-1278" class="py-name" targets="Method lxml.etree.DTD.elements()=lxml.etree.DTD-class.html#elements"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1278', 'elements', 'link-1278');">elements</a></tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">3</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1279" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1273', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1274" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1279', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1280" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1274', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"test%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1153"></a><tt class="py-lineno">1153</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt><tt class="py-op">.</tt><tt id="link-1275" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1280', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"test%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt><tt class="py-op">.</tt><tt id="link-1281" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1275', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TEXT%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
-<a name="L1154"></a><tt class="py-lineno">1154</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt><tt class="py-op">.</tt><tt id="link-1276" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1276', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
-<a name="L1155"></a><tt class="py-lineno">1155</tt>  <tt class="py-line">            <tt id="link-1277" class="py-name"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1277', 'elements', 'link-1272');">elements</a></tt><tt class="py-op">.</tt><tt id="link-1278" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1278', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">new_element</tt><tt class="py-op">)</tt> </tt>
-<a name="L1156"></a><tt class="py-lineno">1156</tt>  <tt class="py-line"> </tt>
-<a name="L1157"></a><tt class="py-lineno">1157</tt>  <tt class="py-line">        <tt id="link-1279" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1279', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1280" class="py-name" targets="Method lxml.etree._Element.extend()=lxml.etree._Element-class.html#extend"><a title="lxml.etree._Element.extend" class="py-name" href="#" onclick="return doclink('link-1280', 'extend', 'link-1280');">extend</a></tt><tt class="py-op">(</tt><tt id="link-1281" class="py-name"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1281', 'elements', 'link-1272');">elements</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1158"></a><tt class="py-lineno">1158</tt>  <tt class="py-line"> </tt>
-<a name="L1159"></a><tt class="py-lineno">1159</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1160"></a><tt class="py-lineno">1160</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"a0"</tt><tt class="py-op">,</tt> <tt class="py-string">"a1"</tt><tt class="py-op">,</tt> <tt class="py-string">"a2"</tt><tt class="py-op">,</tt> <tt class="py-string">"test0"</tt><tt class="py-op">,</tt> <tt class="py-string">"test1"</tt><tt class="py-op">,</tt> <tt class="py-string">"test2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1282" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1281', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TEXT%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
+<a name="L1161"></a><tt class="py-lineno">1161</tt>  <tt class="py-line">            <tt class="py-name">new_element</tt><tt class="py-op">.</tt><tt id="link-1282" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1282', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL%s"</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt> </tt>
+<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">            <tt id="link-1283" class="py-name"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1283', 'elements', 'link-1278');">elements</a></tt><tt class="py-op">.</tt><tt id="link-1284" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1284', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">new_element</tt><tt class="py-op">)</tt> </tt>
+<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line"> </tt>
+<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">        <tt id="link-1285" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1285', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1286" class="py-name" targets="Method lxml.etree._Element.extend()=lxml.etree._Element-class.html#extend"><a title="lxml.etree._Element.extend" class="py-name" href="#" onclick="return doclink('link-1286', 'extend', 'link-1286');">extend</a></tt><tt class="py-op">(</tt><tt id="link-1287" class="py-name"><a title="lxml.etree.DTD.elements" class="py-name" href="#" onclick="return doclink('link-1287', 'elements', 'link-1278');">elements</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line"> </tt>
+<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"a0"</tt><tt class="py-op">,</tt> <tt class="py-string">"a1"</tt><tt class="py-op">,</tt> <tt class="py-string">"a2"</tt><tt class="py-op">,</tt> <tt class="py-string">"test0"</tt><tt class="py-op">,</tt> <tt class="py-string">"test1"</tt><tt class="py-op">,</tt> <tt class="py-string">"test2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1288" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1282', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1283" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1283', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1162"></a><tt class="py-lineno">1162</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1163"></a><tt class="py-lineno">1163</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"text0"</tt><tt class="py-op">,</tt> <tt class="py-string">"text1"</tt><tt class="py-op">,</tt> <tt class="py-string">"text2"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT0"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1164"></a><tt class="py-lineno">1164</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1284" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1288', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1289" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1289', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1169"></a><tt class="py-lineno">1169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"text0"</tt><tt class="py-op">,</tt> <tt class="py-string">"text1"</tt><tt class="py-op">,</tt> <tt class="py-string">"text2"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT0"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TEXT2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1290" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1284', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1285" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1285', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1165"></a><tt class="py-lineno">1165</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1166"></a><tt class="py-lineno">1166</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"tail0"</tt><tt class="py-op">,</tt> <tt class="py-string">"tail1"</tt><tt class="py-op">,</tt> <tt class="py-string">"tail2"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL0"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1167"></a><tt class="py-lineno">1167</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1286" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1286', 'tail', 'link-46');">tail</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1287" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1287', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1168"></a><tt class="py-lineno">1168</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_comment"></a><div id="_ETreeTestCaseBase.test_comment-def"><a name="L1169"></a><tt class="py-lineno">1169</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment">test_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment-expanded"><a name="L1170"></a><tt class="py-lineno">1170</tt>  <tt class="py-line">        <tt id="link-1288" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1290', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1291" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1291', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">"tail0"</tt><tt class="py-op">,</tt> <tt class="py-string">"tail1"</tt><tt class="py-op">,</tt> <tt class="py-string">"tail2"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL0"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL1"</tt><tt class="py-op">,</tt> <tt class="py-string">"TAIL2"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1292" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1292', 'tail', 'link-46');">tail</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-1293" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1293', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_comment"></a><div id="_ETreeTestCaseBase.test_comment-def"><a name="L1176"></a><tt class="py-lineno">1176</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment">test_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment-expanded"><a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">        <tt id="link-1294" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1288', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1289" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1294', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1295" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1289', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1290" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1295', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1296" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1290', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1171"></a><tt class="py-lineno">1171</tt>  <tt class="py-line">        <tt id="link-1291" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1291', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1292" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1296', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line">        <tt id="link-1297" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1297', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1298" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1292', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1293" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1293', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1172"></a><tt class="py-lineno">1172</tt>  <tt class="py-line">        <tt id="link-1294" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1294', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1295" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1298', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1299" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1299', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">        <tt id="link-1300" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1300', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1301" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1295', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1296" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1296', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L1173"></a><tt class="py-lineno">1173</tt>  <tt class="py-line"> </tt>
-<a name="L1174"></a><tt class="py-lineno">1174</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1297" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1301', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1302" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1302', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line"> </tt>
+<a name="L1181"></a><tt class="py-lineno">1181</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1303" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1297', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1175"></a><tt class="py-lineno">1175</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1298" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1298', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1299" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1299', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1176"></a><tt class="py-lineno">1176</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1300" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1303', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1304" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1304', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1305" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1305', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1306" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1300', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-1301" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1301', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1177"></a><tt class="py-lineno">1177</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1302" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1306', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt id="link-1307" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1307', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1308" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1302', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1178"></a><tt class="py-lineno">1178</tt>  <tt class="py-line"> </tt>
-<a name="L1179"></a><tt class="py-lineno">1179</tt>  <tt class="py-line">    <tt class="py-comment"># ElementTree &lt; 1.3 adds whitespace around comments</tt> </tt>
-<a name="L1180"></a><tt class="py-lineno">1180</tt>  <tt class="py-line">    <tt id="link-1303" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1303', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_comment_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_comment_text"></a><div id="_ETreeTestCaseBase.test_comment_text-def"><a name="L1181"></a><tt class="py-lineno">1181</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_text">test_comment_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_comment_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_text-expanded"><a name="L1182"></a><tt class="py-lineno">1182</tt>  <tt class="py-line">        <tt id="link-1304" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1308', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line"> </tt>
+<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line">    <tt class="py-comment"># ElementTree &lt; 1.3 adds whitespace around comments</tt> </tt>
+<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">    <tt id="link-1309" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1309', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_comment_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_comment_text"></a><div id="_ETreeTestCaseBase.test_comment_text-def"><a name="L1188"></a><tt class="py-lineno">1188</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_text">test_comment_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_comment_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_text-expanded"><a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt id="link-1310" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1304', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1305" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1310', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1311" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1305', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1306" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1311', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1312" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1306', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1183"></a><tt class="py-lineno">1183</tt>  <tt class="py-line">        <tt id="link-1307" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1307', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1308" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1312', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line">        <tt id="link-1313" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1313', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1314" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1308', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1309" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1309', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1184"></a><tt class="py-lineno">1184</tt>  <tt class="py-line">        <tt id="link-1310" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1310', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1311" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1314', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1315" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1315', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt id="link-1316" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1316', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1317" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1311', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1312" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1312', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L1185"></a><tt class="py-lineno">1185</tt>  <tt class="py-line">        <tt id="link-1313" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1313', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1314" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1317', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1318" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1318', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">        <tt id="link-1319" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1319', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1320" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1314', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1315" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1315', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L1186"></a><tt class="py-lineno">1186</tt>  <tt class="py-line"> </tt>
-<a name="L1187"></a><tt class="py-lineno">1187</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1316" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1320', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1321" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1321', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line"> </tt>
+<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1322" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1316', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1188"></a><tt class="py-lineno">1188</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1317" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1317', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1318" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1318', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1189"></a><tt class="py-lineno">1189</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1319" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1322', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1323" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1323', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1324" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1324', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1325" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1319', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1190"></a><tt class="py-lineno">1190</tt>  <tt class="py-line"> </tt>
-<a name="L1191"></a><tt class="py-lineno">1191</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1192"></a><tt class="py-lineno">1192</tt>  <tt class="py-line">            <tt id="link-1320" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1320', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!--foo--&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1193"></a><tt class="py-lineno">1193</tt>  <tt class="py-line">            <tt id="link-1321" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1321', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1194"></a><tt class="py-lineno">1194</tt>  <tt class="py-line"> </tt>
-<a name="L1195"></a><tt class="py-lineno">1195</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1322" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1325', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"> </tt>
+<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt id="link-1326" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1326', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!--foo--&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt id="link-1327" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1327', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
+<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1328" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1322', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
-<a name="L1196"></a><tt class="py-lineno">1196</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1323" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1328', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TEST"</tt> </tt>
+<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1329" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1323', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'TEST'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1197"></a><tt class="py-lineno">1197</tt>  <tt class="py-line"> </tt>
-<a name="L1198"></a><tt class="py-lineno">1198</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1199"></a><tt class="py-lineno">1199</tt>  <tt class="py-line">            <tt id="link-1324" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1324', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!--TEST--&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1200"></a><tt class="py-lineno">1200</tt>  <tt class="py-line">            <tt id="link-1325" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1325', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1201"></a><tt class="py-lineno">1201</tt>  <tt class="py-line"> </tt>
-<a name="L1202"></a><tt class="py-lineno">1202</tt>  <tt class="py-line">    <tt class="py-comment"># ElementTree &lt; 1.3 adds whitespace around comments</tt> </tt>
-<a name="L1203"></a><tt class="py-lineno">1203</tt>  <tt class="py-line">    <tt id="link-1326" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1326', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_comment_whitespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_comment_whitespace"></a><div id="_ETreeTestCaseBase.test_comment_whitespace-def"><a name="L1204"></a><tt class="py-lineno">1204</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_whitespace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_whitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_whitespace">test_comment_whitespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_comment_whitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_whitespace-expanded"><a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt id="link-1327" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1329', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">'TEST'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1204"></a><tt class="py-lineno">1204</tt>  <tt class="py-line"> </tt>
+<a name="L1205"></a><tt class="py-lineno">1205</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">            <tt id="link-1330" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1330', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!--TEST--&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">            <tt id="link-1331" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1331', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line"> </tt>
+<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line">    <tt class="py-comment"># ElementTree &lt; 1.3 adds whitespace around comments</tt> </tt>
+<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">    <tt id="link-1332" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1332', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_comment_whitespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_comment_whitespace"></a><div id="_ETreeTestCaseBase.test_comment_whitespace-def"><a name="L1211"></a><tt class="py-lineno">1211</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_whitespace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_whitespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_whitespace">test_comment_whitespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_comment_whitespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_whitespace-expanded"><a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt id="link-1333" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1327', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1328" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1333', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1334" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1328', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1329" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1334', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1335" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1329', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1206"></a><tt class="py-lineno">1206</tt>  <tt class="py-line">        <tt id="link-1330" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1330', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1331" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1335', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">        <tt id="link-1336" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1336', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1337" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1331', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1332" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1332', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1207"></a><tt class="py-lineno">1207</tt>  <tt class="py-line">        <tt id="link-1333" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1333', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1334" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1337', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1338" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1338', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">        <tt id="link-1339" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1339', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1340" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1334', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1335" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1335', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L1208"></a><tt class="py-lineno">1208</tt>  <tt class="py-line">        <tt id="link-1336" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1336', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1337" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1340', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1341" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1341', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">        <tt id="link-1342" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1342', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1343" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1337', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1338" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1338', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L1209"></a><tt class="py-lineno">1209</tt>  <tt class="py-line"> </tt>
-<a name="L1210"></a><tt class="py-lineno">1210</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1339" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1343', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1344" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1344', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line"> </tt>
+<a name="L1217"></a><tt class="py-lineno">1217</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1345" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1339', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1211"></a><tt class="py-lineno">1211</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1340" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1340', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1341" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1341', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">' foo  '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1212"></a><tt class="py-lineno">1212</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1342" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1345', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1346" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1346', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-1347" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1347', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">' foo  '</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1348" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1342', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">' foo  '</tt><tt class="py-op">)</tt> </tt>
-<a name="L1213"></a><tt class="py-lineno">1213</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1214"></a><tt class="py-lineno">1214</tt>  <tt class="py-line">            <tt id="link-1343" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1343', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!-- foo  --&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1215"></a><tt class="py-lineno">1215</tt>  <tt class="py-line">            <tt id="link-1344" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1344', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1216"></a><tt class="py-lineno">1216</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_comment_nonsense"></a><div id="_ETreeTestCaseBase.test_comment_nonsense-def"><a name="L1217"></a><tt class="py-lineno">1217</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_nonsense-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_nonsense');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_nonsense">test_comment_nonsense</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_comment_nonsense-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_nonsense-expanded"><a name="L1218"></a><tt class="py-lineno">1218</tt>  <tt class="py-line">        <tt id="link-1345" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1345', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1346" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1348', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt class="py-string">' foo  '</tt><tt class="py-op">)</tt> </tt>
+<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">            <tt id="link-1349" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1349', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;!-- foo  --&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">            <tt id="link-1350" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1350', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_comment_nonsense"></a><div id="_ETreeTestCaseBase.test_comment_nonsense-def"><a name="L1224"></a><tt class="py-lineno">1224</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_nonsense-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_nonsense');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_nonsense">test_comment_nonsense</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_comment_nonsense-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_nonsense-expanded"><a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt id="link-1351" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1351', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1352" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1346', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1347" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1347', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L1219"></a><tt class="py-lineno">1219</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1348" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1348', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1220"></a><tt class="py-lineno">1220</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1349" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1352', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1353" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1353', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1354" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1354', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1355" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1349', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1221"></a><tt class="py-lineno">1221</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1350" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1355', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1356" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-1350', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1222"></a><tt class="py-lineno">1222</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1351" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-1356', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1229"></a><tt class="py-lineno">1229</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1357" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1351', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1223"></a><tt class="py-lineno">1223</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1352" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1357', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1358" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1352', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1224"></a><tt class="py-lineno">1224</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1225"></a><tt class="py-lineno">1225</tt>  <tt class="py-line">        <tt class="py-comment"># should not iterate</tt> </tt>
-<a name="L1226"></a><tt class="py-lineno">1226</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">c</tt><tt class="py-op">:</tt> </tt>
-<a name="L1227"></a><tt class="py-lineno">1227</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1228"></a><tt class="py-lineno">1228</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_pi"></a><div id="_ETreeTestCaseBase.test_pi-def"><a name="L1229"></a><tt class="py-lineno">1229</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_pi-toggle" onclick="return toggle('_ETreeTestCaseBase.test_pi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi">test_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_pi-expanded"><a name="L1230"></a><tt class="py-lineno">1230</tt>  <tt class="py-line">        <tt class="py-comment"># lxml.etree separates target and text</tt> </tt>
-<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt id="link-1353" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1358', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1231"></a><tt class="py-lineno">1231</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt class="py-comment"># should not iterate</tt> </tt>
+<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">c</tt><tt class="py-op">:</tt> </tt>
+<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_pi"></a><div id="_ETreeTestCaseBase.test_pi-def"><a name="L1236"></a><tt class="py-lineno">1236</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_pi-toggle" onclick="return toggle('_ETreeTestCaseBase.test_pi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi">test_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_pi-expanded"><a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">        <tt class="py-comment"># lxml.etree separates target and text</tt> </tt>
+<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt id="link-1359" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1353', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1354" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1359', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1360" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1354', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1355" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1360', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1361" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1355', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1232"></a><tt class="py-lineno">1232</tt>  <tt class="py-line">        <tt id="link-1356" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1356', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1357" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1361', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">        <tt id="link-1362" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1362', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1363" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1357', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1358" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1358', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1233"></a><tt class="py-lineno">1233</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1359" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1363', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1364" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1364', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1365" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1359', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
-<a name="L1234"></a><tt class="py-lineno">1234</tt>  <tt class="py-line"> </tt>
-<a name="L1235"></a><tt class="py-lineno">1235</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1360" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1365', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
+<a name="L1241"></a><tt class="py-lineno">1241</tt>  <tt class="py-line"> </tt>
+<a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1366" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1360', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1236"></a><tt class="py-lineno">1236</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1361" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1361', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'some more text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1237"></a><tt class="py-lineno">1237</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1362" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1366', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1367" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1367', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'some more text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1368" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1362', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
-<a name="L1238"></a><tt class="py-lineno">1238</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1363" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1363', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1364" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1364', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;a&gt;&lt;?foo some more text?&gt;&lt;/a&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1239"></a><tt class="py-lineno">1239</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1240"></a><tt class="py-lineno">1240</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_processinginstruction"></a><div id="_ETreeTestCaseBase.test_processinginstruction-def"><a name="L1241"></a><tt class="py-lineno">1241</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_processinginstruction-toggle" onclick="return toggle('_ETreeTestCaseBase.test_processinginstruction');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_processinginstruction">test_processinginstruction</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_processinginstruction-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_processinginstruction-expanded"><a name="L1242"></a><tt class="py-lineno">1242</tt>  <tt class="py-line">        <tt class="py-comment"># lxml.etree separates target and text</tt> </tt>
-<a name="L1243"></a><tt class="py-lineno">1243</tt>  <tt class="py-line">        <tt id="link-1365" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1368', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
+<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1369" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1369', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1370" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1370', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;a&gt;&lt;?foo some more text?&gt;&lt;/a&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_processinginstruction"></a><div id="_ETreeTestCaseBase.test_processinginstruction-def"><a name="L1248"></a><tt class="py-lineno">1248</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_processinginstruction-toggle" onclick="return toggle('_ETreeTestCaseBase.test_processinginstruction');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_processinginstruction">test_processinginstruction</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_processinginstruction-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_processinginstruction-expanded"><a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-comment"># lxml.etree separates target and text</tt> </tt>
+<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt id="link-1371" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1365', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1366" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1371', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1372" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1366', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1367" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1372', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1373" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1367', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1244"></a><tt class="py-lineno">1244</tt>  <tt class="py-line">        <tt id="link-1368" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1368', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1369" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1373', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">        <tt id="link-1374" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1374', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1375" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1369', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1370" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1370', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1245"></a><tt class="py-lineno">1245</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1371" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1375', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1376" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1376', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1377" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1371', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1372" class="py-name" targets="Function lxml.etree.PI()=lxml.etree-module.html#PI"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1372', 'PI', 'link-1372');">PI</a></tt> </tt>
-<a name="L1246"></a><tt class="py-lineno">1246</tt>  <tt class="py-line"> </tt>
-<a name="L1247"></a><tt class="py-lineno">1247</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1373" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1377', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1378" class="py-name" targets="Function lxml.etree.PI()=lxml.etree-module.html#PI"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1378', 'PI', 'link-1378');">PI</a></tt> </tt>
+<a name="L1253"></a><tt class="py-lineno">1253</tt>  <tt class="py-line"> </tt>
+<a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1379" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1373', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1248"></a><tt class="py-lineno">1248</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1374" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1374', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'some more text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1249"></a><tt class="py-lineno">1249</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1375" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1379', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1380" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1380', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">,</tt> <tt class="py-string">'some more text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1381" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1375', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
-<a name="L1250"></a><tt class="py-lineno">1250</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1376" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1376', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1377" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1377', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;a&gt;&lt;?foo some more text?&gt;&lt;/a&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1251"></a><tt class="py-lineno">1251</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1252"></a><tt class="py-lineno">1252</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_pi_nonsense"></a><div id="_ETreeTestCaseBase.test_pi_nonsense-def"><a name="L1253"></a><tt class="py-lineno">1253</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_pi_nonsense-toggle" onclick="return toggle('_ETreeTestCaseBase.test_pi_nonsense');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi_nonsense">test_pi_nonsense</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_pi_nonsense-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_pi_nonsense-expanded"><a name="L1254"></a><tt class="py-lineno">1254</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1378" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1381', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">)</tt> </tt>
+<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1382" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1382', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1383" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1383', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;a&gt;&lt;?foo some more text?&gt;&lt;/a&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_pi_nonsense"></a><div id="_ETreeTestCaseBase.test_pi_nonsense-def"><a name="L1260"></a><tt class="py-lineno">1260</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_pi_nonsense-toggle" onclick="return toggle('_ETreeTestCaseBase.test_pi_nonsense');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_pi_nonsense">test_pi_nonsense</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_pi_nonsense-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_pi_nonsense-expanded"><a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-name">ProcessingInstruction</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1384" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1378', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
-<a name="L1255"></a><tt class="py-lineno">1255</tt>  <tt class="py-line">        <tt id="link-1379" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1379', 'pi', 'link-1379');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1256"></a><tt class="py-lineno">1256</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt id="link-1380" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1380', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1381" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1384', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
+<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt id="link-1385" class="py-name" targets="Method lxml.etree.TreeBuilder.pi()=lxml.etree.TreeBuilder-class.html#pi"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1385', 'pi', 'link-1385');">pi</a></tt> <tt class="py-op">=</tt> <tt class="py-name">ProcessingInstruction</tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt id="link-1386" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1386', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1387" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1381', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1257"></a><tt class="py-lineno">1257</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1382" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1382', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1383" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-1387', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1388" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1388', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1389" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-1383', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1258"></a><tt class="py-lineno">1258</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1384" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1384', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1385" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-1389', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1265"></a><tt class="py-lineno">1265</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-1390" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1390', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1391" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1385', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1259"></a><tt class="py-lineno">1259</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1386" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1386', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1387" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-1391', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt id="link-1392" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1392', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">.</tt><tt id="link-1393" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1387', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1260"></a><tt class="py-lineno">1260</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-1388" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1388', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1261"></a><tt class="py-lineno">1261</tt>  <tt class="py-line">        <tt class="py-comment"># should not iterate</tt> </tt>
-<a name="L1262"></a><tt class="py-lineno">1262</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1389" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1389', 'pi', 'link-1379');">pi</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L1263"></a><tt class="py-lineno">1263</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1264"></a><tt class="py-lineno">1264</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setitem"></a><div id="_ETreeTestCaseBase.test_setitem-def"><a name="L1265"></a><tt class="py-lineno">1265</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem">test_setitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem-expanded"><a name="L1266"></a><tt class="py-lineno">1266</tt>  <tt class="py-line">        <tt id="link-1390" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1393', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-1394" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1394', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line">        <tt class="py-comment"># should not iterate</tt> </tt>
+<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt id="link-1395" class="py-name"><a title="lxml.etree.TreeBuilder.pi" class="py-name" href="#" onclick="return doclink('link-1395', 'pi', 'link-1385');">pi</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setitem"></a><div id="_ETreeTestCaseBase.test_setitem-def"><a name="L1272"></a><tt class="py-lineno">1272</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem">test_setitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem-expanded"><a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt id="link-1396" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1390', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1391" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1396', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1397" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1391', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1392" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1397', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1398" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1392', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1267"></a><tt class="py-lineno">1267</tt>  <tt class="py-line">        <tt id="link-1393" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1393', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1394" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1398', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">        <tt id="link-1399" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1399', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1400" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1394', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1395" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1395', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1268"></a><tt class="py-lineno">1268</tt>  <tt class="py-line"> </tt>
-<a name="L1269"></a><tt class="py-lineno">1269</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1396" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1400', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1401" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1401', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line"> </tt>
+<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1402" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1396', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1270"></a><tt class="py-lineno">1270</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1397" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1397', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1271"></a><tt class="py-lineno">1271</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1398" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1402', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1403" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1403', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1404" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1398', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1272"></a><tt class="py-lineno">1272</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
-<a name="L1273"></a><tt class="py-lineno">1273</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1274"></a><tt class="py-lineno">1274</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
-<a name="L1275"></a><tt class="py-lineno">1275</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1276"></a><tt class="py-lineno">1276</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1399" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1399', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1400" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1400', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1277"></a><tt class="py-lineno">1277</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1278"></a><tt class="py-lineno">1278</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1401" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1401', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1402" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1402', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">                       <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_setitem2"></a><div id="_ETreeTestCaseBase.test_setitem2-def"><a name="L1281"></a><tt class="py-lineno">1281</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem2">test_setitem2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setitem2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem2-expanded"><a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">        <tt id="link-1403" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1404', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1279"></a><tt class="py-lineno">1279</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
+<a name="L1280"></a><tt class="py-lineno">1280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1281"></a><tt class="py-lineno">1281</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
+<a name="L1282"></a><tt class="py-lineno">1282</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1405" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1405', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1406" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1406', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1407" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1407', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1408" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1408', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">                       <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_setitem2"></a><div id="_ETreeTestCaseBase.test_setitem2-def"><a name="L1288"></a><tt class="py-lineno">1288</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem2">test_setitem2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setitem2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem2-expanded"><a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt id="link-1409" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1403', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1404" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1409', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1410" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1404', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1405" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1410', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1411" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1405', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1283"></a><tt class="py-lineno">1283</tt>  <tt class="py-line">        <tt id="link-1406" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1406', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1407" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1411', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">        <tt id="link-1412" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1412', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1413" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1407', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1408" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1408', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1284"></a><tt class="py-lineno">1284</tt>  <tt class="py-line"> </tt>
-<a name="L1285"></a><tt class="py-lineno">1285</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1409" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1413', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1414" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1414', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line"> </tt>
+<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1415" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1409', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1286"></a><tt class="py-lineno">1286</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1287"></a><tt class="py-lineno">1287</tt>  <tt class="py-line">            <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1410" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1410', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
-<a name="L1288"></a><tt class="py-lineno">1288</tt>  <tt class="py-line">            <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1411" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1411', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1289"></a><tt class="py-lineno">1289</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1290"></a><tt class="py-lineno">1290</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1412" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1415', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">            <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1416" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1416', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b%s'</tt> <tt class="py-op">%</tt> <tt class="py-name">i</tt><tt class="py-op">)</tt> </tt>
+<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">            <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1417" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1417', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">            <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1418" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1412', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1291"></a><tt class="py-lineno">1291</tt>  <tt class="py-line">            <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1413" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1413', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1292"></a><tt class="py-lineno">1292</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt> </tt>
-<a name="L1293"></a><tt class="py-lineno">1293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1414" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1414', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1294"></a><tt class="py-lineno">1294</tt>  <tt class="py-line">            <tt id="link-1415" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1415', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1295"></a><tt class="py-lineno">1295</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1296"></a><tt class="py-lineno">1296</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1416" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1416', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1417" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1417', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1297"></a><tt class="py-lineno">1297</tt>  <tt class="py-line">                       <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setitem_replace"></a><div id="_ETreeTestCaseBase.test_setitem_replace-def"><a name="L1299"></a><tt class="py-lineno">1299</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_replace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_replace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_replace">test_setitem_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setitem_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_replace-expanded"><a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt id="link-1418" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1418', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1298"></a><tt class="py-lineno">1298</tt>  <tt class="py-line">            <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1419" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1419', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1299"></a><tt class="py-lineno">1299</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt> </tt>
+<a name="L1300"></a><tt class="py-lineno">1300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1420" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1420', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">            <tt id="link-1421" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1421', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;d&gt;&lt;e&gt;&lt;/e&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1422" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1422', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1423" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1423', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">                       <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setitem_replace"></a><div id="_ETreeTestCaseBase.test_setitem_replace-def"><a name="L1306"></a><tt class="py-lineno">1306</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_replace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_replace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_replace">test_setitem_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setitem_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_replace-expanded"><a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">        <tt id="link-1424" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1418', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1419" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1424', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1425" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1419', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1420" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1425', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1426" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1420', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1301"></a><tt class="py-lineno">1301</tt>  <tt class="py-line">        <tt id="link-1421" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1421', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1422" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1426', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line">        <tt id="link-1427" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1427', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1428" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1422', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1423" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1423', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1302"></a><tt class="py-lineno">1302</tt>  <tt class="py-line"> </tt>
-<a name="L1303"></a><tt class="py-lineno">1303</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1424" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1428', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1429" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1429', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1309"></a><tt class="py-lineno">1309</tt>  <tt class="py-line"> </tt>
+<a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1430" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1424', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1304"></a><tt class="py-lineno">1304</tt>  <tt class="py-line">        <tt id="link-1425" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1425', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1305"></a><tt class="py-lineno">1305</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1426" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1430', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt id="link-1431" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1431', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1432" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1426', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1306"></a><tt class="py-lineno">1306</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt> </tt>
-<a name="L1307"></a><tt class="py-lineno">1307</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1427" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1427', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1428" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1428', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1308"></a><tt class="py-lineno">1308</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setitem_indexerror"></a><div id="_ETreeTestCaseBase.test_setitem_indexerror-def"><a name="L1309"></a><tt class="py-lineno">1309</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_indexerror-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_indexerror');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_indexerror">test_setitem_indexerror</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setitem_indexerror-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_indexerror-expanded"><a name="L1310"></a><tt class="py-lineno">1310</tt>  <tt class="py-line">        <tt id="link-1429" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1432', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">d</tt> </tt>
+<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1433" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1433', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1434" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1434', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setitem_indexerror"></a><div id="_ETreeTestCaseBase.test_setitem_indexerror-def"><a name="L1316"></a><tt class="py-lineno">1316</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_indexerror-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_indexerror');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_indexerror">test_setitem_indexerror</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setitem_indexerror-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_indexerror-expanded"><a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line">        <tt id="link-1435" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1429', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1430" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1435', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1436" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1430', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1431" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1436', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1437" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1431', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1311"></a><tt class="py-lineno">1311</tt>  <tt class="py-line">        <tt id="link-1432" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1432', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1433" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1437', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1318"></a><tt class="py-lineno">1318</tt>  <tt class="py-line">        <tt id="link-1438" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1438', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1439" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1433', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1434" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1434', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1312"></a><tt class="py-lineno">1312</tt>  <tt class="py-line"> </tt>
-<a name="L1313"></a><tt class="py-lineno">1313</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1435" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1439', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1440" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1440', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line"> </tt>
+<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1441" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1435', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1314"></a><tt class="py-lineno">1314</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1436" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1436', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1315"></a><tt class="py-lineno">1315</tt>  <tt class="py-line"> </tt>
-<a name="L1316"></a><tt class="py-lineno">1316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IndexError</tt><tt class="py-op">,</tt> <tt class="py-name">operator</tt><tt class="py-op">.</tt><tt class="py-name">setitem</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt id="link-1437" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1441', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1442" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1442', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line"> </tt>
+<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IndexError</tt><tt class="py-op">,</tt> <tt class="py-name">operator</tt><tt class="py-op">.</tt><tt class="py-name">setitem</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt id="link-1443" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1437', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1317"></a><tt class="py-lineno">1317</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setitem_tail"></a><div id="_ETreeTestCaseBase.test_setitem_tail-def"><a name="L1318"></a><tt class="py-lineno">1318</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_tail">test_setitem_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setitem_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_tail-expanded"><a name="L1319"></a><tt class="py-lineno">1319</tt>  <tt class="py-line">        <tt id="link-1438" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1443', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setitem_tail"></a><div id="_ETreeTestCaseBase.test_setitem_tail-def"><a name="L1325"></a><tt class="py-lineno">1325</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setitem_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setitem_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setitem_tail">test_setitem_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setitem_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setitem_tail-expanded"><a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt id="link-1444" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1438', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1439" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1444', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1445" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1439', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1440" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1445', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1446" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1440', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1320"></a><tt class="py-lineno">1320</tt>  <tt class="py-line">        <tt id="link-1441" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1441', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1442" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1446', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line">        <tt id="link-1447" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1447', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1448" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1442', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1443" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1443', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1321"></a><tt class="py-lineno">1321</tt>  <tt class="py-line"> </tt>
-<a name="L1322"></a><tt class="py-lineno">1322</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1444" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1448', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1449" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1449', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line"> </tt>
+<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1450" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1444', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1323"></a><tt class="py-lineno">1323</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1445" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1445', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1324"></a><tt class="py-lineno">1324</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1446" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1446', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'B2'</tt> </tt>
-<a name="L1325"></a><tt class="py-lineno">1325</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1447" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1450', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1451" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1451', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1452" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1452', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'B2'</tt> </tt>
+<a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1453" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1447', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1326"></a><tt class="py-lineno">1326</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1448" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1448', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'C2'</tt> </tt>
-<a name="L1327"></a><tt class="py-lineno">1327</tt>  <tt class="py-line"> </tt>
-<a name="L1328"></a><tt class="py-lineno">1328</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
-<a name="L1329"></a><tt class="py-lineno">1329</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1449" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1449', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1330"></a><tt class="py-lineno">1330</tt>  <tt class="py-line">            <tt id="link-1450" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1450', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1331"></a><tt class="py-lineno">1331</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1332"></a><tt class="py-lineno">1332</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tag_write"></a><div id="_ETreeTestCaseBase.test_tag_write-def"><a name="L1333"></a><tt class="py-lineno">1333</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_write-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_write">test_tag_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tag_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_write-expanded"><a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line">        <tt id="link-1451" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1453', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1333"></a><tt class="py-lineno">1333</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1454" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1454', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'C2'</tt> </tt>
+<a name="L1334"></a><tt class="py-lineno">1334</tt>  <tt class="py-line"> </tt>
+<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">c</tt> </tt>
+<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1455" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1455', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">            <tt id="link-1456" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1456', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tag_write"></a><div id="_ETreeTestCaseBase.test_tag_write-def"><a name="L1340"></a><tt class="py-lineno">1340</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_write-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_write');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_write">test_tag_write</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tag_write-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_write-expanded"><a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line">        <tt id="link-1457" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1451', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1452" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1457', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1458" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1452', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1453" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1458', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1459" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1453', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1335"></a><tt class="py-lineno">1335</tt>  <tt class="py-line">        <tt id="link-1454" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1454', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1455" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1459', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">        <tt id="link-1460" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1460', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1461" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1455', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1456" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1456', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1336"></a><tt class="py-lineno">1336</tt>  <tt class="py-line"> </tt>
-<a name="L1337"></a><tt class="py-lineno">1337</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1457" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1461', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1462" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1462', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line"> </tt>
+<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1463" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1457', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1338"></a><tt class="py-lineno">1338</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1458" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1458', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1339"></a><tt class="py-lineno">1339</tt>  <tt class="py-line"> </tt>
-<a name="L1340"></a><tt class="py-lineno">1340</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1459" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1463', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1464" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1464', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line"> </tt>
+<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1465" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1459', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
-<a name="L1341"></a><tt class="py-lineno">1341</tt>  <tt class="py-line"> </tt>
-<a name="L1342"></a><tt class="py-lineno">1342</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1343"></a><tt class="py-lineno">1343</tt>  <tt class="py-line">            <tt class="py-string">'c'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1344"></a><tt class="py-lineno">1344</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1460" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1465', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line"> </tt>
+<a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1350"></a><tt class="py-lineno">1350</tt>  <tt class="py-line">            <tt class="py-string">'c'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1466" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1460', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1345"></a><tt class="py-lineno">1345</tt>  <tt class="py-line"> </tt>
-<a name="L1346"></a><tt class="py-lineno">1346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1461" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1461', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1347"></a><tt class="py-lineno">1347</tt>  <tt class="py-line">            <tt id="link-1462" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1462', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;b&gt;&lt;/b&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1348"></a><tt class="py-lineno">1348</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1349"></a><tt class="py-lineno">1349</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tag_reset_ns"></a><div id="_ETreeTestCaseBase.test_tag_reset_ns-def"><a name="L1350"></a><tt class="py-lineno">1350</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_reset_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_reset_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_ns">test_tag_reset_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tag_reset_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_reset_ns-expanded"><a name="L1351"></a><tt class="py-lineno">1351</tt>  <tt class="py-line">        <tt id="link-1463" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1466', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line"> </tt>
+<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1467" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1467', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line">            <tt id="link-1468" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1468', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;b&gt;&lt;/b&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tag_reset_ns"></a><div id="_ETreeTestCaseBase.test_tag_reset_ns-def"><a name="L1357"></a><tt class="py-lineno">1357</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_reset_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_reset_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_ns">test_tag_reset_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tag_reset_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_reset_ns-expanded"><a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line">        <tt id="link-1469" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1463', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1464" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1469', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1470" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1464', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1465" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1470', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1471" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1465', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1352"></a><tt class="py-lineno">1352</tt>  <tt class="py-line">        <tt id="link-1466" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1466', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1467" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1471', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">        <tt id="link-1472" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1472', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1473" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1467', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1468" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1468', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1353"></a><tt class="py-lineno">1353</tt>  <tt class="py-line">        <tt id="link-1469" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1469', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1470" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1473', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1474" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1474', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line">        <tt id="link-1475" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1475', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1476" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1470', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1471" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1471', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L1354"></a><tt class="py-lineno">1354</tt>  <tt class="py-line"> </tt>
-<a name="L1355"></a><tt class="py-lineno">1355</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1472" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1476', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1477" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1477', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line"> </tt>
+<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1478" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1472', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{a}a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1356"></a><tt class="py-lineno">1356</tt>  <tt class="py-line">        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt id="link-1473" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1473', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{a}b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1357"></a><tt class="py-lineno">1357</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt id="link-1474" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1474', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{b}b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1358"></a><tt class="py-lineno">1358</tt>  <tt class="py-line"> </tt>
-<a name="L1359"></a><tt class="py-lineno">1359</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{a}b'</tt><tt class="py-op">,</tt>  <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1475" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1478', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{a}a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt id="link-1479" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1479', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{a}b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt id="link-1480" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1480', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{b}b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line"> </tt>
+<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{a}b'</tt><tt class="py-op">,</tt>  <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1481" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1475', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1360"></a><tt class="py-lineno">1360</tt>  <tt class="py-line"> </tt>
-<a name="L1361"></a><tt class="py-lineno">1361</tt>  <tt class="py-line">        <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1476" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1481', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"> </tt>
+<a name="L1368"></a><tt class="py-lineno">1368</tt>  <tt class="py-line">        <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1482" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1476', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
-<a name="L1362"></a><tt class="py-lineno">1362</tt>  <tt class="py-line"> </tt>
-<a name="L1363"></a><tt class="py-lineno">1363</tt>  <tt class="py-line">        <tt class="py-comment"># can't use C14N here!</tt> </tt>
-<a name="L1364"></a><tt class="py-lineno">1364</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1477" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1482', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line"> </tt>
+<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt class="py-comment"># can't use C14N here!</tt> </tt>
+<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-name">b1</tt><tt class="py-op">.</tt><tt id="link-1483" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1477', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1365"></a><tt class="py-lineno">1365</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1478" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1478', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-1479" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1479', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1366"></a><tt class="py-lineno">1366</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-1480" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1480', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-1481" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1481', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1367"></a><tt class="py-lineno">1367</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tag_reset_root_ns"></a><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-def"><a name="L1368"></a><tt class="py-lineno">1368</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_reset_root_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_reset_root_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns">test_tag_reset_root_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-expanded"><a name="L1369"></a><tt class="py-lineno">1369</tt>  <tt class="py-line">        <tt id="link-1482" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1483', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1484" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1484', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-1485" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1485', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-1486" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1486', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt id="link-1487" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1487', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tag_reset_root_ns"></a><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-def"><a name="L1375"></a><tt class="py-lineno">1375</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_reset_root_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_reset_root_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_reset_root_ns">test_tag_reset_root_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_reset_root_ns-expanded"><a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line">        <tt id="link-1488" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1482', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1483" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1488', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1489" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1483', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1484" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1489', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1490" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1484', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1370"></a><tt class="py-lineno">1370</tt>  <tt class="py-line">        <tt id="link-1485" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1485', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1486" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1490', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt id="link-1491" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1491', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1492" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1486', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1487" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1487', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1371"></a><tt class="py-lineno">1371</tt>  <tt class="py-line">        <tt id="link-1488" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1488', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1489" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1492', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1493" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1493', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line">        <tt id="link-1494" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1494', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1495" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1489', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1490" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1490', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L1372"></a><tt class="py-lineno">1372</tt>  <tt class="py-line"> </tt>
-<a name="L1373"></a><tt class="py-lineno">1373</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1491" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1495', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1496" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1496', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line"> </tt>
+<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1497" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1491', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{a}a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1374"></a><tt class="py-lineno">1374</tt>  <tt class="py-line">        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt id="link-1492" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1492', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{a}b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1375"></a><tt class="py-lineno">1375</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt id="link-1493" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1493', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{b}b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1376"></a><tt class="py-lineno">1376</tt>  <tt class="py-line"> </tt>
-<a name="L1377"></a><tt class="py-lineno">1377</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1494" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1497', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{a}a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">        <tt class="py-name">b1</tt> <tt class="py-op">=</tt> <tt id="link-1498" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1498', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{a}b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line">        <tt class="py-name">b2</tt> <tt class="py-op">=</tt> <tt id="link-1499" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1499', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{b}b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line"> </tt>
+<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1500" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1494', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
-<a name="L1378"></a><tt class="py-lineno">1378</tt>  <tt class="py-line"> </tt>
-<a name="L1379"></a><tt class="py-lineno">1379</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1380"></a><tt class="py-lineno">1380</tt>  <tt class="py-line">            <tt class="py-string">'c'</tt><tt class="py-op">,</tt> </tt>
-<a name="L1381"></a><tt class="py-lineno">1381</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1495" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1500', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line"> </tt>
+<a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1387"></a><tt class="py-lineno">1387</tt>  <tt class="py-line">            <tt class="py-string">'c'</tt><tt class="py-op">,</tt> </tt>
+<a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1501" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1495', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1382"></a><tt class="py-lineno">1382</tt>  <tt class="py-line"> </tt>
-<a name="L1383"></a><tt class="py-lineno">1383</tt>  <tt class="py-line">        <tt class="py-comment"># can't use C14N here!</tt> </tt>
-<a name="L1384"></a><tt class="py-lineno">1384</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt>  <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1496" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1501', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"> </tt>
+<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">        <tt class="py-comment"># can't use C14N here!</tt> </tt>
+<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt>  <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1502" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1496', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1385"></a><tt class="py-lineno">1385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1497" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1497', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-1498" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1498', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1386"></a><tt class="py-lineno">1386</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tag_str_subclass"></a><div id="_ETreeTestCaseBase.test_tag_str_subclass-def"><a name="L1387"></a><tt class="py-lineno">1387</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_str_subclass-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_str_subclass');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_str_subclass">test_tag_str_subclass</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tag_str_subclass-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_str_subclass-expanded"><a name="L1388"></a><tt class="py-lineno">1388</tt>  <tt class="py-line">        <tt id="link-1499" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1502', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-1503" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1503', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-1504" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1504', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tag_str_subclass"></a><div id="_ETreeTestCaseBase.test_tag_str_subclass-def"><a name="L1394"></a><tt class="py-lineno">1394</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tag_str_subclass-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tag_str_subclass');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tag_str_subclass">test_tag_str_subclass</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tag_str_subclass-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tag_str_subclass-expanded"><a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">        <tt id="link-1505" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1499', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1500" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1505', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1506" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1500', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1501" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1506', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1507" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1501', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1389"></a><tt class="py-lineno">1389</tt>  <tt class="py-line"> </tt>
-<a name="L1390"></a><tt class="py-lineno">1390</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">strTest</tt><tt class="py-op">(</tt><tt class="py-base-class">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L1391"></a><tt class="py-lineno">1391</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L1392"></a><tt class="py-lineno">1392</tt>  <tt class="py-line"> </tt>
-<a name="L1393"></a><tt class="py-lineno">1393</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1502" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1507', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line"> </tt>
+<a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">strTest</tt><tt class="py-op">(</tt><tt class="py-base-class">str</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1398"></a><tt class="py-lineno">1398</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line"> </tt>
+<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1508" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1502', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1394"></a><tt class="py-lineno">1394</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1503" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1508', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1509" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1503', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">strTest</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1395"></a><tt class="py-lineno">1395</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1504" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1504', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1505" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1505', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;TAG&gt;&lt;/TAG&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1396"></a><tt class="py-lineno">1396</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1397"></a><tt class="py-lineno">1397</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delitem"></a><div id="_ETreeTestCaseBase.test_delitem-def"><a name="L1398"></a><tt class="py-lineno">1398</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem">test_delitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delitem-expanded"><a name="L1399"></a><tt class="py-lineno">1399</tt>  <tt class="py-line">        <tt id="link-1506" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1509', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">=</tt> <tt class="py-name">strTest</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1510" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1510', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1511" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1511', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;TAG&gt;&lt;/TAG&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delitem"></a><div id="_ETreeTestCaseBase.test_delitem-def"><a name="L1405"></a><tt class="py-lineno">1405</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem">test_delitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delitem-expanded"><a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line">        <tt id="link-1512" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1506', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1507" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1512', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1513" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1507', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1508" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1513', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1514" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1508', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1400"></a><tt class="py-lineno">1400</tt>  <tt class="py-line">        <tt id="link-1509" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1509', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1510" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1514', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">        <tt id="link-1515" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1515', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1516" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1510', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1511" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1511', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1401"></a><tt class="py-lineno">1401</tt>  <tt class="py-line"> </tt>
-<a name="L1402"></a><tt class="py-lineno">1402</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1512" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1516', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1517" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1517', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line"> </tt>
+<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1518" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1512', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1403"></a><tt class="py-lineno">1403</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1513" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1513', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1404"></a><tt class="py-lineno">1404</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1514" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1514', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1405"></a><tt class="py-lineno">1405</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1515" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1515', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1406"></a><tt class="py-lineno">1406</tt>  <tt class="py-line"> </tt>
-<a name="L1407"></a><tt class="py-lineno">1407</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L1408"></a><tt class="py-lineno">1408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1516" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1516', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1409"></a><tt class="py-lineno">1409</tt>  <tt class="py-line">            <tt id="link-1517" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1517', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line"> </tt>
-<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1518" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1518', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">            <tt id="link-1519" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1519', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line"> </tt>
-<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1520" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1520', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">            <tt id="link-1521" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1521', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">        <tt class="py-comment"># move deleted element into other tree afterwards</tt> </tt>
-<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">        <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-1522" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1518', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1410"></a><tt class="py-lineno">1410</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1519" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1519', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1411"></a><tt class="py-lineno">1411</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1520" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1520', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1412"></a><tt class="py-lineno">1412</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1521" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1521', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1413"></a><tt class="py-lineno">1413</tt>  <tt class="py-line"> </tt>
+<a name="L1414"></a><tt class="py-lineno">1414</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L1415"></a><tt class="py-lineno">1415</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1522" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1522', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1416"></a><tt class="py-lineno">1416</tt>  <tt class="py-line">            <tt id="link-1523" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1523', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1417"></a><tt class="py-lineno">1417</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1418"></a><tt class="py-lineno">1418</tt>  <tt class="py-line"> </tt>
+<a name="L1419"></a><tt class="py-lineno">1419</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1420"></a><tt class="py-lineno">1420</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1524" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1524', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1421"></a><tt class="py-lineno">1421</tt>  <tt class="py-line">            <tt id="link-1525" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1525', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1422"></a><tt class="py-lineno">1422</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line"> </tt>
+<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1526" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1526', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">            <tt id="link-1527" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1527', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1428"></a><tt class="py-lineno">1428</tt>  <tt class="py-line">        <tt class="py-comment"># move deleted element into other tree afterwards</tt> </tt>
+<a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">        <tt class="py-name">other</tt> <tt class="py-op">=</tt> <tt id="link-1528" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1522', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'other'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1423"></a><tt class="py-lineno">1423</tt>  <tt class="py-line">        <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-1523" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1523', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-<a name="L1424"></a><tt class="py-lineno">1424</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1524" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1524', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1425"></a><tt class="py-lineno">1425</tt>  <tt class="py-line">            <tt id="link-1525" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1525', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;other&gt;&lt;c&gt;&lt;/c&gt;&lt;/other&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1426"></a><tt class="py-lineno">1426</tt>  <tt class="py-line">            <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1427"></a><tt class="py-lineno">1427</tt>  <tt class="py-line">     </tt>
-<a name="_ETreeTestCaseBase.test_del_insert"></a><div id="_ETreeTestCaseBase.test_del_insert-def"><a name="L1428"></a><tt class="py-lineno">1428</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_insert-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert">test_del_insert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_del_insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_insert-expanded"><a name="L1429"></a><tt class="py-lineno">1429</tt>  <tt class="py-line">        <tt id="link-1526" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1528', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'other'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt class="py-name">other</tt><tt class="py-op">.</tt><tt id="link-1529" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1529', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1530" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1530', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">            <tt id="link-1531" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1531', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;other&gt;&lt;c&gt;&lt;/c&gt;&lt;/other&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">            <tt class="py-name">other</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">     </tt>
+<a name="_ETreeTestCaseBase.test_del_insert"></a><div id="_ETreeTestCaseBase.test_del_insert-def"><a name="L1435"></a><tt class="py-lineno">1435</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_insert-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_insert">test_del_insert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_del_insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_insert-expanded"><a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt id="link-1532" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1526', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1527" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1532', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1533" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1527', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1528" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1533', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1534" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1528', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1430"></a><tt class="py-lineno">1430</tt>  <tt class="py-line">        <tt id="link-1529" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1529', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1530" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1534', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line">        <tt id="link-1535" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1535', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1536" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1530', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1531" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1531', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1431"></a><tt class="py-lineno">1431</tt>  <tt class="py-line"> </tt>
-<a name="L1432"></a><tt class="py-lineno">1432</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1532" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1536', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1537" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1537', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line"> </tt>
+<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1538" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1532', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1433"></a><tt class="py-lineno">1433</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1533" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1533', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1434"></a><tt class="py-lineno">1434</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1534" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1534', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1435"></a><tt class="py-lineno">1435</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1535" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1535', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1436"></a><tt class="py-lineno">1436</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1536" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1536', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1437"></a><tt class="py-lineno">1437</tt>  <tt class="py-line"> </tt>
-<a name="L1438"></a><tt class="py-lineno">1438</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1439"></a><tt class="py-lineno">1439</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1537" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1537', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">            <tt id="link-1538" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1538', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1539" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1539', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1540" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1540', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1541" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1541', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1542" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1542', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1538', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1440"></a><tt class="py-lineno">1440</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1539" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1539', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1441"></a><tt class="py-lineno">1441</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1540" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1540', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1442"></a><tt class="py-lineno">1442</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1541" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1541', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1443"></a><tt class="py-lineno">1443</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1542" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1542', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
 <a name="L1444"></a><tt class="py-lineno">1444</tt>  <tt class="py-line"> </tt>
-<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1445"></a><tt class="py-lineno">1445</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
 <a name="L1446"></a><tt class="py-lineno">1446</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1543" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1543', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">            <tt id="link-1544" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1544', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1447"></a><tt class="py-lineno">1447</tt>  <tt class="py-line">            <tt id="link-1544" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1544', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
 <a name="L1448"></a><tt class="py-lineno">1448</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
 <a name="L1449"></a><tt class="py-lineno">1449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1545" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1545', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1546" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1546', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
 <a name="L1450"></a><tt class="py-lineno">1450</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1547" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1547', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1548" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1548', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
 <a name="L1451"></a><tt class="py-lineno">1451</tt>  <tt class="py-line"> </tt>
-<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1549" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1549', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
-<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1550" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1550', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">            <tt id="link-1551" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1551', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1452"></a><tt class="py-lineno">1452</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1453"></a><tt class="py-lineno">1453</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1549" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1549', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1454"></a><tt class="py-lineno">1454</tt>  <tt class="py-line">            <tt id="link-1550" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1550', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
 <a name="L1455"></a><tt class="py-lineno">1455</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1552" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1552', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1553" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1553', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1554" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1554', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1555" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1555', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_del_setitem"></a><div id="_ETreeTestCaseBase.test_del_setitem-def"><a name="L1459"></a><tt class="py-lineno">1459</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_setitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_setitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setitem">test_del_setitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_del_setitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_setitem-expanded"><a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">        <tt id="link-1556" class="py-name"><a title="lxml.etree.Element
+<a name="L1456"></a><tt class="py-lineno">1456</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1551" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1551', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1552" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1552', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1457"></a><tt class="py-lineno">1457</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1553" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1553', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1554" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1554', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L1458"></a><tt class="py-lineno">1458</tt>  <tt class="py-line"> </tt>
+<a name="L1459"></a><tt class="py-lineno">1459</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1555" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1555', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L1460"></a><tt class="py-lineno">1460</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1556" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1556', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">            <tt id="link-1557" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1557', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1558" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1558', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1559" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1559', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1560" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1560', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1561" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1561', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_del_setitem"></a><div id="_ETreeTestCaseBase.test_del_setitem-def"><a name="L1466"></a><tt class="py-lineno">1466</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_setitem-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_setitem');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setitem">test_del_setitem</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_del_setitem-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_setitem-expanded"><a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">        <tt id="link-1562" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1556', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1557" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1562', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1563" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1557', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1558" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1563', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1564" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1558', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1461"></a><tt class="py-lineno">1461</tt>  <tt class="py-line">        <tt id="link-1559" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1559', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1560" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1564', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line">        <tt id="link-1565" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1565', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1566" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1560', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1561" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1561', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1462"></a><tt class="py-lineno">1462</tt>  <tt class="py-line"> </tt>
-<a name="L1463"></a><tt class="py-lineno">1463</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1562" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1566', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1567" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1567', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line"> </tt>
+<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1568" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1562', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1464"></a><tt class="py-lineno">1464</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1563" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1563', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1465"></a><tt class="py-lineno">1465</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1564" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1564', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1466"></a><tt class="py-lineno">1466</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1565" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1565', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1467"></a><tt class="py-lineno">1467</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1566" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1566', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1468"></a><tt class="py-lineno">1468</tt>  <tt class="py-line"> </tt>
-<a name="L1469"></a><tt class="py-lineno">1469</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1470"></a><tt class="py-lineno">1470</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> </tt>
-<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1567" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1567', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">            <tt id="link-1568" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1568', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1569" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1569', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1570" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1570', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1571" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1571', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1572" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1572', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_del_setslice"></a><div id="_ETreeTestCaseBase.test_del_setslice-def"><a name="L1478"></a><tt class="py-lineno">1478</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_setslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_setslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice">test_del_setslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_del_setslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_setslice-expanded"><a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">        <tt id="link-1573" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1568', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1471"></a><tt class="py-lineno">1471</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1569" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1569', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1472"></a><tt class="py-lineno">1472</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1570" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1570', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1473"></a><tt class="py-lineno">1473</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1571" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1571', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1474"></a><tt class="py-lineno">1474</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1572" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1572', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1475"></a><tt class="py-lineno">1475</tt>  <tt class="py-line"> </tt>
+<a name="L1476"></a><tt class="py-lineno">1476</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1477"></a><tt class="py-lineno">1477</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1478"></a><tt class="py-lineno">1478</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">el</tt> </tt>
+<a name="L1479"></a><tt class="py-lineno">1479</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1573" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1573', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">            <tt id="link-1574" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1574', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1575" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1575', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1576" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1576', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1577" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1577', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1578" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1578', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_del_setslice"></a><div id="_ETreeTestCaseBase.test_del_setslice-def"><a name="L1485"></a><tt class="py-lineno">1485</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_del_setslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_del_setslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_del_setslice">test_del_setslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_del_setslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_del_setslice-expanded"><a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">        <tt id="link-1579" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1573', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1574" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1579', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1580" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1574', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1575" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1580', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1581" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1575', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1480"></a><tt class="py-lineno">1480</tt>  <tt class="py-line">        <tt id="link-1576" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1576', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1577" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1581', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line">        <tt id="link-1582" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1582', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1583" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1577', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1578" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1578', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1481"></a><tt class="py-lineno">1481</tt>  <tt class="py-line"> </tt>
-<a name="L1482"></a><tt class="py-lineno">1482</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1579" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1583', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1584" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1584', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line"> </tt>
+<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1585" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1579', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1483"></a><tt class="py-lineno">1483</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1580" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1580', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1484"></a><tt class="py-lineno">1484</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1581" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1581', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1485"></a><tt class="py-lineno">1485</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1582" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1582', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1486"></a><tt class="py-lineno">1486</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1583" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1583', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1487"></a><tt class="py-lineno">1487</tt>  <tt class="py-line"> </tt>
-<a name="L1488"></a><tt class="py-lineno">1488</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1489"></a><tt class="py-lineno">1489</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">]</tt> </tt>
-<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1584" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1584', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">            <tt id="link-1585" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1585', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1586" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1586', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1587" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1587', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1588" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1588', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1589" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1589', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_replace_slice_tail"></a><div id="_ETreeTestCaseBase.test_replace_slice_tail-def"><a name="L1497"></a><tt class="py-lineno">1497</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_replace_slice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_replace_slice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_replace_slice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_replace_slice_tail-expanded"><a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">        <tt id="link-1590" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1585', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1490"></a><tt class="py-lineno">1490</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1586" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1586', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1491"></a><tt class="py-lineno">1491</tt>  <tt class="py-line">        <tt class="py-name">bs</tt> <tt class="py-op">=</tt> <tt id="link-1587" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1587', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'bs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1492"></a><tt class="py-lineno">1492</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1588" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1588', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1493"></a><tt class="py-lineno">1493</tt>  <tt class="py-line">        <tt class="py-name">cs</tt> <tt class="py-op">=</tt> <tt id="link-1589" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1589', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'cs'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1494"></a><tt class="py-lineno">1494</tt>  <tt class="py-line"> </tt>
+<a name="L1495"></a><tt class="py-lineno">1495</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1496"></a><tt class="py-lineno">1496</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1497"></a><tt class="py-lineno">1497</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">]</tt> </tt>
+<a name="L1498"></a><tt class="py-lineno">1498</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1590" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1590', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">            <tt id="link-1591" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1591', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1592" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1592', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1593" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1593', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;bs&gt;&lt;/bs&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1594" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1594', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1595" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1595', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;cs&gt;&lt;/cs&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_replace_slice_tail"></a><div id="_ETreeTestCaseBase.test_replace_slice_tail-def"><a name="L1504"></a><tt class="py-lineno">1504</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_replace_slice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_replace_slice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_replace_slice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_replace_slice_tail-expanded"><a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">        <tt id="link-1596" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1590', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1591" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1596', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1597" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1591', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1592" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1597', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1598" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1592', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L1499"></a><tt class="py-lineno">1499</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1593" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1598', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1599" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1593', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1594" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1594', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1500"></a><tt class="py-lineno">1500</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
-<a name="L1501"></a><tt class="py-lineno">1501</tt>  <tt class="py-line"> </tt>
-<a name="L1502"></a><tt class="py-lineno">1502</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L1503"></a><tt class="py-lineno">1503</tt>  <tt class="py-line"> </tt>
-<a name="L1504"></a><tt class="py-lineno">1504</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"B2"</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1595" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1595', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1505"></a><tt class="py-lineno">1505</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"C2"</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1596" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1596', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1506"></a><tt class="py-lineno">1506</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice"></a><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-def"><a name="L1507"></a><tt class="py-lineno">1507</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice">test_merge_namespaced_subtree_as_slice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-expanded"><a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line">        <tt id="link-1597" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1599', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1600" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1600', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1507"></a><tt class="py-lineno">1507</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
+<a name="L1508"></a><tt class="py-lineno">1508</tt>  <tt class="py-line"> </tt>
+<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line"> </tt>
+<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"B2"</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1601" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1601', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"C2"</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1602" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1602', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice"></a><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-def"><a name="L1514"></a><tt class="py-lineno">1514</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_merge_namespaced_subtree_as_slice">test_merge_namespaced_subtree_as_slice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_merge_namespaced_subtree_as_slice-expanded"><a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line">        <tt id="link-1603" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1597', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1598" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1603', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1604" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1598', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1599" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1604', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1605" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1599', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L1509"></a><tt class="py-lineno">1509</tt>  <tt class="py-line">        <tt id="link-1600" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1600', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1601" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1605', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line">        <tt id="link-1606" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1606', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-1607" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1601', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1602" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1602', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1510"></a><tt class="py-lineno">1510</tt>  <tt class="py-line">            <tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:baz="http://huhu"&gt;&lt;puh&gt;&lt;baz:bump1 /&gt;&lt;baz:bump2 /&gt;&lt;/puh&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1511"></a><tt class="py-lineno">1511</tt>  <tt class="py-line">        <tt id="link-1603" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1603', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-1604" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1604', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1605" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1605', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">'.//puh'</tt><tt class="py-op">)</tt> <tt class="py-comment"># delete bar from hierarchy</tt> </tt>
-<a name="L1512"></a><tt class="py-lineno">1512</tt>  <tt class="py-line"> </tt>
-<a name="L1513"></a><tt class="py-lineno">1513</tt>  <tt class="py-line">        <tt class="py-comment"># previously, this lost a namespace declaration on bump2</tt> </tt>
-<a name="L1514"></a><tt class="py-lineno">1514</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1606" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-1607', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-1608" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1608', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">            <tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:baz="http://huhu"&gt;&lt;puh&gt;&lt;baz:bump1 /&gt;&lt;baz:bump2 /&gt;&lt;/puh&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">        <tt id="link-1609" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1609', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-1610" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1610', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-1611" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-1611', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt class="py-string">'.//puh'</tt><tt class="py-op">)</tt> <tt class="py-comment"># delete bar from hierarchy</tt> </tt>
+<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line"> </tt>
+<a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line">        <tt class="py-comment"># previously, this lost a namespace declaration on bump2</tt> </tt>
+<a name="L1521"></a><tt class="py-lineno">1521</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1612" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1606', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1607" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1607', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-1608" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1608', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1515"></a><tt class="py-lineno">1515</tt>  <tt class="py-line">        <tt class="py-name">foo</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1609" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1612', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1613" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-1613', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-1614" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-1614', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">        <tt class="py-name">foo</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1615" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1609', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1610" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1615', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1616" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-1610', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-<a name="L1516"></a><tt class="py-lineno">1516</tt>  <tt class="py-line"> </tt>
-<a name="L1517"></a><tt class="py-lineno">1517</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'puh'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1611" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-1616', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line"> </tt>
+<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'puh'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1617" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1611', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1518"></a><tt class="py-lineno">1518</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://huhu}bump1'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1612" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1617', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://huhu}bump1'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1618" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1612', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1519"></a><tt class="py-lineno">1519</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://huhu}bump2'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1613" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1618', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://huhu}bump2'</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-1619" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1613', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1520"></a><tt class="py-lineno">1520</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delitem_tail"></a><div id="_ETreeTestCaseBase.test_delitem_tail-def"><a name="L1521"></a><tt class="py-lineno">1521</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delitem_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delitem_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail">test_delitem_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delitem_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delitem_tail-expanded"><a name="L1522"></a><tt class="py-lineno">1522</tt>  <tt class="py-line">        <tt id="link-1614" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1619', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delitem_tail"></a><div id="_ETreeTestCaseBase.test_delitem_tail-def"><a name="L1528"></a><tt class="py-lineno">1528</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delitem_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delitem_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delitem_tail">test_delitem_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delitem_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delitem_tail-expanded"><a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">        <tt id="link-1620" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1614', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1615" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1620', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1621" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1615', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1616" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1621', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1622" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1616', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L1523"></a><tt class="py-lineno">1523</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1524"></a><tt class="py-lineno">1524</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-1617" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1622', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1531"></a><tt class="py-lineno">1531</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-1623" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1617', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L1525"></a><tt class="py-lineno">1525</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1618" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-1618', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1526"></a><tt class="py-lineno">1526</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L1527"></a><tt class="py-lineno">1527</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1619" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1619', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1528"></a><tt class="py-lineno">1528</tt>  <tt class="py-line">            <tt id="link-1620" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1620', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1529"></a><tt class="py-lineno">1529</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1530"></a><tt class="py-lineno">1530</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_clear"></a><div id="_ETreeTestCaseBase.test_clear-def"><a name="L1531"></a><tt class="py-lineno">1531</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear">test_clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear-expanded"><a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">        <tt id="link-1621" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1623', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1532"></a><tt class="py-lineno">1532</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1624" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-1624', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1625" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1625', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">            <tt id="link-1626" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1626', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_clear"></a><div id="_ETreeTestCaseBase.test_clear-def"><a name="L1538"></a><tt class="py-lineno">1538</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear">test_clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear-expanded"><a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">        <tt id="link-1627" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1621', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1622" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1627', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1628" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1622', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1623" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1628', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1629" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1623', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1533"></a><tt class="py-lineno">1533</tt>  <tt class="py-line">      </tt>
-<a name="L1534"></a><tt class="py-lineno">1534</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1624" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1629', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">      </tt>
+<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1630" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1624', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1535"></a><tt class="py-lineno">1535</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1625" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1630', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1631" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1625', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
-<a name="L1536"></a><tt class="py-lineno">1536</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1626" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1626', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
-<a name="L1537"></a><tt class="py-lineno">1537</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1627" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1631', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
+<a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1632" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1632', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
+<a name="L1544"></a><tt class="py-lineno">1544</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1633" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-1627', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> <tt class="py-string">'dag'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1538"></a><tt class="py-lineno">1538</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1628" class="py-name"><a title="lxml.etree.DocInfo.clear
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-1633', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> <tt class="py-string">'dag'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1634" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1628', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1539"></a><tt class="py-lineno">1539</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1629" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1634', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1635" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1629', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1540"></a><tt class="py-lineno">1540</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1630" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1630', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1541"></a><tt class="py-lineno">1541</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1631" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1635', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1636" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1636', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1637" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1631', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1542"></a><tt class="py-lineno">1542</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1632" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1637', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1638" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1632', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1543"></a><tt class="py-lineno">1543</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_clear_sub"></a><div id="_ETreeTestCaseBase.test_clear_sub-def"><a name="L1544"></a><tt class="py-lineno">1544</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear_sub-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear_sub');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub">test_clear_sub</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_clear_sub-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear_sub-expanded"><a name="L1545"></a><tt class="py-lineno">1545</tt>  <tt class="py-line">        <tt id="link-1633" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1638', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_clear_sub"></a><div id="_ETreeTestCaseBase.test_clear_sub-def"><a name="L1551"></a><tt class="py-lineno">1551</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear_sub-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear_sub');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_sub">test_clear_sub</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_clear_sub-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear_sub-expanded"><a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">        <tt id="link-1639" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1633', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1634" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1639', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1640" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1634', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1635" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1640', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1641" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1635', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1546"></a><tt class="py-lineno">1546</tt>  <tt class="py-line">        <tt id="link-1636" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1636', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1637" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1641', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">        <tt id="link-1642" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1642', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1643" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1637', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1638" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1638', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1547"></a><tt class="py-lineno">1547</tt>  <tt class="py-line"> </tt>
-<a name="L1548"></a><tt class="py-lineno">1548</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1639" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1643', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1644" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1644', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line"> </tt>
+<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1645" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1639', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1549"></a><tt class="py-lineno">1549</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1640" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1645', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1646" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1640', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
-<a name="L1550"></a><tt class="py-lineno">1550</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1641" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1641', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
-<a name="L1551"></a><tt class="py-lineno">1551</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1642" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1646', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'foo'</tt> </tt>
+<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1647" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1647', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
+<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1648" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-1642', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> <tt class="py-string">'dag'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1552"></a><tt class="py-lineno">1552</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1643" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1643', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1553"></a><tt class="py-lineno">1553</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1644" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1644', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1554"></a><tt class="py-lineno">1554</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1645" class="py-name"><a title="lxml.etree.DocInfo.clear
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-1648', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">,</tt> <tt class="py-string">'dag'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1649" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1649', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1650" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1650', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1651" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1645', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1555"></a><tt class="py-lineno">1555</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1646" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1651', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1652" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1646', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1556"></a><tt class="py-lineno">1556</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1647" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1647', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1557"></a><tt class="py-lineno">1557</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1648" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1652', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1653" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1653', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1654" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1648', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1558"></a><tt class="py-lineno">1558</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1649" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-1654', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'hoi'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1565"></a><tt class="py-lineno">1565</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1655" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1649', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L1559"></a><tt class="py-lineno">1559</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1560"></a><tt class="py-lineno">1560</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1650" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1650', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1651" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1651', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1561"></a><tt class="py-lineno">1561</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1562"></a><tt class="py-lineno">1562</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1652" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1652', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1653" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1653', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;c&gt;&lt;/c&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1563"></a><tt class="py-lineno">1563</tt>  <tt class="py-line">                       <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1564"></a><tt class="py-lineno">1564</tt>  <tt class="py-line">     </tt>
-<a name="_ETreeTestCaseBase.test_clear_tail"></a><div id="_ETreeTestCaseBase.test_clear_tail-def"><a name="L1565"></a><tt class="py-lineno">1565</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_tail">test_clear_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_clear_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear_tail-expanded"><a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">        <tt id="link-1654" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-1655', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L1566"></a><tt class="py-lineno">1566</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1656" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1656', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1657" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1657', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">                       <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1658" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1658', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-1659" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1659', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;c&gt;&lt;/c&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">                       <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">     </tt>
+<a name="_ETreeTestCaseBase.test_clear_tail"></a><div id="_ETreeTestCaseBase.test_clear_tail-def"><a name="L1572"></a><tt class="py-lineno">1572</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_clear_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_clear_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_clear_tail">test_clear_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_clear_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_clear_tail-expanded"><a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">        <tt id="link-1660" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1654', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1655" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1660', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1661" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1655', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1656" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1661', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1662" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1656', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L1567"></a><tt class="py-lineno">1567</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1568"></a><tt class="py-lineno">1568</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-1657" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1662', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1575"></a><tt class="py-lineno">1575</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-1663" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1657', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L1569"></a><tt class="py-lineno">1569</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1658" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-1658', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1570"></a><tt class="py-lineno">1570</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1659" class="py-name"><a title="lxml.etree.DocInfo.clear
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1663', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1664" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-1664', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1665" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1659', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L1571"></a><tt class="py-lineno">1571</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1660" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1660', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1572"></a><tt class="py-lineno">1572</tt>  <tt class="py-line">            <tt id="link-1661" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1661', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1573"></a><tt class="py-lineno">1573</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1574"></a><tt class="py-lineno">1574</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_insert"></a><div id="_ETreeTestCaseBase.test_insert-def"><a name="L1575"></a><tt class="py-lineno">1575</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert">test_insert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert-expanded"><a name="L1576"></a><tt class="py-lineno">1576</tt>  <tt class="py-line">        <tt id="link-1662" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-1665', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1666" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1666', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">            <tt id="link-1667" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1667', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_insert"></a><div id="_ETreeTestCaseBase.test_insert-def"><a name="L1582"></a><tt class="py-lineno">1582</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert">test_insert</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_insert-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert-expanded"><a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">        <tt id="link-1668" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1662', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1663" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1668', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1669" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1663', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1664" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1669', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1670" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1664', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1577"></a><tt class="py-lineno">1577</tt>  <tt class="py-line">        <tt id="link-1665" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1665', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1666" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1670', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line">        <tt id="link-1671" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1671', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1672" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1666', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1667" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1667', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1578"></a><tt class="py-lineno">1578</tt>  <tt class="py-line"> </tt>
-<a name="L1579"></a><tt class="py-lineno">1579</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1668" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1672', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1673" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1673', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line"> </tt>
+<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1674" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1668', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1580"></a><tt class="py-lineno">1580</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1669" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1669', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1581"></a><tt class="py-lineno">1581</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1670" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1670', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1582"></a><tt class="py-lineno">1582</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1671" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1674', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1675" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1675', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1676" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1676', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1677" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1671', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1583"></a><tt class="py-lineno">1583</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1672" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1672', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-<a name="L1584"></a><tt class="py-lineno">1584</tt>  <tt class="py-line"> </tt>
-<a name="L1585"></a><tt class="py-lineno">1585</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1586"></a><tt class="py-lineno">1586</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
-<a name="L1587"></a><tt class="py-lineno">1587</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1588"></a><tt class="py-lineno">1588</tt>  <tt class="py-line"> </tt>
-<a name="L1589"></a><tt class="py-lineno">1589</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1673" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1673', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">            <tt id="link-1674" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1674', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line"> </tt>
-<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1675" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1677', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1590"></a><tt class="py-lineno">1590</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1678" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1678', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L1591"></a><tt class="py-lineno">1591</tt>  <tt class="py-line"> </tt>
+<a name="L1592"></a><tt class="py-lineno">1592</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1593"></a><tt class="py-lineno">1593</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
+<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line"> </tt>
+<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1679" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1679', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">            <tt id="link-1680" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1680', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line"> </tt>
+<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1681" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1675', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1594"></a><tt class="py-lineno">1594</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1676" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1676', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
-<a name="L1595"></a><tt class="py-lineno">1595</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1596"></a><tt class="py-lineno">1596</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">,</tt> </tt>
-<a name="L1597"></a><tt class="py-lineno">1597</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1598"></a><tt class="py-lineno">1598</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1677" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1677', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1599"></a><tt class="py-lineno">1599</tt>  <tt class="py-line">            <tt id="link-1678" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1678', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;b&gt;&lt;/b&gt;&lt;e&gt;&lt;/e&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1600"></a><tt class="py-lineno">1600</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_insert_name_interning"></a><div id="_ETreeTestCaseBase.test_insert_name_interning-def"><a name="L1602"></a><tt class="py-lineno">1602</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_name_interning-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_name_interning');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_name_interning">test_insert_name_interning</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_insert_name_interning-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_name_interning-expanded"><a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">        <tt class="py-comment"># See GH#268 / LP#1773749.</tt> </tt>
-<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">        <tt id="link-1679" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1681', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1601"></a><tt class="py-lineno">1601</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1682" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1682', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L1602"></a><tt class="py-lineno">1602</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1603"></a><tt class="py-lineno">1603</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">,</tt> </tt>
+<a name="L1604"></a><tt class="py-lineno">1604</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1683" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1683', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line">            <tt id="link-1684" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1684', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;d&gt;&lt;/d&gt;&lt;b&gt;&lt;/b&gt;&lt;e&gt;&lt;/e&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_insert_name_interning"></a><div id="_ETreeTestCaseBase.test_insert_name_interning-def"><a name="L1609"></a><tt class="py-lineno">1609</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_name_interning-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_name_interning');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_name_interning">test_insert_name_interning</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_insert_name_interning-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_name_interning-expanded"><a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line">        <tt class="py-comment"># See GH#268 / LP#1773749.</tt> </tt>
+<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">        <tt id="link-1685" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1679', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1680" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1685', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1686" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1680', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1681" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1686', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1687" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1681', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1605"></a><tt class="py-lineno">1605</tt>  <tt class="py-line">        <tt id="link-1682" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1682', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1683" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1687', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">        <tt id="link-1688" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1688', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1689" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1683', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1684" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1684', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1606"></a><tt class="py-lineno">1606</tt>  <tt class="py-line"> </tt>
-<a name="L1607"></a><tt class="py-lineno">1607</tt>  <tt class="py-line">        <tt class="py-comment"># Use unique names to make sure they are new in the tag name dict.</tt> </tt>
-<a name="L1608"></a><tt class="py-lineno">1608</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">uuid</tt> </tt>
-<a name="L1609"></a><tt class="py-lineno">1609</tt>  <tt class="py-line">        <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-string">'tag-'</tt> <tt class="py-op">+</tt> <tt id="link-1685" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1685', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'abcde'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1610"></a><tt class="py-lineno">1610</tt>  <tt class="py-line"> </tt>
-<a name="L1611"></a><tt class="py-lineno">1611</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1686" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1689', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1690" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1690', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line"> </tt>
+<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">        <tt class="py-comment"># Use unique names to make sure they are new in the tag name dict.</tt> </tt>
+<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line">        <tt class="py-keyword">import</tt> <tt class="py-name">uuid</tt> </tt>
+<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line">        <tt class="py-name">names</tt> <tt class="py-op">=</tt> <tt class="py-name">dict</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt class="py-name">k</tt><tt class="py-op">,</tt> <tt class="py-string">'tag-'</tt> <tt class="py-op">+</tt> <tt id="link-1691" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-1691', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">uuid</tt><tt class="py-op">.</tt><tt class="py-name">uuid4</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">k</tt> <tt class="py-keyword">in</tt> <tt class="py-string">'abcde'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line"> </tt>
+<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1692" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1686', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'a'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1612"></a><tt class="py-lineno">1612</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1687" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1687', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'b'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1613"></a><tt class="py-lineno">1613</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1688" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1688', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'c'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1614"></a><tt class="py-lineno">1614</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1689" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1692', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'a'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1693" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1693', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'b'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1694" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1694', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'c'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1695" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1689', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'d'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1615"></a><tt class="py-lineno">1615</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1690" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1690', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-<a name="L1616"></a><tt class="py-lineno">1616</tt>  <tt class="py-line"> </tt>
-<a name="L1617"></a><tt class="py-lineno">1617</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1618"></a><tt class="py-lineno">1618</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
-<a name="L1619"></a><tt class="py-lineno">1619</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1620"></a><tt class="py-lineno">1620</tt>  <tt class="py-line"> </tt>
-<a name="L1621"></a><tt class="py-lineno">1621</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1691" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1691', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">            <tt id="link-1692" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1692', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%(a)s&gt;&lt;%(d)s&gt;&lt;/%(d)s&gt;&lt;%(b)s&gt;&lt;/%(b)s&gt;&lt;%(c)s&gt;&lt;/%(c)s&gt;&lt;/%(a)s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line"> </tt>
-<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1693" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1695', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'d'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1622"></a><tt class="py-lineno">1622</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1696" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1696', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L1623"></a><tt class="py-lineno">1623</tt>  <tt class="py-line"> </tt>
+<a name="L1624"></a><tt class="py-lineno">1624</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1625"></a><tt class="py-lineno">1625</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
+<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line"> </tt>
+<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1697" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1697', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">            <tt id="link-1698" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1698', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%(a)s&gt;&lt;%(d)s&gt;&lt;/%(d)s&gt;&lt;%(b)s&gt;&lt;/%(b)s&gt;&lt;%(c)s&gt;&lt;/%(c)s&gt;&lt;/%(a)s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line"> </tt>
+<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1699" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1693', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'e'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1626"></a><tt class="py-lineno">1626</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1694" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1694', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
-<a name="L1627"></a><tt class="py-lineno">1627</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1628"></a><tt class="py-lineno">1628</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">,</tt> </tt>
-<a name="L1629"></a><tt class="py-lineno">1629</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1630"></a><tt class="py-lineno">1630</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1695" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1695', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1631"></a><tt class="py-lineno">1631</tt>  <tt class="py-line">            <tt id="link-1696" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1696', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%(a)s&gt;&lt;%(d)s&gt;&lt;/%(d)s&gt;&lt;%(b)s&gt;&lt;/%(b)s&gt;&lt;%(e)s&gt;&lt;/%(e)s&gt;&lt;%(c)s&gt;&lt;/%(c)s&gt;&lt;/%(a)s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1632"></a><tt class="py-lineno">1632</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_insert_beyond_index"></a><div id="_ETreeTestCaseBase.test_insert_beyond_index-def"><a name="L1634"></a><tt class="py-lineno">1634</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_beyond_index-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_beyond_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_beyond_index">test_insert_beyond_index</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_insert_beyond_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_beyond_index-expanded"><a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">        <tt id="link-1697" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1699', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-name">names</tt><tt class="py-op">[</tt><tt class="py-string">'e'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1633"></a><tt class="py-lineno">1633</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1700" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1700', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">)</tt> </tt>
+<a name="L1634"></a><tt class="py-lineno">1634</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1635"></a><tt class="py-lineno">1635</tt>  <tt class="py-line">            <tt class="py-name">e</tt><tt class="py-op">,</tt> </tt>
+<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1701" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1701', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">            <tt id="link-1702" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1702', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%(a)s&gt;&lt;%(d)s&gt;&lt;/%(d)s&gt;&lt;%(b)s&gt;&lt;/%(b)s&gt;&lt;%(e)s&gt;&lt;/%(e)s&gt;&lt;%(c)s&gt;&lt;/%(c)s&gt;&lt;/%(a)s&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">names</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_insert_beyond_index"></a><div id="_ETreeTestCaseBase.test_insert_beyond_index-def"><a name="L1641"></a><tt class="py-lineno">1641</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_beyond_index-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_beyond_index');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_beyond_index">test_insert_beyond_index</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_insert_beyond_index-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_beyond_index-expanded"><a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt id="link-1703" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1697', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1698" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1703', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1704" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1698', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1699" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1704', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1705" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1699', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1636"></a><tt class="py-lineno">1636</tt>  <tt class="py-line">        <tt id="link-1700" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1700', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1701" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1705', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">        <tt id="link-1706" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1706', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1707" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1701', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1702" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1702', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1637"></a><tt class="py-lineno">1637</tt>  <tt class="py-line"> </tt>
-<a name="L1638"></a><tt class="py-lineno">1638</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1703" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1707', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1708" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1708', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line"> </tt>
+<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1709" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1703', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1639"></a><tt class="py-lineno">1639</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1704" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1704', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1640"></a><tt class="py-lineno">1640</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1705" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1709', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1710" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1710', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1711" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1705', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1641"></a><tt class="py-lineno">1641</tt>  <tt class="py-line"> </tt>
-<a name="L1642"></a><tt class="py-lineno">1642</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1706" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1706', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-<a name="L1643"></a><tt class="py-lineno">1643</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1644"></a><tt class="py-lineno">1644</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
-<a name="L1645"></a><tt class="py-lineno">1645</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1646"></a><tt class="py-lineno">1646</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1707" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1707', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1647"></a><tt class="py-lineno">1647</tt>  <tt class="py-line">            <tt id="link-1708" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1708', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_insert_negative"></a><div id="_ETreeTestCaseBase.test_insert_negative-def"><a name="L1650"></a><tt class="py-lineno">1650</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_negative">test_insert_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_insert_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_negative-expanded"><a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">        <tt id="link-1709" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1711', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1648"></a><tt class="py-lineno">1648</tt>  <tt class="py-line"> </tt>
+<a name="L1649"></a><tt class="py-lineno">1649</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1712" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1712', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">2</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L1650"></a><tt class="py-lineno">1650</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1651"></a><tt class="py-lineno">1651</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
+<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1713" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1713', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">            <tt id="link-1714" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1714', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_insert_negative"></a><div id="_ETreeTestCaseBase.test_insert_negative-def"><a name="L1657"></a><tt class="py-lineno">1657</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_negative">test_insert_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_insert_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_negative-expanded"><a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt id="link-1715" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1709', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1710" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1715', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1716" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1710', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1711" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1716', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1717" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1711', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1652"></a><tt class="py-lineno">1652</tt>  <tt class="py-line">        <tt id="link-1712" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1712', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1713" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1717', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">        <tt id="link-1718" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1718', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1719" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1713', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1714" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1714', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1653"></a><tt class="py-lineno">1653</tt>  <tt class="py-line"> </tt>
-<a name="L1654"></a><tt class="py-lineno">1654</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1715" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1719', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1720" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1720', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line"> </tt>
+<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1721" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1715', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1655"></a><tt class="py-lineno">1655</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1716" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1716', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1656"></a><tt class="py-lineno">1656</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1717" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1717', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1657"></a><tt class="py-lineno">1657</tt>  <tt class="py-line"> </tt>
-<a name="L1658"></a><tt class="py-lineno">1658</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1718" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1721', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1722" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1722', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1723" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1723', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line"> </tt>
+<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1724" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1718', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1659"></a><tt class="py-lineno">1659</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1719" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1719', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-<a name="L1660"></a><tt class="py-lineno">1660</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1661"></a><tt class="py-lineno">1661</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
-<a name="L1662"></a><tt class="py-lineno">1662</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1663"></a><tt class="py-lineno">1663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1720" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1720', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1664"></a><tt class="py-lineno">1664</tt>  <tt class="py-line">            <tt id="link-1721" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1721', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1665"></a><tt class="py-lineno">1665</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_insert_tail"></a><div id="_ETreeTestCaseBase.test_insert_tail-def"><a name="L1667"></a><tt class="py-lineno">1667</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_insert_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_tail-expanded"><a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">        <tt id="link-1722" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1724', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1666"></a><tt class="py-lineno">1666</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1725" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1725', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+<a name="L1667"></a><tt class="py-lineno">1667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1668"></a><tt class="py-lineno">1668</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">,</tt> </tt>
+<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1726" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1726', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">            <tt id="link-1727" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1727', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;d&gt;&lt;/d&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_insert_tail"></a><div id="_ETreeTestCaseBase.test_insert_tail-def"><a name="L1674"></a><tt class="py-lineno">1674</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_insert_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_insert_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_insert_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_insert_tail-expanded"><a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">        <tt id="link-1728" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1722', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1723" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1728', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1729" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1723', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1724" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1729', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1730" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1724', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1669"></a><tt class="py-lineno">1669</tt>  <tt class="py-line">        <tt id="link-1725" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1725', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1726" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1730', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line">        <tt id="link-1731" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1731', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1732" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1726', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1727" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1727', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1670"></a><tt class="py-lineno">1670</tt>  <tt class="py-line"> </tt>
-<a name="L1671"></a><tt class="py-lineno">1671</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1728" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1732', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1733" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1733', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line"> </tt>
+<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1734" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1728', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1672"></a><tt class="py-lineno">1672</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1729" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1729', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1673"></a><tt class="py-lineno">1673</tt>  <tt class="py-line"> </tt>
-<a name="L1674"></a><tt class="py-lineno">1674</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1730" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1734', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1735" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1735', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line"> </tt>
+<a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1736" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1730', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1675"></a><tt class="py-lineno">1675</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1731" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1731', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'C2'</tt> </tt>
-<a name="L1676"></a><tt class="py-lineno">1676</tt>  <tt class="py-line"> </tt>
-<a name="L1677"></a><tt class="py-lineno">1677</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1732" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1732', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
-<a name="L1678"></a><tt class="py-lineno">1678</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1733" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1733', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1679"></a><tt class="py-lineno">1679</tt>  <tt class="py-line">            <tt id="link-1734" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1734', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1680"></a><tt class="py-lineno">1680</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1681"></a><tt class="py-lineno">1681</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_remove"></a><div id="_ETreeTestCaseBase.test_remove-def"><a name="L1682"></a><tt class="py-lineno">1682</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove">test_remove</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_remove-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove-expanded"><a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line">        <tt id="link-1735" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1736', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1682"></a><tt class="py-lineno">1682</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1737" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1737', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'C2'</tt> </tt>
+<a name="L1683"></a><tt class="py-lineno">1683</tt>  <tt class="py-line"> </tt>
+<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1738" class="py-name"><a title="lxml.etree._Element.insert" class="py-name" href="#" onclick="return doclink('link-1738', 'insert', 'link-6');">insert</a></tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">)</tt> </tt>
+<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1739" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1739', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">            <tt id="link-1740" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1740', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;C2&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_remove"></a><div id="_ETreeTestCaseBase.test_remove-def"><a name="L1689"></a><tt class="py-lineno">1689</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove">test_remove</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_remove-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove-expanded"><a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">        <tt id="link-1741" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1735', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1736" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1741', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1742" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1736', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1737" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1742', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1743" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1737', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1684"></a><tt class="py-lineno">1684</tt>  <tt class="py-line">        <tt id="link-1738" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1738', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1739" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1743', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">        <tt id="link-1744" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1744', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1745" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1739', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1740" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1740', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1685"></a><tt class="py-lineno">1685</tt>  <tt class="py-line"> </tt>
-<a name="L1686"></a><tt class="py-lineno">1686</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1741" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1745', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1746" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1746', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line"> </tt>
+<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1747" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1741', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1687"></a><tt class="py-lineno">1687</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1742" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1742', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1688"></a><tt class="py-lineno">1688</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1743" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1743', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1689"></a><tt class="py-lineno">1689</tt>  <tt class="py-line"> </tt>
-<a name="L1690"></a><tt class="py-lineno">1690</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1744" class="py-name" targets="Method lxml.etree._Element.remove()=lxml.etree._Element-class.html#remove,Method lxml.html.CheckboxValues.remove()=lxml.html.CheckboxValues-class.html#remove,Method lxml.html.Classes.remove()=lxml.html.Classes-class.html#remove,Method lxml.html.MultipleSelectOptions.remove()=lxml.html.MultipleSelectOptions-class.html#remove"><a title="lxml.etree._Element.remove
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1747', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1748" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1748', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1749" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1749', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line"> </tt>
+<a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1750" class="py-name" targets="Method lxml.etree._Element.remove()=lxml.etree._Element-class.html#remove,Method lxml.html.CheckboxValues.remove()=lxml.html.CheckboxValues-class.html#remove,Method lxml.html.Classes.remove()=lxml.html.Classes-class.html#remove,Method lxml.html.MultipleSelectOptions.remove()=lxml.html.MultipleSelectOptions-class.html#remove"><a title="lxml.etree._Element.remove
 lxml.html.CheckboxValues.remove
 lxml.html.Classes.remove
-lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1744', 'remove', 'link-1744');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1691"></a><tt class="py-lineno">1691</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1692"></a><tt class="py-lineno">1692</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
-<a name="L1693"></a><tt class="py-lineno">1693</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1694"></a><tt class="py-lineno">1694</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1745" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1745', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1695"></a><tt class="py-lineno">1695</tt>  <tt class="py-line">            <tt id="link-1746" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1746', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1696"></a><tt class="py-lineno">1696</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1697"></a><tt class="py-lineno">1697</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_remove_ns"></a><div id="_ETreeTestCaseBase.test_remove_ns-def"><a name="L1698"></a><tt class="py-lineno">1698</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_remove_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_ns-expanded"><a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">        <tt id="link-1747" class="py-name"><a title="lxml.etree.Element
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1750', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1698"></a><tt class="py-lineno">1698</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1699"></a><tt class="py-lineno">1699</tt>  <tt class="py-line">            <tt class="py-name">c</tt><tt class="py-op">,</tt> </tt>
+<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1751" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1751', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">            <tt id="link-1752" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1752', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_remove_ns"></a><div id="_ETreeTestCaseBase.test_remove_ns-def"><a name="L1705"></a><tt class="py-lineno">1705</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_remove_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_ns-expanded"><a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">        <tt id="link-1753" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1747', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1748" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1753', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1754" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1748', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1749" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1754', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1755" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1749', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1700"></a><tt class="py-lineno">1700</tt>  <tt class="py-line">        <tt id="link-1750" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1750', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1751" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1755', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">        <tt id="link-1756" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1756', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1757" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1751', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1752" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1752', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1701"></a><tt class="py-lineno">1701</tt>  <tt class="py-line"> </tt>
-<a name="L1702"></a><tt class="py-lineno">1702</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1753" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1757', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1758" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1758', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line"> </tt>
+<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1759" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1753', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://test}a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1703"></a><tt class="py-lineno">1703</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1754" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1754', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{http://test}b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1704"></a><tt class="py-lineno">1704</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1755" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1755', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{http://test}c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1705"></a><tt class="py-lineno">1705</tt>  <tt class="py-line"> </tt>
-<a name="L1706"></a><tt class="py-lineno">1706</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1756" class="py-name"><a title="lxml.etree._Element.remove
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1759', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{http://test}a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1760" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1760', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{http://test}b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1761" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1761', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{http://test}c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line"> </tt>
+<a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1762" class="py-name"><a title="lxml.etree._Element.remove
 lxml.html.CheckboxValues.remove
 lxml.html.Classes.remove
-lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1756', 'remove', 'link-1744');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1707"></a><tt class="py-lineno">1707</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1757" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1757', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1708"></a><tt class="py-lineno">1708</tt>  <tt class="py-line">            <tt id="link-1758" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1758', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://test"&gt;&lt;ns0:c&gt;&lt;/ns0:c&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1709"></a><tt class="py-lineno">1709</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1710"></a><tt class="py-lineno">1710</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1759" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1759', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1711"></a><tt class="py-lineno">1711</tt>  <tt class="py-line">            <tt id="link-1760" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1760', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:b xmlns:ns0="http://test"&gt;&lt;/ns0:b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1712"></a><tt class="py-lineno">1712</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1713"></a><tt class="py-lineno">1713</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_remove_nonexisting"></a><div id="_ETreeTestCaseBase.test_remove_nonexisting-def"><a name="L1714"></a><tt class="py-lineno">1714</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_nonexisting-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_nonexisting');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_remove_nonexisting-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_nonexisting-expanded"><a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">        <tt id="link-1761" class="py-name"><a title="lxml.etree.Element
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1762', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1714"></a><tt class="py-lineno">1714</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1763" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1763', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1715"></a><tt class="py-lineno">1715</tt>  <tt class="py-line">            <tt id="link-1764" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1764', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://test"&gt;&lt;ns0:c&gt;&lt;/ns0:c&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1765" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1765', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">            <tt id="link-1766" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1766', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:b xmlns:ns0="http://test"&gt;&lt;/ns0:b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_remove_nonexisting"></a><div id="_ETreeTestCaseBase.test_remove_nonexisting-def"><a name="L1721"></a><tt class="py-lineno">1721</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_nonexisting-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_nonexisting');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_remove_nonexisting-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_nonexisting-expanded"><a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">        <tt id="link-1767" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1761', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1762" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1767', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1768" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1762', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1763" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1768', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1769" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1763', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1716"></a><tt class="py-lineno">1716</tt>  <tt class="py-line">        <tt id="link-1764" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1764', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1765" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1769', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">        <tt id="link-1770" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1770', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1771" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1765', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1766" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1766', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1717"></a><tt class="py-lineno">1717</tt>  <tt class="py-line"> </tt>
-<a name="L1718"></a><tt class="py-lineno">1718</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1767" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1771', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1772" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1772', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line"> </tt>
+<a name="L1725"></a><tt class="py-lineno">1725</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1773" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1767', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1719"></a><tt class="py-lineno">1719</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1768" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1768', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1720"></a><tt class="py-lineno">1720</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1769" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1769', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1721"></a><tt class="py-lineno">1721</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1770" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1773', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1774" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1774', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1775" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1775', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1776" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1770', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1722"></a><tt class="py-lineno">1722</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt> </tt>
-<a name="L1723"></a><tt class="py-lineno">1723</tt>  <tt class="py-line">            <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1771" class="py-name"><a title="lxml.etree._Element.remove
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1776', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt> </tt>
+<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">            <tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1777" class="py-name"><a title="lxml.etree._Element.remove
 lxml.html.CheckboxValues.remove
 lxml.html.Classes.remove
-lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1771', 'remove', 'link-1744');">remove</a></tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1724"></a><tt class="py-lineno">1724</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_remove_tail"></a><div id="_ETreeTestCaseBase.test_remove_tail-def"><a name="L1725"></a><tt class="py-lineno">1725</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_remove_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_tail-expanded"><a name="L1726"></a><tt class="py-lineno">1726</tt>  <tt class="py-line">        <tt id="link-1772" class="py-name"><a title="lxml.etree.Element
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1777', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_remove_tail"></a><div id="_ETreeTestCaseBase.test_remove_tail-def"><a name="L1732"></a><tt class="py-lineno">1732</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_remove_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_tail-expanded"><a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">        <tt id="link-1778" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1772', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1773" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1778', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1779" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1773', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1774" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1779', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1780" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1774', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1727"></a><tt class="py-lineno">1727</tt>  <tt class="py-line">        <tt id="link-1775" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1775', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1776" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1780', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">        <tt id="link-1781" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1781', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1782" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1776', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1777" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1777', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1728"></a><tt class="py-lineno">1728</tt>  <tt class="py-line"> </tt>
-<a name="L1729"></a><tt class="py-lineno">1729</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1778" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1782', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1783" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1783', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line"> </tt>
+<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1784" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1778', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1730"></a><tt class="py-lineno">1730</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1779" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1779', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1731"></a><tt class="py-lineno">1731</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1780" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1780', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b2'</tt> </tt>
-<a name="L1732"></a><tt class="py-lineno">1732</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1781" class="py-name"><a title="lxml.etree._Element.remove
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1784', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1785" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1785', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1738"></a><tt class="py-lineno">1738</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1786" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1786', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b2'</tt> </tt>
+<a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1787" class="py-name"><a title="lxml.etree._Element.remove
 lxml.html.CheckboxValues.remove
 lxml.html.Classes.remove
-lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1781', 'remove', 'link-1744');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1733"></a><tt class="py-lineno">1733</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1782" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1782', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1734"></a><tt class="py-lineno">1734</tt>  <tt class="py-line">            <tt id="link-1783" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1783', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1735"></a><tt class="py-lineno">1735</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1736"></a><tt class="py-lineno">1736</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b2'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1784" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1784', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1737"></a><tt class="py-lineno">1737</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._test_getchildren"></a><div id="_ETreeTestCaseBase._test_getchildren-def"><a name="L1738"></a><tt class="py-lineno">1738</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._test_getchildren-toggle" onclick="return toggle('_ETreeTestCaseBase._test_getchildren');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren">_test_getchildren</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._test_getchildren-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._test_getchildren-expanded"><a name="L1739"></a><tt class="py-lineno">1739</tt>  <tt class="py-line">        <tt id="link-1785" class="py-name"><a title="lxml.etree.Element
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1787', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1788" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1788', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line">            <tt id="link-1789" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1789', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b2'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1790" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1790', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_remove_while_iterating"></a><div id="_ETreeTestCaseBase.test_remove_while_iterating-def"><a name="L1745"></a><tt class="py-lineno">1745</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_remove_while_iterating-toggle" onclick="return toggle('_ETreeTestCaseBase.test_remove_while_iterating');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating">test_remove_while_iterating</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_remove_while_iterating-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_remove_while_iterating-expanded"><a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">        <tt class="py-comment"># There is no guarantee that this "works", but it should</tt> </tt>
+<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">        <tt class="py-comment"># remove at least one child and not crash.</tt> </tt>
+<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">        <tt id="link-1791" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1785', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1786" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1791', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1792" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1786', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1787" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1792', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1793" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1787', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1740"></a><tt class="py-lineno">1740</tt>  <tt class="py-line">        <tt id="link-1788" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1788', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1789" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1793', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">        <tt id="link-1794" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1794', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1795" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1789', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1790" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1790', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1741"></a><tt class="py-lineno">1741</tt>  <tt class="py-line"> </tt>
-<a name="L1742"></a><tt class="py-lineno">1742</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1791" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1795', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1796" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1796', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line"> </tt>
+<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1797" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1791', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1743"></a><tt class="py-lineno">1743</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1792" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1792', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1744"></a><tt class="py-lineno">1744</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1793" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1793', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1745"></a><tt class="py-lineno">1745</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1794" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1794', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1746"></a><tt class="py-lineno">1746</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1795" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1795', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1747"></a><tt class="py-lineno">1747</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1796" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1796', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1748"></a><tt class="py-lineno">1748</tt>  <tt class="py-line">            <tt id="link-1797" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1797', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d&gt;&lt;/d&gt;&lt;/b&gt;&lt;c&gt;&lt;e&gt;&lt;/e&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1749"></a><tt class="py-lineno">1749</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1750"></a><tt class="py-lineno">1750</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1751"></a><tt class="py-lineno">1751</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1798" class="py-name" targets="Method lxml.etree._Element.getchildren()=lxml.etree._Element-class.html#getchildren,Method lxml.objectify.ObjectifiedElement.getchildren()=lxml.objectify.ObjectifiedElement-class.html#getchildren"><a title="lxml.etree._Element.getchildren
-lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1798', 'getchildren', 'link-1798');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1799" class="py-name"><a title="lxml.etree._Element.getchildren
-lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1799', 'getchildren', 'link-1798');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1800" class="py-name"><a title="lxml.etree._Element.getchildren
-lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1800', 'getchildren', 'link-1798');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1759"></a><tt class="py-lineno">1759</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_makeelement"></a><div id="_ETreeTestCaseBase.test_makeelement-def"><a name="L1760"></a><tt class="py-lineno">1760</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_makeelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_makeelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_makeelement">test_makeelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_makeelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_makeelement-expanded"><a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line">        <tt id="link-1801" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1797', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1752"></a><tt class="py-lineno">1752</tt>  <tt class="py-line">        <tt id="link-1798" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1798', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1753"></a><tt class="py-lineno">1753</tt>  <tt class="py-line">        <tt id="link-1799" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1799', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1754"></a><tt class="py-lineno">1754</tt>  <tt class="py-line">        <tt id="link-1800" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1800', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1755"></a><tt class="py-lineno">1755</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt><tt class="py-op">:</tt> </tt>
+<a name="L1756"></a><tt class="py-lineno">1756</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1801" class="py-name"><a title="lxml.etree._Element.remove
+lxml.html.CheckboxValues.remove
+lxml.html.Classes.remove
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-1801', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt> </tt>
+<a name="L1757"></a><tt class="py-lineno">1757</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertLess</tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1758"></a><tt class="py-lineno">1758</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getchildren"></a><div id="_ETreeTestCaseBase.test_getchildren-def"><a name="L1759"></a><tt class="py-lineno">1759</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getchildren-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getchildren');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren">test_getchildren</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getchildren-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getchildren-expanded"><a name="L1760"></a><tt class="py-lineno">1760</tt>  <tt class="py-line">        <tt id="link-1802" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1801', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1802" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1802', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1803" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1802', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1803" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1803', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1804" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1803', 'Element', 'link-43');">Element</a></tt> </tt>
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1804', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1761"></a><tt class="py-lineno">1761</tt>  <tt class="py-line">        <tt id="link-1805" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1805', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1806" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1806', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1807" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1807', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
 <a name="L1762"></a><tt class="py-lineno">1762</tt>  <tt class="py-line"> </tt>
-<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1804" class="py-name"><a title="lxml.etree.Element
+<a name="L1763"></a><tt class="py-lineno">1763</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1808" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1804', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1805" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement,Method lxml.etree.iterparse.makeelement()=lxml.etree.iterparse-class.html#makeelement,Function lxml.tests.selftest2.makeelement()=lxml.tests.selftest2-module.html#makeelement"><a title="lxml.etree._Element.makeelement
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1808', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1764"></a><tt class="py-lineno">1764</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1809" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1809', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1810" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1810', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1811" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1811', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1812" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1812', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1813" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1813', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">            <tt id="link-1814" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1814', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d&gt;&lt;/d&gt;&lt;/b&gt;&lt;c&gt;&lt;e&gt;&lt;/e&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1770"></a><tt class="py-lineno">1770</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1815" class="py-name" targets="Method lxml.etree._Element.getchildren()=lxml.etree._Element-class.html#getchildren,Method lxml.objectify.ObjectifiedElement.getchildren()=lxml.objectify.ObjectifiedElement-class.html#getchildren"><a title="lxml.etree._Element.getchildren
+lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1815', 'getchildren', 'link-1815');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1816" class="py-name"><a title="lxml.etree._Element.getchildren
+lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1816', 'getchildren', 'link-1815');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line">            <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1817" class="py-name"><a title="lxml.etree._Element.getchildren
+lxml.objectify.ObjectifiedElement.getchildren" class="py-name" href="#" onclick="return doclink('link-1817', 'getchildren', 'link-1815');">getchildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_makeelement"></a><div id="_ETreeTestCaseBase.test_makeelement-def"><a name="L1781"></a><tt class="py-lineno">1781</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_makeelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_makeelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_makeelement">test_makeelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_makeelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_makeelement-expanded"><a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">        <tt id="link-1818" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1818', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1819" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1819', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1820" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1820', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line"> </tt>
+<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1821" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1821', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1822" class="py-name" targets="Method lxml.etree._Element.makeelement()=lxml.etree._Element-class.html#makeelement,Method lxml.etree.iterparse.makeelement()=lxml.etree.iterparse-class.html#makeelement,Function lxml.tests.selftest2.makeelement()=lxml.tests.selftest2-module.html#makeelement"><a title="lxml.etree._Element.makeelement
 lxml.etree.iterparse.makeelement
-lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-1805', 'makeelement', 'link-1805');">makeelement</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'hoi'</tt><tt class="py-op">:</tt><tt class="py-string">'dag'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L1765"></a><tt class="py-lineno">1765</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1806" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1806', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L1766"></a><tt class="py-lineno">1766</tt>  <tt class="py-line">            <tt id="link-1807" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1807', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c hoi="dag"&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L1767"></a><tt class="py-lineno">1767</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1768"></a><tt class="py-lineno">1768</tt>  <tt class="py-line"> </tt>
-<a name="L1769"></a><tt class="py-lineno">1769</tt>  <tt class="py-line">    <tt id="link-1808" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1808', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_iter'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_iter"></a><div id="_ETreeTestCaseBase.test_iter-def"><a name="L1770"></a><tt class="py-lineno">1770</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iter-expanded"><a name="L1771"></a><tt class="py-lineno">1771</tt>  <tt class="py-line">        <tt id="link-1809" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.makeelement" class="py-name" href="#" onclick="return doclink('link-1822', 'makeelement', 'link-1822');">makeelement</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'hoi'</tt><tt class="py-op">:</tt><tt class="py-string">'dag'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1823" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-1823', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L1787"></a><tt class="py-lineno">1787</tt>  <tt class="py-line">            <tt id="link-1824" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-1824', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c hoi="dag"&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">            <tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line"> </tt>
+<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line">    <tt id="link-1825" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-1825', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_iter'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_iter"></a><div id="_ETreeTestCaseBase.test_iter-def"><a name="L1791"></a><tt class="py-lineno">1791</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iter-expanded"><a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">        <tt id="link-1826" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1809', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1810" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1826', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1827" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1810', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1811" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1827', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1828" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1811', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1772"></a><tt class="py-lineno">1772</tt>  <tt class="py-line">        <tt id="link-1812" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1812', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1813" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1828', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line">        <tt id="link-1829" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1829', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1830" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1813', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1814" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1814', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1773"></a><tt class="py-lineno">1773</tt>  <tt class="py-line"> </tt>
-<a name="L1774"></a><tt class="py-lineno">1774</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1815" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1830', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1831" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1831', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line"> </tt>
+<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1832" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1815', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1775"></a><tt class="py-lineno">1775</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1816" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1816', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1776"></a><tt class="py-lineno">1776</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1817" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1817', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1777"></a><tt class="py-lineno">1777</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1818" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1818', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1778"></a><tt class="py-lineno">1778</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1819" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1819', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1779"></a><tt class="py-lineno">1779</tt>  <tt class="py-line"> </tt>
-<a name="L1780"></a><tt class="py-lineno">1780</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1781"></a><tt class="py-lineno">1781</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1782"></a><tt class="py-lineno">1782</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1820" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1820', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1783"></a><tt class="py-lineno">1783</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1784"></a><tt class="py-lineno">1784</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1785"></a><tt class="py-lineno">1785</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1821" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1821', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1786"></a><tt class="py-lineno">1786</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator"></a><div id="_ETreeTestCaseBase.test_getiterator-def"><a name="L1787"></a><tt class="py-lineno">1787</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator-expanded"><a name="L1788"></a><tt class="py-lineno">1788</tt>  <tt class="py-line">        <tt id="link-1822" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1832', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1833" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1833', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1834" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1834', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1835" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1835', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1836" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1836', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line"> </tt>
+<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1837" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1837', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1804"></a><tt class="py-lineno">1804</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1838" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1838', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iter_remove_tail"></a><div id="_ETreeTestCaseBase.test_iter_remove_tail-def"><a name="L1808"></a><tt class="py-lineno">1808</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iter_remove_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iter_remove_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail">test_iter_remove_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iter_remove_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iter_remove_tail-expanded"><a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">        <tt id="link-1839" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1822', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1823" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1839', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1840" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1823', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1824" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1840', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1841" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1824', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1789"></a><tt class="py-lineno">1789</tt>  <tt class="py-line">        <tt id="link-1825" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1825', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1826" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1841', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">        <tt id="link-1842" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1842', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1843" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1826', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1827" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1827', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1790"></a><tt class="py-lineno">1790</tt>  <tt class="py-line"> </tt>
-<a name="L1791"></a><tt class="py-lineno">1791</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1828" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1843', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1844" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1844', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line"> </tt>
+<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1845" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1828', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1792"></a><tt class="py-lineno">1792</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1829" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1829', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1793"></a><tt class="py-lineno">1793</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1830" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1830', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1794"></a><tt class="py-lineno">1794</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1831" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1831', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1795"></a><tt class="py-lineno">1795</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1832" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1832', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1796"></a><tt class="py-lineno">1796</tt>  <tt class="py-line"> </tt>
-<a name="L1797"></a><tt class="py-lineno">1797</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1798"></a><tt class="py-lineno">1798</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1799"></a><tt class="py-lineno">1799</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1833" class="py-name" targets="Method lxml.etree._Element.getiterator()=lxml.etree._Element-class.html#getiterator,Method lxml.etree._ElementTree.getiterator()=lxml.etree._ElementTree-class.html#getiterator"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1833', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1800"></a><tt class="py-lineno">1800</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1801"></a><tt class="py-lineno">1801</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1802"></a><tt class="py-lineno">1802</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1834" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1834', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1803"></a><tt class="py-lineno">1803</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_empty"></a><div id="_ETreeTestCaseBase.test_getiterator_empty-def"><a name="L1804"></a><tt class="py-lineno">1804</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_empty-expanded"><a name="L1805"></a><tt class="py-lineno">1805</tt>  <tt class="py-line">        <tt id="link-1835" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1845', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1846" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1846', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
+<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1847" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1847', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a1'</tt> <tt class="py-op">*</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1848" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1848', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1849" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1849', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
+<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1850" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1850', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b1'</tt> <tt class="py-op">*</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1851" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1851', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1852" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1852', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1853" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1853', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c1'</tt> <tt class="py-op">*</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1854" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1854', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1855" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1855', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d'</tt> </tt>
+<a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1856" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1856', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d1'</tt> <tt class="py-op">*</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1824"></a><tt class="py-lineno">1824</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1857" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1857', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1858" class="py-name"><a title="lxml.etree.QName.text
+lxml.etree._Element.text
+lxml.etree._Entity.text
+lxml.objectify.ObjectifiedElement.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1858', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e'</tt> </tt>
+<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1859" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1859', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e1'</tt> <tt class="py-op">*</tt> <tt class="py-number">100</tt> </tt>
+<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"> </tt>
+<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1860" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1860', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">            <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1861" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1861', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line"> </tt>
+<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">None</tt><tt class="py-op">]</tt> <tt class="py-op">*</tt> <tt class="py-number">5</tt><tt class="py-op">,</tt> </tt>
+<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-1862" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1862', 'tail', 'link-46');">tail</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1863" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-1863', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator"></a><div id="_ETreeTestCaseBase.test_getiterator-def"><a name="L1836"></a><tt class="py-lineno">1836</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator-expanded"><a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">        <tt id="link-1864" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1835', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1836" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1864', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1865" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1836', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1837" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1865', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1866" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1837', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1806"></a><tt class="py-lineno">1806</tt>  <tt class="py-line">        <tt id="link-1838" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1838', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1839" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1866', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">        <tt id="link-1867" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1867', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1868" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1839', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1840" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1840', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1807"></a><tt class="py-lineno">1807</tt>  <tt class="py-line"> </tt>
-<a name="L1808"></a><tt class="py-lineno">1808</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1841" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1868', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1869" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1869', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line"> </tt>
+<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1870" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1841', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1809"></a><tt class="py-lineno">1809</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1842" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1842', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1810"></a><tt class="py-lineno">1810</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1843" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1843', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1811"></a><tt class="py-lineno">1811</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1844" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1844', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1812"></a><tt class="py-lineno">1812</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1845" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1845', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1813"></a><tt class="py-lineno">1813</tt>  <tt class="py-line"> </tt>
-<a name="L1814"></a><tt class="py-lineno">1814</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1815"></a><tt class="py-lineno">1815</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1816"></a><tt class="py-lineno">1816</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1846" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1846', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'none'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1817"></a><tt class="py-lineno">1817</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1818"></a><tt class="py-lineno">1818</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1819"></a><tt class="py-lineno">1819</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1847" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1847', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'none'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1820"></a><tt class="py-lineno">1820</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1821"></a><tt class="py-lineno">1821</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1822"></a><tt class="py-lineno">1822</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1848" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1848', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1823"></a><tt class="py-lineno">1823</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_filter"></a><div id="_ETreeTestCaseBase.test_getiterator_filter-def"><a name="L1824"></a><tt class="py-lineno">1824</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter-expanded"><a name="L1825"></a><tt class="py-lineno">1825</tt>  <tt class="py-line">        <tt id="link-1849" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1870', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1871" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1871', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1872" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1872', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1873" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1873', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1874" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1874', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1845"></a><tt class="py-lineno">1845</tt>  <tt class="py-line"> </tt>
+<a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1875" class="py-name" targets="Method lxml.etree._Element.getiterator()=lxml.etree._Element-class.html#getiterator,Method lxml.etree._ElementTree.getiterator()=lxml.etree._ElementTree-class.html#getiterator"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1875', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1876" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1876', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_empty"></a><div id="_ETreeTestCaseBase.test_getiterator_empty-def"><a name="L1853"></a><tt class="py-lineno">1853</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_empty-expanded"><a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line">        <tt id="link-1877" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1849', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1850" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1877', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1878" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1850', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1851" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1878', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1879" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1851', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1826"></a><tt class="py-lineno">1826</tt>  <tt class="py-line">        <tt id="link-1852" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1852', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1853" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1879', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt id="link-1880" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1880', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1881" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1853', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1854" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1854', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1827"></a><tt class="py-lineno">1827</tt>  <tt class="py-line"> </tt>
-<a name="L1828"></a><tt class="py-lineno">1828</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1855" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1855', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1829"></a><tt class="py-lineno">1829</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1856" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1856', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1830"></a><tt class="py-lineno">1830</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1857" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1857', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1831"></a><tt class="py-lineno">1831</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1858" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1858', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1832"></a><tt class="py-lineno">1832</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1859" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1859', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1833"></a><tt class="py-lineno">1833</tt>  <tt class="py-line"> </tt>
-<a name="L1834"></a><tt class="py-lineno">1834</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1835"></a><tt class="py-lineno">1835</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1836"></a><tt class="py-lineno">1836</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1860" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1860', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1837"></a><tt class="py-lineno">1837</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-1861" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1861', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1838"></a><tt class="py-lineno">1838</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1839"></a><tt class="py-lineno">1839</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1840"></a><tt class="py-lineno">1840</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1862" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1862', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1841"></a><tt class="py-lineno">1841</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1842"></a><tt class="py-lineno">1842</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1843"></a><tt class="py-lineno">1843</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1863" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1863', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1844"></a><tt class="py-lineno">1844</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_filter_all"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_all-def"><a name="L1845"></a><tt class="py-lineno">1845</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_all-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_all');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_filter_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_all-expanded"><a name="L1846"></a><tt class="py-lineno">1846</tt>  <tt class="py-line">        <tt id="link-1864" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1881', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1882" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1882', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line"> </tt>
+<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1883" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1864', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1865" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1883', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1884" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1884', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1859"></a><tt class="py-lineno">1859</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1885" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1885', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1886" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1886', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1887" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1887', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line"> </tt>
+<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1888" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1888', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'none'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1889" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1889', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'none'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1890" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1890', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_filter"></a><div id="_ETreeTestCaseBase.test_getiterator_filter-def"><a name="L1873"></a><tt class="py-lineno">1873</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter-expanded"><a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt id="link-1891" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1891', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1892" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1865', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1866" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1892', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1893" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1866', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1847"></a><tt class="py-lineno">1847</tt>  <tt class="py-line">        <tt id="link-1867" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1867', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1868" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1893', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line">        <tt id="link-1894" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1894', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1895" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1868', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1869" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1869', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1848"></a><tt class="py-lineno">1848</tt>  <tt class="py-line"> </tt>
-<a name="L1849"></a><tt class="py-lineno">1849</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1870" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1895', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1896" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1896', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line"> </tt>
+<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1897" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1870', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1850"></a><tt class="py-lineno">1850</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1871" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1871', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1851"></a><tt class="py-lineno">1851</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1872" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1872', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1852"></a><tt class="py-lineno">1852</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1873" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1873', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1853"></a><tt class="py-lineno">1853</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1874" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1874', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1854"></a><tt class="py-lineno">1854</tt>  <tt class="py-line"> </tt>
-<a name="L1855"></a><tt class="py-lineno">1855</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1856"></a><tt class="py-lineno">1856</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1857"></a><tt class="py-lineno">1857</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1875" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1875', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1858"></a><tt class="py-lineno">1858</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_filter_comment"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-def"><a name="L1859"></a><tt class="py-lineno">1859</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_comment">test_getiterator_filter_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-expanded"><a name="L1860"></a><tt class="py-lineno">1860</tt>  <tt class="py-line">        <tt id="link-1876" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1897', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1898" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1898', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1899" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1899', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1900" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1900', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1901" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1901', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line"> </tt>
+<a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1884"></a><tt class="py-lineno">1884</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1902" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1902', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-1903" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1903', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1904" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1904', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1905" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1905', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_filter_all"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_all-def"><a name="L1894"></a><tt class="py-lineno">1894</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_all-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_all');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_all">test_getiterator_filter_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_filter_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_all-expanded"><a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">        <tt id="link-1906" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1876', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1877" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1906', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1907" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1877', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1878" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1907', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1908" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1878', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1861"></a><tt class="py-lineno">1861</tt>  <tt class="py-line">        <tt id="link-1879" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1879', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1880" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1908', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">        <tt id="link-1909" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1909', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1910" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1880', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1881" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1881', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L1862"></a><tt class="py-lineno">1862</tt>  <tt class="py-line">        <tt id="link-1882" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1882', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1883" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1910', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1911" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1911', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"> </tt>
+<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1912" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1912', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1913" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1913', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1914" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1914', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1915" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1915', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1916" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1916', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line"> </tt>
+<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1917" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1917', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'*'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_filter_comment"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-def"><a name="L1908"></a><tt class="py-lineno">1908</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_comment">test_getiterator_filter_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_comment-expanded"><a name="L1909"></a><tt class="py-lineno">1909</tt>  <tt class="py-line">        <tt id="link-1918" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1918', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1919" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1883', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1884" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1884', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1863"></a><tt class="py-lineno">1863</tt>  <tt class="py-line"> </tt>
-<a name="L1864"></a><tt class="py-lineno">1864</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1885" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1919', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1920" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1885', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1865"></a><tt class="py-lineno">1865</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1886" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1886', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1866"></a><tt class="py-lineno">1866</tt>  <tt class="py-line">        <tt class="py-name">comment_b</tt> <tt class="py-op">=</tt> <tt id="link-1887" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1887', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-b"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1867"></a><tt class="py-lineno">1867</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1888" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1888', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">comment_b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1868"></a><tt class="py-lineno">1868</tt>  <tt class="py-line"> </tt>
-<a name="L1869"></a><tt class="py-lineno">1869</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1870"></a><tt class="py-lineno">1870</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1871"></a><tt class="py-lineno">1871</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1889" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1889', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1890" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1890', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1872"></a><tt class="py-lineno">1872</tt>  <tt class="py-line"> </tt>
-<a name="L1873"></a><tt class="py-lineno">1873</tt>  <tt class="py-line">        <tt class="py-name">comment_a</tt> <tt class="py-op">=</tt> <tt id="link-1891" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1891', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1874"></a><tt class="py-lineno">1874</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1892" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1892', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">comment_a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1875"></a><tt class="py-lineno">1875</tt>  <tt class="py-line"> </tt>
-<a name="L1876"></a><tt class="py-lineno">1876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1877"></a><tt class="py-lineno">1877</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">,</tt> <tt class="py-name">comment_a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1878"></a><tt class="py-lineno">1878</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1893" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1893', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1894" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1894', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1879"></a><tt class="py-lineno">1879</tt>  <tt class="py-line"> </tt>
-<a name="L1880"></a><tt class="py-lineno">1880</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1881"></a><tt class="py-lineno">1881</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1882"></a><tt class="py-lineno">1882</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1895" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1895', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1896" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1896', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1883"></a><tt class="py-lineno">1883</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_filter_pi"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-def"><a name="L1884"></a><tt class="py-lineno">1884</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_pi-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_pi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_pi">test_getiterator_filter_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-expanded"><a name="L1885"></a><tt class="py-lineno">1885</tt>  <tt class="py-line">        <tt id="link-1897" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1920', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">        <tt id="link-1921" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1921', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1922" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1922', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1923" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1923', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">        <tt id="link-1924" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1924', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1925" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1925', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1926" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1926', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"> </tt>
+<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1927" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1927', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1928" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1928', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">        <tt class="py-name">comment_b</tt> <tt class="py-op">=</tt> <tt id="link-1929" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1929', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-b"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1930" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1930', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">comment_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line"> </tt>
+<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1931" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1931', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1932" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1932', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line"> </tt>
+<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">        <tt class="py-name">comment_a</tt> <tt class="py-op">=</tt> <tt id="link-1933" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1933', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1934" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1934', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">comment_a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line"> </tt>
+<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">,</tt> <tt class="py-name">comment_a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1935" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1935', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1936" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1936', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line"> </tt>
+<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">comment_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1937" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1937', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1938" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-1938', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_filter_pi"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-def"><a name="L1933"></a><tt class="py-lineno">1933</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_pi-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_pi');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_pi">test_getiterator_filter_pi</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_pi-expanded"><a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line">        <tt id="link-1939" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1897', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1898" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1939', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1940" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1898', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1899" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1940', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1941" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1899', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1886"></a><tt class="py-lineno">1886</tt>  <tt class="py-line">        <tt id="link-1900" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1900', 'PI', 'link-1372');">PI</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1901" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1941', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1935"></a><tt class="py-lineno">1935</tt>  <tt class="py-line">        <tt id="link-1942" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1942', 'PI', 'link-1378');">PI</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1943" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1901', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
-<a name="L1887"></a><tt class="py-lineno">1887</tt>  <tt class="py-line">        <tt id="link-1902" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1902', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1903" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1943', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">ProcessingInstruction</tt> </tt>
+<a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt id="link-1944" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1944', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1945" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1903', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1904" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1904', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1888"></a><tt class="py-lineno">1888</tt>  <tt class="py-line"> </tt>
-<a name="L1889"></a><tt class="py-lineno">1889</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1905" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1945', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1946" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1946', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line"> </tt>
+<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1947" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1905', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1890"></a><tt class="py-lineno">1890</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1906" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1906', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1891"></a><tt class="py-lineno">1891</tt>  <tt class="py-line">        <tt class="py-name">pi_b</tt> <tt class="py-op">=</tt> <tt id="link-1907" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1907', 'PI', 'link-1372');">PI</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-b"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1892"></a><tt class="py-lineno">1892</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1908" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1908', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">pi_b</tt><tt class="py-op">)</tt> </tt>
-<a name="L1893"></a><tt class="py-lineno">1893</tt>  <tt class="py-line"> </tt>
-<a name="L1894"></a><tt class="py-lineno">1894</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1895"></a><tt class="py-lineno">1895</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1896"></a><tt class="py-lineno">1896</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1909" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1909', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1910" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1910', 'PI', 'link-1372');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1897"></a><tt class="py-lineno">1897</tt>  <tt class="py-line"> </tt>
-<a name="L1898"></a><tt class="py-lineno">1898</tt>  <tt class="py-line">        <tt class="py-name">pi_a</tt> <tt class="py-op">=</tt> <tt id="link-1911" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1911', 'PI', 'link-1372');">PI</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L1899"></a><tt class="py-lineno">1899</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1912" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1912', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">pi_a</tt><tt class="py-op">)</tt> </tt>
-<a name="L1900"></a><tt class="py-lineno">1900</tt>  <tt class="py-line"> </tt>
-<a name="L1901"></a><tt class="py-lineno">1901</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1902"></a><tt class="py-lineno">1902</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">,</tt> <tt class="py-name">pi_a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1903"></a><tt class="py-lineno">1903</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1913" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1913', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1914" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1914', 'PI', 'link-1372');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1904"></a><tt class="py-lineno">1904</tt>  <tt class="py-line"> </tt>
-<a name="L1905"></a><tt class="py-lineno">1905</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1906"></a><tt class="py-lineno">1906</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1907"></a><tt class="py-lineno">1907</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1915" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1915', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1916" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1916', 'PI', 'link-1372');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1908"></a><tt class="py-lineno">1908</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_with_text"></a><div id="_ETreeTestCaseBase.test_getiterator_with_text-def"><a name="L1909"></a><tt class="py-lineno">1909</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_with_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_with_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_with_text">test_getiterator_with_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_with_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_with_text-expanded"><a name="L1910"></a><tt class="py-lineno">1910</tt>  <tt class="py-line">        <tt id="link-1917" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1947', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1948" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1948', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-name">pi_b</tt> <tt class="py-op">=</tt> <tt id="link-1949" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1949', 'PI', 'link-1378');">PI</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-b"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1950" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1950', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">pi_b</tt><tt class="py-op">)</tt> </tt>
+<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line"> </tt>
+<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1951" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1951', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1952" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1952', 'PI', 'link-1378');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line"> </tt>
+<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-name">pi_a</tt> <tt class="py-op">=</tt> <tt id="link-1953" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1953', 'PI', 'link-1378');">PI</a></tt><tt class="py-op">(</tt><tt class="py-string">"TEST-a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1954" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-1954', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">pi_a</tt><tt class="py-op">)</tt> </tt>
+<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line"> </tt>
+<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">,</tt> <tt class="py-name">pi_a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1955" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1955', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1956" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1956', 'PI', 'link-1378');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line"> </tt>
+<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">pi_b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1957" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1957', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt id="link-1958" class="py-name"><a title="lxml.etree.PI" class="py-name" href="#" onclick="return doclink('link-1958', 'PI', 'link-1378');">PI</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_with_text"></a><div id="_ETreeTestCaseBase.test_getiterator_with_text-def"><a name="L1958"></a><tt class="py-lineno">1958</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_with_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_with_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_with_text">test_getiterator_with_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_with_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_with_text-expanded"><a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">        <tt id="link-1959" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1917', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1918" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1959', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1960" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1918', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1919" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1960', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1961" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1919', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1911"></a><tt class="py-lineno">1911</tt>  <tt class="py-line">        <tt id="link-1920" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1920', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1921" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1961', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">        <tt id="link-1962" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1962', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1963" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1921', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1922" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1922', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1912"></a><tt class="py-lineno">1912</tt>  <tt class="py-line"> </tt>
-<a name="L1913"></a><tt class="py-lineno">1913</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1923" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1963', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1964" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1964', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line"> </tt>
+<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1965" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1923', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1914"></a><tt class="py-lineno">1914</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1924" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1965', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1966" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1924', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
-<a name="L1915"></a><tt class="py-lineno">1915</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1925" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1925', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1916"></a><tt class="py-lineno">1916</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1926" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1966', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
+<a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1967" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1967', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1965"></a><tt class="py-lineno">1965</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1968" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1926', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
-<a name="L1917"></a><tt class="py-lineno">1917</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1927" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1927', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b1'</tt> </tt>
-<a name="L1918"></a><tt class="py-lineno">1918</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1928" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1928', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1919"></a><tt class="py-lineno">1919</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1929" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1968', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
+<a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1969" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1969', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b1'</tt> </tt>
+<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1970" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1970', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1971" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1929', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
-<a name="L1920"></a><tt class="py-lineno">1920</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1930" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1930', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c1'</tt> </tt>
-<a name="L1921"></a><tt class="py-lineno">1921</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1931" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1931', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1922"></a><tt class="py-lineno">1922</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1932" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1971', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1972" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1972', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c1'</tt> </tt>
+<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1973" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1973', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1974" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1932', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d'</tt> </tt>
-<a name="L1923"></a><tt class="py-lineno">1923</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1933" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1933', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d1'</tt> </tt>
-<a name="L1924"></a><tt class="py-lineno">1924</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1934" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1934', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1925"></a><tt class="py-lineno">1925</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1935" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1974', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d'</tt> </tt>
+<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1975" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1975', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d1'</tt> </tt>
+<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1976" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1976', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1977" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1935', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e'</tt> </tt>
-<a name="L1926"></a><tt class="py-lineno">1926</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1936" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1936', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e1'</tt> </tt>
-<a name="L1927"></a><tt class="py-lineno">1927</tt>  <tt class="py-line"> </tt>
-<a name="L1928"></a><tt class="py-lineno">1928</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1929"></a><tt class="py-lineno">1929</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1930"></a><tt class="py-lineno">1930</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1937" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1937', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1931"></a><tt class="py-lineno">1931</tt>  <tt class="py-line">        <tt class="py-comment">#self.assertEqual(</tt> </tt>
-<a name="L1932"></a><tt class="py-lineno">1932</tt>  <tt class="py-line">        <tt class="py-comment">#    [d],</tt> </tt>
-<a name="L1933"></a><tt class="py-lineno">1933</tt>  <tt class="py-line">        <tt class="py-comment">#    list(d.getiterator()))</tt> </tt>
-<a name="L1934"></a><tt class="py-lineno">1934</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getiterator_filter_with_text"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-def"><a name="L1935"></a><tt class="py-lineno">1935</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_with_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_with_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_with_text">test_getiterator_filter_with_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-expanded"><a name="L1936"></a><tt class="py-lineno">1936</tt>  <tt class="py-line">        <tt id="link-1938" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1977', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e'</tt> </tt>
+<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1978" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1978', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e1'</tt> </tt>
+<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line"> </tt>
+<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1979" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1979', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line">        <tt class="py-comment">#self.assertEqual(</tt> </tt>
+<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">        <tt class="py-comment">#    [d],</tt> </tt>
+<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line">        <tt class="py-comment">#    list(d.getiterator()))</tt> </tt>
+<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getiterator_filter_with_text"></a><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-def"><a name="L1984"></a><tt class="py-lineno">1984</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getiterator_filter_with_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getiterator_filter_with_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter_with_text">test_getiterator_filter_with_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getiterator_filter_with_text-expanded"><a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line">        <tt id="link-1980" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1938', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1939" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1980', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1981" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1939', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1940" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1981', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1982" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1940', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1937"></a><tt class="py-lineno">1937</tt>  <tt class="py-line">        <tt id="link-1941" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1941', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1942" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1982', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">        <tt id="link-1983" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1983', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1984" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1942', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1943" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1943', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1938"></a><tt class="py-lineno">1938</tt>  <tt class="py-line"> </tt>
-<a name="L1939"></a><tt class="py-lineno">1939</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1944" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1984', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1985" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1985', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line"> </tt>
+<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1986" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1944', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1940"></a><tt class="py-lineno">1940</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1945" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1986', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1987" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1945', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
-<a name="L1941"></a><tt class="py-lineno">1941</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1946" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1946', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1942"></a><tt class="py-lineno">1942</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1947" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1987', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'a'</tt> </tt>
+<a name="L1990"></a><tt class="py-lineno">1990</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1988" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1988', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1989" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1947', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
-<a name="L1943"></a><tt class="py-lineno">1943</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1948" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1948', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b1'</tt> </tt>
-<a name="L1944"></a><tt class="py-lineno">1944</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1949" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1949', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1945"></a><tt class="py-lineno">1945</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1950" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1989', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b'</tt> </tt>
+<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-1990" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1990', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'b1'</tt> </tt>
+<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1991" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1991', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1992" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1950', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
-<a name="L1946"></a><tt class="py-lineno">1946</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1951" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1951', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c1'</tt> </tt>
-<a name="L1947"></a><tt class="py-lineno">1947</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1952" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1952', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1948"></a><tt class="py-lineno">1948</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1953" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1992', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c'</tt> </tt>
+<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1993" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1993', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'c1'</tt> </tt>
+<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1994" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1994', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1995" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1953', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d'</tt> </tt>
-<a name="L1949"></a><tt class="py-lineno">1949</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-1954" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1954', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d1'</tt> </tt>
-<a name="L1950"></a><tt class="py-lineno">1950</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1955" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1955', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1951"></a><tt class="py-lineno">1951</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1956" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1995', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d'</tt> </tt>
+<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line">        <tt class="py-name">d</tt><tt class="py-op">.</tt><tt id="link-1996" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1996', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'d1'</tt> </tt>
+<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1997" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1997', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1998" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1956', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e'</tt> </tt>
-<a name="L1952"></a><tt class="py-lineno">1952</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1957" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1957', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e1'</tt> </tt>
-<a name="L1953"></a><tt class="py-lineno">1953</tt>  <tt class="py-line"> </tt>
-<a name="L1954"></a><tt class="py-lineno">1954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1955"></a><tt class="py-lineno">1955</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1956"></a><tt class="py-lineno">1956</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1958" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1958', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L1957"></a><tt class="py-lineno">1957</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-1959" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1959', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1958"></a><tt class="py-lineno">1958</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1959"></a><tt class="py-lineno">1959</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1960"></a><tt class="py-lineno">1960</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-1960" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1960', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>    </tt>
-<a name="L1961"></a><tt class="py-lineno">1961</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1962"></a><tt class="py-lineno">1962</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1963"></a><tt class="py-lineno">1963</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1961" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-1961', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1964"></a><tt class="py-lineno">1964</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getslice"></a><div id="_ETreeTestCaseBase.test_getslice-def"><a name="L1965"></a><tt class="py-lineno">1965</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice">test_getslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice-expanded"><a name="L1966"></a><tt class="py-lineno">1966</tt>  <tt class="py-line">        <tt id="link-1962" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-1998', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e'</tt> </tt>
+<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-1999" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-1999', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'e1'</tt> </tt>
+<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line"> </tt>
+<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2000" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2000', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-2001" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2001', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2002" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2002', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>    </tt>
+<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-2003" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2003', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getslice"></a><div id="_ETreeTestCaseBase.test_getslice-def"><a name="L2014"></a><tt class="py-lineno">2014</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice">test_getslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice-expanded"><a name="L2015"></a><tt class="py-lineno">2015</tt>  <tt class="py-line">        <tt id="link-2004" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1962', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1963" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2004', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2005" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1963', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1964" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2005', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2006" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1964', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1967"></a><tt class="py-lineno">1967</tt>  <tt class="py-line">        <tt id="link-1965" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1965', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1966" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2006', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">        <tt id="link-2007" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2007', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2008" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1966', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1967" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1967', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1968"></a><tt class="py-lineno">1968</tt>  <tt class="py-line"> </tt>
-<a name="L1969"></a><tt class="py-lineno">1969</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1968" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2008', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2009" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2009', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line"> </tt>
+<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2010" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1968', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1970"></a><tt class="py-lineno">1970</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1969" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1969', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1971"></a><tt class="py-lineno">1971</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1970" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1970', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1972"></a><tt class="py-lineno">1972</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1971" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1971', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1973"></a><tt class="py-lineno">1973</tt>  <tt class="py-line"> </tt>
-<a name="L1974"></a><tt class="py-lineno">1974</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1975"></a><tt class="py-lineno">1975</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1976"></a><tt class="py-lineno">1976</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1977"></a><tt class="py-lineno">1977</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1978"></a><tt class="py-lineno">1978</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1979"></a><tt class="py-lineno">1979</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1980"></a><tt class="py-lineno">1980</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1981"></a><tt class="py-lineno">1981</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1982"></a><tt class="py-lineno">1982</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1983"></a><tt class="py-lineno">1983</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1984"></a><tt class="py-lineno">1984</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1985"></a><tt class="py-lineno">1985</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L1986"></a><tt class="py-lineno">1986</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L1987"></a><tt class="py-lineno">1987</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L1988"></a><tt class="py-lineno">1988</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">:</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L1989"></a><tt class="py-lineno">1989</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getslice_negative"></a><div id="_ETreeTestCaseBase.test_getslice_negative-def"><a name="L1990"></a><tt class="py-lineno">1990</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getslice_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_negative-expanded"><a name="L1991"></a><tt class="py-lineno">1991</tt>  <tt class="py-line">        <tt id="link-1972" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2010', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2011" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2011', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2012" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2012', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2013" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2013', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line"> </tt>
+<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">10</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">10</tt><tt class="py-op">:</tt><tt class="py-number">12</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getslice_negative"></a><div id="_ETreeTestCaseBase.test_getslice_negative-def"><a name="L2039"></a><tt class="py-lineno">2039</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_negative">test_getslice_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getslice_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_negative-expanded"><a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line">        <tt id="link-2014" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1972', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1973" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2014', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2015" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1973', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1974" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2015', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2016" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1974', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L1992"></a><tt class="py-lineno">1992</tt>  <tt class="py-line">        <tt id="link-1975" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1975', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1976" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2016', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2041"></a><tt class="py-lineno">2041</tt>  <tt class="py-line">        <tt id="link-2017" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2017', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2018" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1976', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1977" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1977', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L1993"></a><tt class="py-lineno">1993</tt>  <tt class="py-line"> </tt>
-<a name="L1994"></a><tt class="py-lineno">1994</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1978" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2018', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2019" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2019', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line"> </tt>
+<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2020" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1978', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1995"></a><tt class="py-lineno">1995</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1979" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1979', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1996"></a><tt class="py-lineno">1996</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1980" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1980', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1997"></a><tt class="py-lineno">1997</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1981" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1981', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L1998"></a><tt class="py-lineno">1998</tt>  <tt class="py-line"> </tt>
-<a name="L1999"></a><tt class="py-lineno">1999</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2000"></a><tt class="py-lineno">2000</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2001"></a><tt class="py-lineno">2001</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2002"></a><tt class="py-lineno">2002</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2003"></a><tt class="py-lineno">2003</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2004"></a><tt class="py-lineno">2004</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2005"></a><tt class="py-lineno">2005</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2006"></a><tt class="py-lineno">2006</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2007"></a><tt class="py-lineno">2007</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2008"></a><tt class="py-lineno">2008</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2009"></a><tt class="py-lineno">2009</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2010"></a><tt class="py-lineno">2010</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2011"></a><tt class="py-lineno">2011</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2012"></a><tt class="py-lineno">2012</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2013"></a><tt class="py-lineno">2013</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2014"></a><tt class="py-lineno">2014</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getslice_step"></a><div id="_ETreeTestCaseBase.test_getslice_step-def"><a name="L2015"></a><tt class="py-lineno">2015</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_step-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_step');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_step">test_getslice_step</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getslice_step-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_step-expanded"><a name="L2016"></a><tt class="py-lineno">2016</tt>  <tt class="py-line">        <tt id="link-1982" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2020', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2021" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2021', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2022" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2022', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2023" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2023', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line"> </tt>
+<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2059"></a><tt class="py-lineno">2059</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getslice_step"></a><div id="_ETreeTestCaseBase.test_getslice_step-def"><a name="L2064"></a><tt class="py-lineno">2064</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_step-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_step');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_step">test_getslice_step</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getslice_step-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_step-expanded"><a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">        <tt id="link-2024" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1982', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1983" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2024', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2025" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1983', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1984" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2025', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2026" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1984', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2017"></a><tt class="py-lineno">2017</tt>  <tt class="py-line">        <tt id="link-1985" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1985', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1986" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2026', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">        <tt id="link-2027" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2027', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2028" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1986', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1987" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1987', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2018"></a><tt class="py-lineno">2018</tt>  <tt class="py-line"> </tt>
-<a name="L2019"></a><tt class="py-lineno">2019</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-1988" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2028', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2029" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2029', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line"> </tt>
+<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2030" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1988', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2020"></a><tt class="py-lineno">2020</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-1989" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1989', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2021"></a><tt class="py-lineno">2021</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-1990" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1990', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2022"></a><tt class="py-lineno">2022</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-1991" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1991', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2023"></a><tt class="py-lineno">2023</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-1992" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-1992', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2024"></a><tt class="py-lineno">2024</tt>  <tt class="py-line"> </tt>
-<a name="L2025"></a><tt class="py-lineno">2025</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2026"></a><tt class="py-lineno">2026</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2027"></a><tt class="py-lineno">2027</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2028"></a><tt class="py-lineno">2028</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2029"></a><tt class="py-lineno">2029</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2030"></a><tt class="py-lineno">2030</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2031"></a><tt class="py-lineno">2031</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2032"></a><tt class="py-lineno">2032</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2033"></a><tt class="py-lineno">2033</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2034"></a><tt class="py-lineno">2034</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2035"></a><tt class="py-lineno">2035</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2036"></a><tt class="py-lineno">2036</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2037"></a><tt class="py-lineno">2037</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2038"></a><tt class="py-lineno">2038</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2039"></a><tt class="py-lineno">2039</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2040"></a><tt class="py-lineno">2040</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_getslice_text"></a><div id="_ETreeTestCaseBase.test_getslice_text-def"><a name="L2041"></a><tt class="py-lineno">2041</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_text">test_getslice_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_getslice_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_text-expanded"><a name="L2042"></a><tt class="py-lineno">2042</tt>  <tt class="py-line">        <tt id="link-1993" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2030', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2031" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2031', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2032" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2032', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2033" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2033', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2034" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2034', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line"> </tt>
+<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">,</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt><tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2083"></a><tt class="py-lineno">2083</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_getslice_text"></a><div id="_ETreeTestCaseBase.test_getslice_text-def"><a name="L2090"></a><tt class="py-lineno">2090</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_getslice_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_getslice_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getslice_text">test_getslice_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_getslice_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_getslice_text-expanded"><a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">        <tt id="link-2035" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1993', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1994" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2035', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2036" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1994', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-1995" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2036', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2037" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1995', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2043"></a><tt class="py-lineno">2043</tt>  <tt class="py-line">         </tt>
-<a name="L2044"></a><tt class="py-lineno">2044</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;B1&lt;c&gt;C&lt;/c&gt;C1&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2045"></a><tt class="py-lineno">2045</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-1996" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2037', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line">         </tt>
+<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;B&lt;/b&gt;B1&lt;c&gt;C&lt;/c&gt;C1&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-2038" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-1996', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2046"></a><tt class="py-lineno">2046</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-1997" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-1997', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2047"></a><tt class="py-lineno">2047</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2048"></a><tt class="py-lineno">2048</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L2049"></a><tt class="py-lineno">2049</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2050"></a><tt class="py-lineno">2050</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2051"></a><tt class="py-lineno">2051</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2052"></a><tt class="py-lineno">2052</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2053"></a><tt class="py-lineno">2053</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2054"></a><tt class="py-lineno">2054</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2055"></a><tt class="py-lineno">2055</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2056"></a><tt class="py-lineno">2056</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2057"></a><tt class="py-lineno">2057</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2058"></a><tt class="py-lineno">2058</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_comment_getitem_getslice"></a><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-def"><a name="L2059"></a><tt class="py-lineno">2059</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_getitem_getslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_getitem_getslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice">test_comment_getitem_getslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-expanded"><a name="L2060"></a><tt class="py-lineno">2060</tt>  <tt class="py-line">        <tt id="link-1998" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2038', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-2039" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2039', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2098"></a><tt class="py-lineno">2098</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_comment_getitem_getslice"></a><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-def"><a name="L2108"></a><tt class="py-lineno">2108</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_comment_getitem_getslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_comment_getitem_getslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_comment_getitem_getslice">test_comment_getitem_getslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_comment_getitem_getslice-expanded"><a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">        <tt id="link-2040" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-1998', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-1999" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2040', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2041" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-1999', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2000" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2041', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2042" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2000', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2061"></a><tt class="py-lineno">2061</tt>  <tt class="py-line">        <tt id="link-2001" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2001', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2002" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2042', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">        <tt id="link-2043" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2043', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2044" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2002', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2003" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2003', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L2062"></a><tt class="py-lineno">2062</tt>  <tt class="py-line">        <tt id="link-2004" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2004', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2005" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2044', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2045" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2045', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">        <tt id="link-2046" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2046', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2047" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2005', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2006" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2006', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2063"></a><tt class="py-lineno">2063</tt>  <tt class="py-line"> </tt>
-<a name="L2064"></a><tt class="py-lineno">2064</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2007" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2047', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2048" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2048', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line"> </tt>
+<a name="L2113"></a><tt class="py-lineno">2113</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2049" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2007', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2065"></a><tt class="py-lineno">2065</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2008" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2008', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2066"></a><tt class="py-lineno">2066</tt>  <tt class="py-line">        <tt class="py-name">foo</tt> <tt class="py-op">=</tt> <tt id="link-2009" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2009', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2067"></a><tt class="py-lineno">2067</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2010" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2010', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">)</tt> </tt>
-<a name="L2068"></a><tt class="py-lineno">2068</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2011" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2011', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2069"></a><tt class="py-lineno">2069</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2070"></a><tt class="py-lineno">2070</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2071"></a><tt class="py-lineno">2071</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2072"></a><tt class="py-lineno">2072</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2073"></a><tt class="py-lineno">2073</tt>  <tt class="py-line">            <tt class="py-name">foo</tt><tt class="py-op">,</tt> </tt>
-<a name="L2074"></a><tt class="py-lineno">2074</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2075"></a><tt class="py-lineno">2075</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-2012" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2049', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2050" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2050', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">        <tt class="py-name">foo</tt> <tt class="py-op">=</tt> <tt id="link-2051" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-2051', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2052" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2052', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">foo</tt><tt class="py-op">)</tt> </tt>
+<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2053" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2053', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">foo</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line">            <tt class="py-name">foo</tt><tt class="py-op">,</tt> </tt>
+<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">new</tt> <tt class="py-op">=</tt> <tt id="link-2054" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2012', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'new'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2076"></a><tt class="py-lineno">2076</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2077"></a><tt class="py-lineno">2077</tt>  <tt class="py-line">            <tt class="py-name">new</tt><tt class="py-op">,</tt> </tt>
-<a name="L2078"></a><tt class="py-lineno">2078</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2079"></a><tt class="py-lineno">2079</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2013" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2013', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2080"></a><tt class="py-lineno">2080</tt>  <tt class="py-line">            <tt id="link-2014" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2014', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;new&gt;&lt;/new&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2081"></a><tt class="py-lineno">2081</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2082"></a><tt class="py-lineno">2082</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_delslice"></a><div id="_ETreeTestCaseBase.test_delslice-def"><a name="L2083"></a><tt class="py-lineno">2083</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice">test_delslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice-expanded"><a name="L2084"></a><tt class="py-lineno">2084</tt>  <tt class="py-line">        <tt id="link-2015" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2054', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'new'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line">            <tt class="py-name">new</tt><tt class="py-op">,</tt> </tt>
+<a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2128"></a><tt class="py-lineno">2128</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2055" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2055', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">            <tt id="link-2056" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2056', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;new&gt;&lt;/new&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_delslice"></a><div id="_ETreeTestCaseBase.test_delslice-def"><a name="L2132"></a><tt class="py-lineno">2132</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice">test_delslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice-expanded"><a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">        <tt id="link-2057" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2015', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2016" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2057', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2058" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2016', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2017" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2058', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2059" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2017', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2085"></a><tt class="py-lineno">2085</tt>  <tt class="py-line">        <tt id="link-2018" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2018', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2019" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2059', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line">        <tt id="link-2060" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2060', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2061" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2019', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2020" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2020', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2086"></a><tt class="py-lineno">2086</tt>  <tt class="py-line"> </tt>
-<a name="L2087"></a><tt class="py-lineno">2087</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2021" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2061', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2062" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2062', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line"> </tt>
+<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2063" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2021', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2088"></a><tt class="py-lineno">2088</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2022" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2022', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2089"></a><tt class="py-lineno">2089</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2023" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2023', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2090"></a><tt class="py-lineno">2090</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2024" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2024', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2091"></a><tt class="py-lineno">2091</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2025" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2025', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2092"></a><tt class="py-lineno">2092</tt>  <tt class="py-line"> </tt>
-<a name="L2093"></a><tt class="py-lineno">2093</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
-<a name="L2094"></a><tt class="py-lineno">2094</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2095"></a><tt class="py-lineno">2095</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2096"></a><tt class="py-lineno">2096</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2097"></a><tt class="py-lineno">2097</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_negative1"></a><div id="_ETreeTestCaseBase.test_delslice_negative1-def"><a name="L2098"></a><tt class="py-lineno">2098</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_negative1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_negative1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative1">test_delslice_negative1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_negative1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_negative1-expanded"><a name="L2099"></a><tt class="py-lineno">2099</tt>  <tt class="py-line">        <tt id="link-2026" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2063', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2064" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2064', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2065" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2065', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2066" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2066', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2067" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2067', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line"> </tt>
+<a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L2143"></a><tt class="py-lineno">2143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_negative1"></a><div id="_ETreeTestCaseBase.test_delslice_negative1-def"><a name="L2147"></a><tt class="py-lineno">2147</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_negative1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_negative1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative1">test_delslice_negative1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_negative1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_negative1-expanded"><a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line">        <tt id="link-2068" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2026', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2027" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2068', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2069" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2027', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2028" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2069', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2070" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2028', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2100"></a><tt class="py-lineno">2100</tt>  <tt class="py-line">        <tt id="link-2029" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2029', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2030" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2070', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2149"></a><tt class="py-lineno">2149</tt>  <tt class="py-line">        <tt id="link-2071" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2071', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2072" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2030', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2031" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2031', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2101"></a><tt class="py-lineno">2101</tt>  <tt class="py-line"> </tt>
-<a name="L2102"></a><tt class="py-lineno">2102</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2032" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2072', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2073" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2073', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line"> </tt>
+<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2074" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2032', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2103"></a><tt class="py-lineno">2103</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2033" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2033', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2104"></a><tt class="py-lineno">2104</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2034" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2034', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2105"></a><tt class="py-lineno">2105</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2035" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2035', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2106"></a><tt class="py-lineno">2106</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2036" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2036', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2107"></a><tt class="py-lineno">2107</tt>  <tt class="py-line"> </tt>
-<a name="L2108"></a><tt class="py-lineno">2108</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L2109"></a><tt class="py-lineno">2109</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2110"></a><tt class="py-lineno">2110</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2111"></a><tt class="py-lineno">2111</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2112"></a><tt class="py-lineno">2112</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_negative2"></a><div id="_ETreeTestCaseBase.test_delslice_negative2-def"><a name="L2113"></a><tt class="py-lineno">2113</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2">test_delslice_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_negative2-expanded"><a name="L2114"></a><tt class="py-lineno">2114</tt>  <tt class="py-line">        <tt id="link-2037" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2074', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2075" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2075', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2076" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2076', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2077" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2077', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2078" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2078', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line"> </tt>
+<a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2158"></a><tt class="py-lineno">2158</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_negative2"></a><div id="_ETreeTestCaseBase.test_delslice_negative2-def"><a name="L2162"></a><tt class="py-lineno">2162</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_negative2">test_delslice_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_negative2-expanded"><a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line">        <tt id="link-2079" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2037', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2038" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2079', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2080" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2038', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2039" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2080', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2081" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2039', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2115"></a><tt class="py-lineno">2115</tt>  <tt class="py-line">        <tt id="link-2040" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2040', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2041" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2081', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line">        <tt id="link-2082" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2082', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2083" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2041', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2042" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2042', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2116"></a><tt class="py-lineno">2116</tt>  <tt class="py-line"> </tt>
-<a name="L2117"></a><tt class="py-lineno">2117</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2043" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2083', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2084" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2084', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line"> </tt>
+<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2085" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2043', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2118"></a><tt class="py-lineno">2118</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2044" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2044', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2119"></a><tt class="py-lineno">2119</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2045" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2045', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2120"></a><tt class="py-lineno">2120</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2046" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2046', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2121"></a><tt class="py-lineno">2121</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2047" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2047', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2122"></a><tt class="py-lineno">2122</tt>  <tt class="py-line"> </tt>
-<a name="L2123"></a><tt class="py-lineno">2123</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L2124"></a><tt class="py-lineno">2124</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2125"></a><tt class="py-lineno">2125</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2126"></a><tt class="py-lineno">2126</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2127"></a><tt class="py-lineno">2127</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_step"></a><div id="_ETreeTestCaseBase.test_delslice_step-def"><a name="L2128"></a><tt class="py-lineno">2128</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step">test_delslice_step</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_step-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step-expanded"><a name="L2129"></a><tt class="py-lineno">2129</tt>  <tt class="py-line">        <tt id="link-2048" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2085', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2086" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2086', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2087" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2087', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2088" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2088', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2089" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2089', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line"> </tt>
+<a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2173"></a><tt class="py-lineno">2173</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_step"></a><div id="_ETreeTestCaseBase.test_delslice_step-def"><a name="L2177"></a><tt class="py-lineno">2177</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step">test_delslice_step</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_step-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step-expanded"><a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line">        <tt id="link-2090" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2048', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2049" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2090', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2091" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2049', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2050" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2091', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2092" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2050', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2130"></a><tt class="py-lineno">2130</tt>  <tt class="py-line">        <tt id="link-2051" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2051', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2052" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2092', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line">        <tt id="link-2093" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2093', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2094" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2052', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2053" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2053', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2131"></a><tt class="py-lineno">2131</tt>  <tt class="py-line"> </tt>
-<a name="L2132"></a><tt class="py-lineno">2132</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2054" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2094', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2095" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2095', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line"> </tt>
+<a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2096" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2054', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2133"></a><tt class="py-lineno">2133</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2055" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2055', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2134"></a><tt class="py-lineno">2134</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2056" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2056', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2135"></a><tt class="py-lineno">2135</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2057" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2057', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2136"></a><tt class="py-lineno">2136</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2058" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2058', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2137"></a><tt class="py-lineno">2137</tt>  <tt class="py-line"> </tt>
-<a name="L2138"></a><tt class="py-lineno">2138</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L2139"></a><tt class="py-lineno">2139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2140"></a><tt class="py-lineno">2140</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2141"></a><tt class="py-lineno">2141</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2142"></a><tt class="py-lineno">2142</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_step_negative"></a><div id="_ETreeTestCaseBase.test_delslice_step_negative-def"><a name="L2143"></a><tt class="py-lineno">2143</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative">test_delslice_step_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_step_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step_negative-expanded"><a name="L2144"></a><tt class="py-lineno">2144</tt>  <tt class="py-line">        <tt id="link-2059" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2096', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2097" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2097', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2183"></a><tt class="py-lineno">2183</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2098" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2098', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2099" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2099', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2100" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2100', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line"> </tt>
+<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_step_negative"></a><div id="_ETreeTestCaseBase.test_delslice_step_negative-def"><a name="L2192"></a><tt class="py-lineno">2192</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative">test_delslice_step_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_step_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step_negative-expanded"><a name="L2193"></a><tt class="py-lineno">2193</tt>  <tt class="py-line">        <tt id="link-2101" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2059', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2060" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2101', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2102" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2060', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2061" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2102', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2103" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2061', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2145"></a><tt class="py-lineno">2145</tt>  <tt class="py-line">        <tt id="link-2062" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2062', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2063" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2103', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">        <tt id="link-2104" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2104', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2105" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2063', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2064" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2064', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2146"></a><tt class="py-lineno">2146</tt>  <tt class="py-line"> </tt>
-<a name="L2147"></a><tt class="py-lineno">2147</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2065" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2105', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2106" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2106', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line"> </tt>
+<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2107" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2065', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2148"></a><tt class="py-lineno">2148</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2066" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2066', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2149"></a><tt class="py-lineno">2149</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2067" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2067', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2150"></a><tt class="py-lineno">2150</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2068" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2068', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2151"></a><tt class="py-lineno">2151</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2069" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2069', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2152"></a><tt class="py-lineno">2152</tt>  <tt class="py-line"> </tt>
-<a name="L2153"></a><tt class="py-lineno">2153</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L2154"></a><tt class="py-lineno">2154</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2155"></a><tt class="py-lineno">2155</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2156"></a><tt class="py-lineno">2156</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2157"></a><tt class="py-lineno">2157</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_step_negative2"></a><div id="_ETreeTestCaseBase.test_delslice_step_negative2-def"><a name="L2158"></a><tt class="py-lineno">2158</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative2">test_delslice_step_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_step_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step_negative2-expanded"><a name="L2159"></a><tt class="py-lineno">2159</tt>  <tt class="py-line">        <tt id="link-2070" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2107', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2108" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2108', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2109" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2109', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2110" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2110', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2111" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2111', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line"> </tt>
+<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2204"></a><tt class="py-lineno">2204</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_step_negative2"></a><div id="_ETreeTestCaseBase.test_delslice_step_negative2-def"><a name="L2207"></a><tt class="py-lineno">2207</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_step_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_step_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_step_negative2">test_delslice_step_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_step_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_step_negative2-expanded"><a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-line">        <tt id="link-2112" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2070', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2071" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2112', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2113" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2071', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2072" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2113', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2114" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2072', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2160"></a><tt class="py-lineno">2160</tt>  <tt class="py-line">        <tt id="link-2073" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2073', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2074" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2114', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line">        <tt id="link-2115" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2115', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2116" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2074', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2075" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2075', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2161"></a><tt class="py-lineno">2161</tt>  <tt class="py-line"> </tt>
-<a name="L2162"></a><tt class="py-lineno">2162</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2076" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2116', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2117" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2117', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line"> </tt>
+<a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2118" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2076', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2163"></a><tt class="py-lineno">2163</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2077" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2077', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2164"></a><tt class="py-lineno">2164</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2078" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2078', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2165"></a><tt class="py-lineno">2165</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2079" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2079', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2166"></a><tt class="py-lineno">2166</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2080" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2080', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2167"></a><tt class="py-lineno">2167</tt>  <tt class="py-line"> </tt>
-<a name="L2168"></a><tt class="py-lineno">2168</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
-<a name="L2169"></a><tt class="py-lineno">2169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2170"></a><tt class="py-lineno">2170</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2171"></a><tt class="py-lineno">2171</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2172"></a><tt class="py-lineno">2172</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_child_tail"></a><div id="_ETreeTestCaseBase.test_delslice_child_tail-def"><a name="L2173"></a><tt class="py-lineno">2173</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_child_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_child_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_child_tail">test_delslice_child_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_child_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_child_tail-expanded"><a name="L2174"></a><tt class="py-lineno">2174</tt>  <tt class="py-line">        <tt id="link-2081" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2118', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2119" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2119', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2120" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2120', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2121" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2121', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2122" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2122', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line"> </tt>
+<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> </tt>
+<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_child_tail"></a><div id="_ETreeTestCaseBase.test_delslice_child_tail-def"><a name="L2222"></a><tt class="py-lineno">2222</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_child_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_child_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_child_tail">test_delslice_child_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_child_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_child_tail-expanded"><a name="L2223"></a><tt class="py-lineno">2223</tt>  <tt class="py-line">        <tt id="link-2123" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2081', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2082" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2123', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2124" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2082', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2083" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2124', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2125" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2083', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2175"></a><tt class="py-lineno">2175</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;d&gt;&lt;/d&gt;D2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2176"></a><tt class="py-lineno">2176</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-2084" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2125', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;d&gt;&lt;/d&gt;D2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-2126" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2084', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2177"></a><tt class="py-lineno">2177</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-2085" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2085', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2178"></a><tt class="py-lineno">2178</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
-<a name="L2179"></a><tt class="py-lineno">2179</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2086" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2086', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2180"></a><tt class="py-lineno">2180</tt>  <tt class="py-line">            <tt id="link-2087" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2087', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2181"></a><tt class="py-lineno">2181</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2182"></a><tt class="py-lineno">2182</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_tail"></a><div id="_ETreeTestCaseBase.test_delslice_tail-def"><a name="L2183"></a><tt class="py-lineno">2183</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_tail">test_delslice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_tail-expanded"><a name="L2184"></a><tt class="py-lineno">2184</tt>  <tt class="py-line">        <tt id="link-2088" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2126', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2226"></a><tt class="py-lineno">2226</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-2127" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2127', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> </tt>
+<a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2128" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2128', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2229"></a><tt class="py-lineno">2229</tt>  <tt class="py-line">            <tt id="link-2129" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2129', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_tail"></a><div id="_ETreeTestCaseBase.test_delslice_tail-def"><a name="L2232"></a><tt class="py-lineno">2232</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_tail">test_delslice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_tail-expanded"><a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line">        <tt id="link-2130" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2088', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2089" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2130', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2131" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2089', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2090" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2131', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2132" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2090', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L2185"></a><tt class="py-lineno">2185</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2091" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2132', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2133" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2091', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2092" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2092', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2186"></a><tt class="py-lineno">2186</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
-<a name="L2187"></a><tt class="py-lineno">2187</tt>  <tt class="py-line"> </tt>
-<a name="L2188"></a><tt class="py-lineno">2188</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L2189"></a><tt class="py-lineno">2189</tt>  <tt class="py-line"> </tt>
-<a name="L2190"></a><tt class="py-lineno">2190</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"B2"</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2093" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2093', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2191"></a><tt class="py-lineno">2191</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"C2"</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2094" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2094', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2192"></a><tt class="py-lineno">2192</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_delslice_memory"></a><div id="_ETreeTestCaseBase.test_delslice_memory-def"><a name="L2193"></a><tt class="py-lineno">2193</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_memory-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_memory');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_memory">test_delslice_memory</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_delslice_memory-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_memory-expanded"><a name="L2194"></a><tt class="py-lineno">2194</tt>  <tt class="py-line">        <tt class="py-comment"># this could trigger a crash</tt> </tt>
-<a name="L2195"></a><tt class="py-lineno">2195</tt>  <tt class="py-line">        <tt id="link-2095" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2133', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2134" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2134', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt class="py-name">a</tt> </tt>
+<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line"> </tt>
+<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line"> </tt>
+<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"B2"</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2135" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2135', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"C2"</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2136" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2136', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2241"></a><tt class="py-lineno">2241</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_delslice_memory"></a><div id="_ETreeTestCaseBase.test_delslice_memory-def"><a name="L2242"></a><tt class="py-lineno">2242</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_delslice_memory-toggle" onclick="return toggle('_ETreeTestCaseBase.test_delslice_memory');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_delslice_memory">test_delslice_memory</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_delslice_memory-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_delslice_memory-expanded"><a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line">        <tt class="py-comment"># this could trigger a crash</tt> </tt>
+<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line">        <tt id="link-2137" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2095', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2096" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2137', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2138" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2096', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2097" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2138', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2139" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2097', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2196"></a><tt class="py-lineno">2196</tt>  <tt class="py-line">        <tt id="link-2098" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2098', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2099" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2139', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line">        <tt id="link-2140" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2140', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2141" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2099', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2100" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2100', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2197"></a><tt class="py-lineno">2197</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2101" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2141', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2142" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2142', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2143" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2101', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2198"></a><tt class="py-lineno">2198</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2102" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2102', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2199"></a><tt class="py-lineno">2199</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2103" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2103', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2200"></a><tt class="py-lineno">2200</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">b</tt> <tt class="py-comment"># no more reference to b</tt> </tt>
-<a name="L2201"></a><tt class="py-lineno">2201</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L2202"></a><tt class="py-lineno">2202</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2104" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2143', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2144" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2144', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2145" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2145', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">b</tt> <tt class="py-comment"># no more reference to b</tt> </tt>
+<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2146" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2104', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2203"></a><tt class="py-lineno">2203</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_setslice"></a><div id="_ETreeTestCaseBase.test_setslice-def"><a name="L2204"></a><tt class="py-lineno">2204</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice">test_setslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice-expanded"><a name="L2205"></a><tt class="py-lineno">2205</tt>  <tt class="py-line">        <tt id="link-2105" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2146', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_setslice"></a><div id="_ETreeTestCaseBase.test_setslice-def"><a name="L2253"></a><tt class="py-lineno">2253</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice">test_setslice</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice-expanded"><a name="L2254"></a><tt class="py-lineno">2254</tt>  <tt class="py-line">        <tt id="link-2147" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2105', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2106" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2147', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2148" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2106', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2107" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2148', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2149" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2107', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2206"></a><tt class="py-lineno">2206</tt>  <tt class="py-line">        <tt id="link-2108" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2108', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2109" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2149', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2255"></a><tt class="py-lineno">2255</tt>  <tt class="py-line">        <tt id="link-2150" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2150', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2151" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2109', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2110" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2110', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2207"></a><tt class="py-lineno">2207</tt>  <tt class="py-line"> </tt>
-<a name="L2208"></a><tt class="py-lineno">2208</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2111" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2151', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2152" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2152', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line"> </tt>
+<a name="L2257"></a><tt class="py-lineno">2257</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2153" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2111', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2209"></a><tt class="py-lineno">2209</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2112" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2112', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2210"></a><tt class="py-lineno">2210</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2113" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2113', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2211"></a><tt class="py-lineno">2211</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2114" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2114', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2212"></a><tt class="py-lineno">2212</tt>  <tt class="py-line"> </tt>
-<a name="L2213"></a><tt class="py-lineno">2213</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2115" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2153', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2154" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2154', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2155" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2155', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2156" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2156', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line"> </tt>
+<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2157" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2115', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2214"></a><tt class="py-lineno">2214</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2116" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2157', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2158" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2116', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2215"></a><tt class="py-lineno">2215</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2117" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2158', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2159" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2117', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2216"></a><tt class="py-lineno">2216</tt>  <tt class="py-line"> </tt>
-<a name="L2217"></a><tt class="py-lineno">2217</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
-<a name="L2218"></a><tt class="py-lineno">2218</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2219"></a><tt class="py-lineno">2219</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2220"></a><tt class="py-lineno">2220</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2221"></a><tt class="py-lineno">2221</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2222"></a><tt class="py-lineno">2222</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all"></a><div id="_ETreeTestCaseBase.test_setslice_all-def"><a name="L2223"></a><tt class="py-lineno">2223</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all">test_setslice_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all-expanded"><a name="L2224"></a><tt class="py-lineno">2224</tt>  <tt class="py-line">        <tt id="link-2118" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2159', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-line"> </tt>
+<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
+<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all"></a><div id="_ETreeTestCaseBase.test_setslice_all-def"><a name="L2272"></a><tt class="py-lineno">2272</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all">test_setslice_all</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all-expanded"><a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line">        <tt id="link-2160" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2118', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2119" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2160', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2161" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2119', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2120" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2161', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2162" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2120', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2225"></a><tt class="py-lineno">2225</tt>  <tt class="py-line">        <tt id="link-2121" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2121', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2122" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2162', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line">        <tt id="link-2163" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2163', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2164" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2122', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2123" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2123', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2226"></a><tt class="py-lineno">2226</tt>  <tt class="py-line"> </tt>
-<a name="L2227"></a><tt class="py-lineno">2227</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2124" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2164', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2165" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2165', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line"> </tt>
+<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2166" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2124', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2228"></a><tt class="py-lineno">2228</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2125" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2125', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2229"></a><tt class="py-lineno">2229</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2126" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2126', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2230"></a><tt class="py-lineno">2230</tt>  <tt class="py-line"> </tt>
-<a name="L2231"></a><tt class="py-lineno">2231</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2127" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2166', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2167" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2167', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2168" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2168', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line"> </tt>
+<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2169" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2127', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2232"></a><tt class="py-lineno">2232</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2128" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2169', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2170" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2128', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2233"></a><tt class="py-lineno">2233</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2129" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2170', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2282"></a><tt class="py-lineno">2282</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2171" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2129', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2234"></a><tt class="py-lineno">2234</tt>  <tt class="py-line"> </tt>
-<a name="L2235"></a><tt class="py-lineno">2235</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
-<a name="L2236"></a><tt class="py-lineno">2236</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2237"></a><tt class="py-lineno">2237</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2238"></a><tt class="py-lineno">2238</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2239"></a><tt class="py-lineno">2239</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2240"></a><tt class="py-lineno">2240</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all_empty"></a><div id="_ETreeTestCaseBase.test_setslice_all_empty-def"><a name="L2241"></a><tt class="py-lineno">2241</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_empty">test_setslice_all_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_empty-expanded"><a name="L2242"></a><tt class="py-lineno">2242</tt>  <tt class="py-line">        <tt id="link-2130" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2171', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line"> </tt>
+<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
+<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2287"></a><tt class="py-lineno">2287</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all_empty"></a><div id="_ETreeTestCaseBase.test_setslice_all_empty-def"><a name="L2290"></a><tt class="py-lineno">2290</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_empty">test_setslice_all_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_empty-expanded"><a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-line">        <tt id="link-2172" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2130', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2131" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2172', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2173" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2131', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2132" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2173', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2174" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2132', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2243"></a><tt class="py-lineno">2243</tt>  <tt class="py-line">        <tt id="link-2133" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2133', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2134" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2174', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line">        <tt id="link-2175" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2175', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2176" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2134', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2135" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2135', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2244"></a><tt class="py-lineno">2244</tt>  <tt class="py-line"> </tt>
-<a name="L2245"></a><tt class="py-lineno">2245</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2136" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2176', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2177" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2177', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line"> </tt>
+<a name="L2294"></a><tt class="py-lineno">2294</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2178" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2136', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2246"></a><tt class="py-lineno">2246</tt>  <tt class="py-line"> </tt>
-<a name="L2247"></a><tt class="py-lineno">2247</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2137" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2178', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line"> </tt>
+<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2179" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2137', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2248"></a><tt class="py-lineno">2248</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2138" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2179', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2180" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2138', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2249"></a><tt class="py-lineno">2249</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2139" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2180', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2181" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2139', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2250"></a><tt class="py-lineno">2250</tt>  <tt class="py-line"> </tt>
-<a name="L2251"></a><tt class="py-lineno">2251</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
-<a name="L2252"></a><tt class="py-lineno">2252</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2253"></a><tt class="py-lineno">2253</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2254"></a><tt class="py-lineno">2254</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2255"></a><tt class="py-lineno">2255</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2256"></a><tt class="py-lineno">2256</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all_replace"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace-def"><a name="L2257"></a><tt class="py-lineno">2257</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace">test_setslice_all_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace-expanded"><a name="L2258"></a><tt class="py-lineno">2258</tt>  <tt class="py-line">        <tt id="link-2140" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2181', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line"> </tt>
+<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
+<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all_replace"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace-def"><a name="L2306"></a><tt class="py-lineno">2306</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace">test_setslice_all_replace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all_replace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace-expanded"><a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line">        <tt id="link-2182" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2140', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2141" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2182', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2183" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2141', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2142" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2183', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2184" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2142', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2259"></a><tt class="py-lineno">2259</tt>  <tt class="py-line">        <tt id="link-2143" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2143', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2144" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2184', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line">        <tt id="link-2185" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2185', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2186" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2144', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2145" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2145', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2260"></a><tt class="py-lineno">2260</tt>  <tt class="py-line"> </tt>
-<a name="L2261"></a><tt class="py-lineno">2261</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2146" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2186', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2187" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2187', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2309"></a><tt class="py-lineno">2309</tt>  <tt class="py-line"> </tt>
+<a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2188" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2146', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2262"></a><tt class="py-lineno">2262</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2147" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2147', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2263"></a><tt class="py-lineno">2263</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2148" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2148', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2264"></a><tt class="py-lineno">2264</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2149" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2149', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2265"></a><tt class="py-lineno">2265</tt>  <tt class="py-line"> </tt>
-<a name="L2266"></a><tt class="py-lineno">2266</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt> </tt>
-<a name="L2267"></a><tt class="py-lineno">2267</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2268"></a><tt class="py-lineno">2268</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2269"></a><tt class="py-lineno">2269</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2270"></a><tt class="py-lineno">2270</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2271"></a><tt class="py-lineno">2271</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-def"><a name="L2272"></a><tt class="py-lineno">2272</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed">test_setslice_all_replace_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-expanded"><a name="L2273"></a><tt class="py-lineno">2273</tt>  <tt class="py-line">        <tt id="link-2150" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2188', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2189" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2189', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2190" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2190', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2191" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2191', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line"> </tt>
+<a name="L2315"></a><tt class="py-lineno">2315</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt> </tt>
+<a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-def"><a name="L2321"></a><tt class="py-lineno">2321</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed">test_setslice_all_replace_reversed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed-expanded"><a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line">        <tt id="link-2192" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2150', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2151" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2192', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2193" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2151', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2152" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2193', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2194" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2152', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2274"></a><tt class="py-lineno">2274</tt>  <tt class="py-line">        <tt id="link-2153" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2153', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2154" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2194', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line">        <tt id="link-2195" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2195', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2196" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2154', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2155" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2155', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2275"></a><tt class="py-lineno">2275</tt>  <tt class="py-line"> </tt>
-<a name="L2276"></a><tt class="py-lineno">2276</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2156" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2196', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2197" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2197', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line"> </tt>
+<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2198" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2156', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2277"></a><tt class="py-lineno">2277</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2157" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2157', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2278"></a><tt class="py-lineno">2278</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2158" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2158', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2279"></a><tt class="py-lineno">2279</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2159" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2159', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2280"></a><tt class="py-lineno">2280</tt>  <tt class="py-line"> </tt>
-<a name="L2281"></a><tt class="py-lineno">2281</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
-<a name="L2282"></a><tt class="py-lineno">2282</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2283"></a><tt class="py-lineno">2283</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2284"></a><tt class="py-lineno">2284</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2285"></a><tt class="py-lineno">2285</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2286"></a><tt class="py-lineno">2286</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-def"><a name="L2287"></a><tt class="py-lineno">2287</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-expanded"><a name="L2288"></a><tt class="py-lineno">2288</tt>  <tt class="py-line">        <tt id="link-2160" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2198', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2199" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2199', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2200" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2200', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2201" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2201', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line"> </tt>
+<a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
+<a name="L2331"></a><tt class="py-lineno">2331</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-def"><a name="L2336"></a><tt class="py-lineno">2336</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns1">test_setslice_all_replace_reversed_ns1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns1-expanded"><a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line">        <tt id="link-2202" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2160', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2161" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2202', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2203" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2161', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2162" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2203', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2204" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2162', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2289"></a><tt class="py-lineno">2289</tt>  <tt class="py-line">        <tt id="link-2163" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2163', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2164" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2204', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line">        <tt id="link-2205" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2205', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2206" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2164', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2165" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2165', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2290"></a><tt class="py-lineno">2290</tt>  <tt class="py-line"> </tt>
-<a name="L2291"></a><tt class="py-lineno">2291</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2166" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2206', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2207" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2207', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line"> </tt>
+<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2208" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2166', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{ns}a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2292"></a><tt class="py-lineno">2292</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2167" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2167', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}b'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}a1'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2293"></a><tt class="py-lineno">2293</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2168" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2168', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns2}a2'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2294"></a><tt class="py-lineno">2294</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2169" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2169', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}d'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns3}a3'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2295"></a><tt class="py-lineno">2295</tt>  <tt class="py-line"> </tt>
-<a name="L2296"></a><tt class="py-lineno">2296</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
-<a name="L2297"></a><tt class="py-lineno">2297</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2298"></a><tt class="py-lineno">2298</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2299"></a><tt class="py-lineno">2299</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2300"></a><tt class="py-lineno">2300</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2301"></a><tt class="py-lineno">2301</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2302"></a><tt class="py-lineno">2302</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{ns}d'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}c'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}b'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2303"></a><tt class="py-lineno">2303</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2170" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2208', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{ns}a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2209" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2209', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}b'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns1}a1'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2210" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2210', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns2}a2'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2211" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2211', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}d'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns3}a3'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line"> </tt>
+<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
+<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2350"></a><tt class="py-lineno">2350</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{ns}d'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}c'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns}b'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2352"></a><tt class="py-lineno">2352</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2212" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2170', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2304"></a><tt class="py-lineno">2304</tt>  <tt class="py-line"> </tt>
-<a name="L2305"></a><tt class="py-lineno">2305</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2306"></a><tt class="py-lineno">2306</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-string">'{ns3}a3'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns2}a2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns1}a1'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2307"></a><tt class="py-lineno">2307</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2171" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2212', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2353"></a><tt class="py-lineno">2353</tt>  <tt class="py-line"> </tt>
+<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-string">'{ns3}a3'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns2}a2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns1}a1'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2356"></a><tt class="py-lineno">2356</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2213" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2171', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2172" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2213', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2214" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-2172', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2308"></a><tt class="py-lineno">2308</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-def"><a name="L2309"></a><tt class="py-lineno">2309</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-expanded"><a name="L2310"></a><tt class="py-lineno">2310</tt>  <tt class="py-line">        <tt id="link-2173" class="py-name"><a title="lxml.etree.Element
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-2214', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2"></a><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-def"><a name="L2358"></a><tt class="py-lineno">2358</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_all_replace_reversed_ns2">test_setslice_all_replace_reversed_ns2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_all_replace_reversed_ns2-expanded"><a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-line">        <tt id="link-2215" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2173', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2174" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2215', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2216" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2174', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2175" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2216', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2217" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2175', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2311"></a><tt class="py-lineno">2311</tt>  <tt class="py-line">        <tt id="link-2176" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2176', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2177" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2217', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-line">        <tt id="link-2218" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2218', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2219" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2177', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2178" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2178', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2312"></a><tt class="py-lineno">2312</tt>  <tt class="py-line"> </tt>
-<a name="L2313"></a><tt class="py-lineno">2313</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2179" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2219', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2220" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2220', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2361"></a><tt class="py-lineno">2361</tt>  <tt class="py-line"> </tt>
+<a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2221" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2179', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{ns}a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2314"></a><tt class="py-lineno">2314</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2180" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2180', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns1}b'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a1'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2315"></a><tt class="py-lineno">2315</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2181" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2181', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a2'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2316"></a><tt class="py-lineno">2316</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2182" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2182', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns3}d'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a3'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2317"></a><tt class="py-lineno">2317</tt>  <tt class="py-line"> </tt>
-<a name="L2318"></a><tt class="py-lineno">2318</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
-<a name="L2319"></a><tt class="py-lineno">2319</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2320"></a><tt class="py-lineno">2320</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2321"></a><tt class="py-lineno">2321</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2322"></a><tt class="py-lineno">2322</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2323"></a><tt class="py-lineno">2323</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2324"></a><tt class="py-lineno">2324</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{ns3}d'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}c'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns1}b'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2325"></a><tt class="py-lineno">2325</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2183" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2221', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{ns}a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2222" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2222', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns1}b'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a1'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2364"></a><tt class="py-lineno">2364</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2223" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2223', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}c'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a2'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2224" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2224', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns3}d'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'{ns}a3'</tt><tt class="py-op">:</tt> <tt class="py-string">'test'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line"> </tt>
+<a name="L2367"></a><tt class="py-lineno">2367</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt> </tt>
+<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2373"></a><tt class="py-lineno">2373</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'{ns3}d'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns2}c'</tt><tt class="py-op">,</tt> <tt class="py-string">'{ns1}b'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2225" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2183', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L2326"></a><tt class="py-lineno">2326</tt>  <tt class="py-line"> </tt>
-<a name="L2327"></a><tt class="py-lineno">2327</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2328"></a><tt class="py-lineno">2328</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-string">'{ns}a3'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns}a2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns}a1'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2329"></a><tt class="py-lineno">2329</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2184" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2225', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L2375"></a><tt class="py-lineno">2375</tt>  <tt class="py-line"> </tt>
+<a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">[</tt><tt class="py-string">'{ns}a3'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns}a2'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-string">'{ns}a1'</tt><tt class="py-op">]</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-2226" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2184', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2185" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2226', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2227" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-2185', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2330"></a><tt class="py-lineno">2330</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_end"></a><div id="_ETreeTestCaseBase.test_setslice_end-def"><a name="L2331"></a><tt class="py-lineno">2331</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end">test_setslice_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_end-expanded"><a name="L2332"></a><tt class="py-lineno">2332</tt>  <tt class="py-line">        <tt id="link-2186" class="py-name"><a title="lxml.etree.Element
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-2227', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">a</tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2379"></a><tt class="py-lineno">2379</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_end"></a><div id="_ETreeTestCaseBase.test_setslice_end-def"><a name="L2380"></a><tt class="py-lineno">2380</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end">test_setslice_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_end-expanded"><a name="L2381"></a><tt class="py-lineno">2381</tt>  <tt class="py-line">        <tt id="link-2228" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2186', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2187" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2228', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2229" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2187', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2188" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2229', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2230" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2188', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2333"></a><tt class="py-lineno">2333</tt>  <tt class="py-line">        <tt id="link-2189" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2189', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2190" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2230', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-line">        <tt id="link-2231" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2231', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2232" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2190', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2191" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2191', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2334"></a><tt class="py-lineno">2334</tt>  <tt class="py-line"> </tt>
-<a name="L2335"></a><tt class="py-lineno">2335</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2192" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2232', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2233" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2233', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line"> </tt>
+<a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2234" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2192', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2336"></a><tt class="py-lineno">2336</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2193" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2193', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2337"></a><tt class="py-lineno">2337</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2194" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2194', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2338"></a><tt class="py-lineno">2338</tt>  <tt class="py-line"> </tt>
-<a name="L2339"></a><tt class="py-lineno">2339</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2195" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2234', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2235" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2235', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2386"></a><tt class="py-lineno">2386</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2236" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2236', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line"> </tt>
+<a name="L2388"></a><tt class="py-lineno">2388</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2237" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2195', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2340"></a><tt class="py-lineno">2340</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2196" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2237', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2238" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2196', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2341"></a><tt class="py-lineno">2341</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2197" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2238', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2390"></a><tt class="py-lineno">2390</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2239" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2197', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2342"></a><tt class="py-lineno">2342</tt>  <tt class="py-line">        <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt id="link-2198" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2239', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line">        <tt class="py-name">h</tt> <tt class="py-op">=</tt> <tt id="link-2240" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2198', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'h'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2343"></a><tt class="py-lineno">2343</tt>  <tt class="py-line"> </tt>
-<a name="L2344"></a><tt class="py-lineno">2344</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt> </tt>
-<a name="L2345"></a><tt class="py-lineno">2345</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">99</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2346"></a><tt class="py-lineno">2346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2347"></a><tt class="py-lineno">2347</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2348"></a><tt class="py-lineno">2348</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2349"></a><tt class="py-lineno">2349</tt>  <tt class="py-line"> </tt>
-<a name="L2350"></a><tt class="py-lineno">2350</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">]</tt> </tt>
-<a name="L2351"></a><tt class="py-lineno">2351</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2352"></a><tt class="py-lineno">2352</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2353"></a><tt class="py-lineno">2353</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2354"></a><tt class="py-lineno">2354</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2355"></a><tt class="py-lineno">2355</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_end_exact"></a><div id="_ETreeTestCaseBase.test_setslice_end_exact-def"><a name="L2356"></a><tt class="py-lineno">2356</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_end_exact-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_end_exact');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end_exact">test_setslice_end_exact</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_end_exact-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_end_exact-expanded"><a name="L2357"></a><tt class="py-lineno">2357</tt>  <tt class="py-line">        <tt id="link-2199" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2240', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'h'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line"> </tt>
+<a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt> </tt>
+<a name="L2394"></a><tt class="py-lineno">2394</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">99</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2396"></a><tt class="py-lineno">2396</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2398"></a><tt class="py-lineno">2398</tt>  <tt class="py-line"> </tt>
+<a name="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">]</tt> </tt>
+<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">g</tt><tt class="py-op">,</tt> <tt class="py-name">h</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2404"></a><tt class="py-lineno">2404</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_end_exact"></a><div id="_ETreeTestCaseBase.test_setslice_end_exact-def"><a name="L2405"></a><tt class="py-lineno">2405</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_end_exact-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_end_exact');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_end_exact">test_setslice_end_exact</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_end_exact-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_end_exact-expanded"><a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line">        <tt id="link-2241" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2199', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2200" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2241', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2242" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2200', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2201" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2242', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2243" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2201', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2358"></a><tt class="py-lineno">2358</tt>  <tt class="py-line">        <tt id="link-2202" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2202', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2203" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2243', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line">        <tt id="link-2244" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2244', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2245" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2203', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2204" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2204', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2359"></a><tt class="py-lineno">2359</tt>  <tt class="py-line"> </tt>
-<a name="L2360"></a><tt class="py-lineno">2360</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2205" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2245', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2246" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2246', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line"> </tt>
+<a name="L2409"></a><tt class="py-lineno">2409</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2247" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2205', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2361"></a><tt class="py-lineno">2361</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2206" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2206', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2362"></a><tt class="py-lineno">2362</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2207" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2207', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2363"></a><tt class="py-lineno">2363</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2208" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2208', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2364"></a><tt class="py-lineno">2364</tt>  <tt class="py-line"> </tt>
-<a name="L2365"></a><tt class="py-lineno">2365</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2209" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2247', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2248" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2248', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2411"></a><tt class="py-lineno">2411</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2249" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2249', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2250" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2250', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-line"> </tt>
+<a name="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2251" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2209', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2366"></a><tt class="py-lineno">2366</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2210" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2251', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2415"></a><tt class="py-lineno">2415</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2252" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2210', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2367"></a><tt class="py-lineno">2367</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2211" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2252', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2416"></a><tt class="py-lineno">2416</tt>  <tt class="py-line">        <tt class="py-name">g</tt> <tt class="py-op">=</tt> <tt id="link-2253" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2211', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2368"></a><tt class="py-lineno">2368</tt>  <tt class="py-line"> </tt>
-<a name="L2369"></a><tt class="py-lineno">2369</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
-<a name="L2370"></a><tt class="py-lineno">2370</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2371"></a><tt class="py-lineno">2371</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2372"></a><tt class="py-lineno">2372</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2373"></a><tt class="py-lineno">2373</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2374"></a><tt class="py-lineno">2374</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_single"></a><div id="_ETreeTestCaseBase.test_setslice_single-def"><a name="L2375"></a><tt class="py-lineno">2375</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_single-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_single');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_single">test_setslice_single</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_single-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_single-expanded"><a name="L2376"></a><tt class="py-lineno">2376</tt>  <tt class="py-line">        <tt id="link-2212" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2253', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'g'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2417"></a><tt class="py-lineno">2417</tt>  <tt class="py-line"> </tt>
+<a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt> </tt>
+<a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">3</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2420"></a><tt class="py-lineno">2420</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">g</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_single"></a><div id="_ETreeTestCaseBase.test_setslice_single-def"><a name="L2424"></a><tt class="py-lineno">2424</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_single-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_single');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_single">test_setslice_single</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_single-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_single-expanded"><a name="L2425"></a><tt class="py-lineno">2425</tt>  <tt class="py-line">        <tt id="link-2254" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2212', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2213" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2254', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2255" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2213', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2214" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2255', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2256" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2214', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2377"></a><tt class="py-lineno">2377</tt>  <tt class="py-line">        <tt id="link-2215" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2215', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2216" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2256', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-line">        <tt id="link-2257" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2257', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2258" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2216', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2217" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2217', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2378"></a><tt class="py-lineno">2378</tt>  <tt class="py-line"> </tt>
-<a name="L2379"></a><tt class="py-lineno">2379</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2218" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2258', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2259" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2259', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line"> </tt>
+<a name="L2428"></a><tt class="py-lineno">2428</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2260" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2218', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2380"></a><tt class="py-lineno">2380</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2219" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2219', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2381"></a><tt class="py-lineno">2381</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2220" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2220', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2382"></a><tt class="py-lineno">2382</tt>  <tt class="py-line"> </tt>
-<a name="L2383"></a><tt class="py-lineno">2383</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2221" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2260', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2261" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2261', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2430"></a><tt class="py-lineno">2430</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2262" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2262', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line"> </tt>
+<a name="L2432"></a><tt class="py-lineno">2432</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2263" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2221', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2384"></a><tt class="py-lineno">2384</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2222" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2263', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2433"></a><tt class="py-lineno">2433</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt id="link-2264" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2222', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2385"></a><tt class="py-lineno">2385</tt>  <tt class="py-line"> </tt>
-<a name="L2386"></a><tt class="py-lineno">2386</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt> </tt>
-<a name="L2387"></a><tt class="py-lineno">2387</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2388"></a><tt class="py-lineno">2388</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2389"></a><tt class="py-lineno">2389</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2390"></a><tt class="py-lineno">2390</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2391"></a><tt class="py-lineno">2391</tt>  <tt class="py-line"> </tt>
-<a name="L2392"></a><tt class="py-lineno">2392</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">f</tt><tt class="py-op">]</tt> </tt>
-<a name="L2393"></a><tt class="py-lineno">2393</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
-<a name="L2394"></a><tt class="py-lineno">2394</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2395"></a><tt class="py-lineno">2395</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2396"></a><tt class="py-lineno">2396</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2397"></a><tt class="py-lineno">2397</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_tail"></a><div id="_ETreeTestCaseBase.test_setslice_tail-def"><a name="L2398"></a><tt class="py-lineno">2398</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_tail">test_setslice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_tail-expanded"><a name="L2399"></a><tt class="py-lineno">2399</tt>  <tt class="py-line">        <tt id="link-2223" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2264', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'f'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2434"></a><tt class="py-lineno">2434</tt>  <tt class="py-line"> </tt>
+<a name="L2435"></a><tt class="py-lineno">2435</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">]</tt> </tt>
+<a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">:</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2438"></a><tt class="py-lineno">2438</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2440"></a><tt class="py-lineno">2440</tt>  <tt class="py-line"> </tt>
+<a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line">        <tt class="py-name">s</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">f</tt><tt class="py-op">]</tt> </tt>
+<a name="L2442"></a><tt class="py-lineno">2442</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">s</tt> </tt>
+<a name="L2443"></a><tt class="py-lineno">2443</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2445"></a><tt class="py-lineno">2445</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_tail"></a><div id="_ETreeTestCaseBase.test_setslice_tail-def"><a name="L2447"></a><tt class="py-lineno">2447</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_tail">test_setslice_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_tail-expanded"><a name="L2448"></a><tt class="py-lineno">2448</tt>  <tt class="py-line">        <tt id="link-2265" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2223', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2224" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2265', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2266" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2224', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2225" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2266', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2267" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2225', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2400"></a><tt class="py-lineno">2400</tt>  <tt class="py-line">        <tt id="link-2226" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2267', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2449"></a><tt class="py-lineno">2449</tt>  <tt class="py-line">        <tt id="link-2268" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2226', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2227" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2268', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2269" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2227', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2228" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2269', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2270" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2228', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2401"></a><tt class="py-lineno">2401</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;d&gt;&lt;/d&gt;D2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2402"></a><tt class="py-lineno">2402</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-2229" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2270', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2450"></a><tt class="py-lineno">2450</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;c&gt;&lt;/c&gt;C2&lt;d&gt;&lt;/d&gt;D2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line">        <tt class="py-name">doc</tt> <tt class="py-op">=</tt> <tt id="link-2271" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2229', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2403"></a><tt class="py-lineno">2403</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-2230" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2230', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2404"></a><tt class="py-lineno">2404</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2231" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2271', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">doc</tt><tt class="py-op">.</tt><tt id="link-2272" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2272', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2453"></a><tt class="py-lineno">2453</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2273" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2231', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2405"></a><tt class="py-lineno">2405</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2232" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2273', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2274" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2232', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2406"></a><tt class="py-lineno">2406</tt>  <tt class="py-line">        <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt id="link-2233" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2274', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2455"></a><tt class="py-lineno">2455</tt>  <tt class="py-line">        <tt class="py-name">z</tt> <tt class="py-op">=</tt> <tt id="link-2275" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2233', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'z'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2407"></a><tt class="py-lineno">2407</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-2234" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2234', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X2'</tt> </tt>
-<a name="L2408"></a><tt class="py-lineno">2408</tt>  <tt class="py-line">        <tt class="py-name">y</tt><tt class="py-op">.</tt><tt id="link-2235" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2235', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Y2'</tt> </tt>
-<a name="L2409"></a><tt class="py-lineno">2409</tt>  <tt class="py-line">        <tt class="py-name">z</tt><tt class="py-op">.</tt><tt id="link-2236" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2236', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Z2'</tt> </tt>
-<a name="L2410"></a><tt class="py-lineno">2410</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">z</tt><tt class="py-op">]</tt> </tt>
-<a name="L2411"></a><tt class="py-lineno">2411</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2237" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2237', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2412"></a><tt class="py-lineno">2412</tt>  <tt class="py-line">            <tt id="link-2238" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2238', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;x&gt;&lt;/x&gt;X2&lt;y&gt;&lt;/y&gt;Y2&lt;z&gt;&lt;/z&gt;Z2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2413"></a><tt class="py-lineno">2413</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2414"></a><tt class="py-lineno">2414</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_negative"></a><div id="_ETreeTestCaseBase.test_setslice_negative-def"><a name="L2415"></a><tt class="py-lineno">2415</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative">test_setslice_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_negative-expanded"><a name="L2416"></a><tt class="py-lineno">2416</tt>  <tt class="py-line">        <tt id="link-2239" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2275', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'z'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line">        <tt class="py-name">x</tt><tt class="py-op">.</tt><tt id="link-2276" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2276', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'X2'</tt> </tt>
+<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line">        <tt class="py-name">y</tt><tt class="py-op">.</tt><tt id="link-2277" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2277', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Y2'</tt> </tt>
+<a name="L2458"></a><tt class="py-lineno">2458</tt>  <tt class="py-line">        <tt class="py-name">z</tt><tt class="py-op">.</tt><tt id="link-2278" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2278', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Z2'</tt> </tt>
+<a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-number">3</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">z</tt><tt class="py-op">]</tt> </tt>
+<a name="L2460"></a><tt class="py-lineno">2460</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2279" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2279', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2461"></a><tt class="py-lineno">2461</tt>  <tt class="py-line">            <tt id="link-2280" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2280', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;B2&lt;x&gt;&lt;/x&gt;X2&lt;y&gt;&lt;/y&gt;Y2&lt;z&gt;&lt;/z&gt;Z2&lt;e&gt;&lt;/e&gt;E2&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2462"></a><tt class="py-lineno">2462</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_negative"></a><div id="_ETreeTestCaseBase.test_setslice_negative-def"><a name="L2464"></a><tt class="py-lineno">2464</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_negative-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_negative');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative">test_setslice_negative</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_negative-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_negative-expanded"><a name="L2465"></a><tt class="py-lineno">2465</tt>  <tt class="py-line">        <tt id="link-2281" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2239', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2240" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2281', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2282" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2240', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2241" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2282', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2283" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2241', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2417"></a><tt class="py-lineno">2417</tt>  <tt class="py-line">        <tt id="link-2242" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2242', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2243" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2283', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line">        <tt id="link-2284" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2284', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2285" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2243', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2244" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2244', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2418"></a><tt class="py-lineno">2418</tt>  <tt class="py-line"> </tt>
-<a name="L2419"></a><tt class="py-lineno">2419</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2245" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2285', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2286" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2286', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line"> </tt>
+<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2287" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2245', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2420"></a><tt class="py-lineno">2420</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2246" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2246', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2421"></a><tt class="py-lineno">2421</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2247" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2247', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2422"></a><tt class="py-lineno">2422</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2248" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2248', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2423"></a><tt class="py-lineno">2423</tt>  <tt class="py-line"> </tt>
-<a name="L2424"></a><tt class="py-lineno">2424</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2249" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2287', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2469"></a><tt class="py-lineno">2469</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2288" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2288', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2470"></a><tt class="py-lineno">2470</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2289" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2289', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2290" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2290', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2472"></a><tt class="py-lineno">2472</tt>  <tt class="py-line"> </tt>
+<a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2291" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2249', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2425"></a><tt class="py-lineno">2425</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2250" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2291', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2474"></a><tt class="py-lineno">2474</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2292" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2250', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2426"></a><tt class="py-lineno">2426</tt>  <tt class="py-line"> </tt>
-<a name="L2427"></a><tt class="py-lineno">2427</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">]</tt> </tt>
-<a name="L2428"></a><tt class="py-lineno">2428</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2429"></a><tt class="py-lineno">2429</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2430"></a><tt class="py-lineno">2430</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2431"></a><tt class="py-lineno">2431</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_negative2"></a><div id="_ETreeTestCaseBase.test_setslice_negative2-def"><a name="L2432"></a><tt class="py-lineno">2432</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative2">test_setslice_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_negative2-expanded"><a name="L2433"></a><tt class="py-lineno">2433</tt>  <tt class="py-line">        <tt id="link-2251" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2292', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-line"> </tt>
+<a name="L2476"></a><tt class="py-lineno">2476</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">]</tt> </tt>
+<a name="L2477"></a><tt class="py-lineno">2477</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2479"></a><tt class="py-lineno">2479</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2480"></a><tt class="py-lineno">2480</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_negative2"></a><div id="_ETreeTestCaseBase.test_setslice_negative2-def"><a name="L2481"></a><tt class="py-lineno">2481</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_negative2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_negative2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_negative2">test_setslice_negative2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_negative2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_negative2-expanded"><a name="L2482"></a><tt class="py-lineno">2482</tt>  <tt class="py-line">        <tt id="link-2293" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2251', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2252" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2293', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2294" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2252', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2253" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2294', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2295" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2253', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2434"></a><tt class="py-lineno">2434</tt>  <tt class="py-line">        <tt id="link-2254" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2254', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2255" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2295', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line">        <tt id="link-2296" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2296', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2297" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2255', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2256" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2256', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2435"></a><tt class="py-lineno">2435</tt>  <tt class="py-line"> </tt>
-<a name="L2436"></a><tt class="py-lineno">2436</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2257" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2297', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2298" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2298', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2484"></a><tt class="py-lineno">2484</tt>  <tt class="py-line"> </tt>
+<a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2299" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2257', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2437"></a><tt class="py-lineno">2437</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2258" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2258', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2438"></a><tt class="py-lineno">2438</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2259" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2259', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2439"></a><tt class="py-lineno">2439</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2260" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2260', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2440"></a><tt class="py-lineno">2440</tt>  <tt class="py-line"> </tt>
-<a name="L2441"></a><tt class="py-lineno">2441</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2261" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2299', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2300" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2300', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2487"></a><tt class="py-lineno">2487</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2301" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2301', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2488"></a><tt class="py-lineno">2488</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2302" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2302', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2489"></a><tt class="py-lineno">2489</tt>  <tt class="py-line"> </tt>
+<a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line">        <tt class="py-name">x</tt> <tt class="py-op">=</tt> <tt id="link-2303" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2261', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2442"></a><tt class="py-lineno">2442</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2262" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2303', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'x'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2491"></a><tt class="py-lineno">2491</tt>  <tt class="py-line">        <tt class="py-name">y</tt> <tt class="py-op">=</tt> <tt id="link-2304" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2262', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2443"></a><tt class="py-lineno">2443</tt>  <tt class="py-line"> </tt>
-<a name="L2444"></a><tt class="py-lineno">2444</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">]</tt> </tt>
-<a name="L2445"></a><tt class="py-lineno">2445</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2446"></a><tt class="py-lineno">2446</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2447"></a><tt class="py-lineno">2447</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2448"></a><tt class="py-lineno">2448</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_setslice_empty"></a><div id="_ETreeTestCaseBase.test_setslice_empty-def"><a name="L2449"></a><tt class="py-lineno">2449</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_empty">test_setslice_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_setslice_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_empty-expanded"><a name="L2450"></a><tt class="py-lineno">2450</tt>  <tt class="py-line">        <tt id="link-2263" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2304', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'y'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2492"></a><tt class="py-lineno">2492</tt>  <tt class="py-line"> </tt>
+<a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">]</tt> </tt>
+<a name="L2494"></a><tt class="py-lineno">2494</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">x</tt><tt class="py-op">,</tt> <tt class="py-name">y</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2496"></a><tt class="py-lineno">2496</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2497"></a><tt class="py-lineno">2497</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_setslice_empty"></a><div id="_ETreeTestCaseBase.test_setslice_empty-def"><a name="L2498"></a><tt class="py-lineno">2498</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_setslice_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_setslice_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_setslice_empty">test_setslice_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_setslice_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_setslice_empty-expanded"><a name="L2499"></a><tt class="py-lineno">2499</tt>  <tt class="py-line">        <tt id="link-2305" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2263', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2264" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2305', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2306" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2264', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2265" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2306', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2307" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2265', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2451"></a><tt class="py-lineno">2451</tt>  <tt class="py-line"> </tt>
-<a name="L2452"></a><tt class="py-lineno">2452</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2266" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2307', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line"> </tt>
+<a name="L2501"></a><tt class="py-lineno">2501</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2308" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2266', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2453"></a><tt class="py-lineno">2453</tt>  <tt class="py-line"> </tt>
-<a name="L2454"></a><tt class="py-lineno">2454</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2267" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2308', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2502"></a><tt class="py-lineno">2502</tt>  <tt class="py-line"> </tt>
+<a name="L2503"></a><tt class="py-lineno">2503</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2309" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2267', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2455"></a><tt class="py-lineno">2455</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2268" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2309', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2504"></a><tt class="py-lineno">2504</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2310" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2268', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2456"></a><tt class="py-lineno">2456</tt>  <tt class="py-line"> </tt>
-<a name="L2457"></a><tt class="py-lineno">2457</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt> </tt>
-<a name="L2458"></a><tt class="py-lineno">2458</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2459"></a><tt class="py-lineno">2459</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2460"></a><tt class="py-lineno">2460</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2461"></a><tt class="py-lineno">2461</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tail_elementtree_root"></a><div id="_ETreeTestCaseBase.test_tail_elementtree_root-def"><a name="L2462"></a><tt class="py-lineno">2462</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_elementtree_root-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_elementtree_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_elementtree_root">test_tail_elementtree_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tail_elementtree_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_elementtree_root-expanded"><a name="L2463"></a><tt class="py-lineno">2463</tt>  <tt class="py-line">        <tt id="link-2269" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2310', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line"> </tt>
+<a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt> </tt>
+<a name="L2507"></a><tt class="py-lineno">2507</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2508"></a><tt class="py-lineno">2508</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2509"></a><tt class="py-lineno">2509</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tail_elementtree_root"></a><div id="_ETreeTestCaseBase.test_tail_elementtree_root-def"><a name="L2511"></a><tt class="py-lineno">2511</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tail_elementtree_root-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tail_elementtree_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tail_elementtree_root">test_tail_elementtree_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tail_elementtree_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tail_elementtree_root-expanded"><a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-line">        <tt id="link-2311" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2269', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2270" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2311', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2312" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2270', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2271" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2312', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2313" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2271', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2464"></a><tt class="py-lineno">2464</tt>  <tt class="py-line">        <tt id="link-2272" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2313', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line">        <tt id="link-2314" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2272', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2273" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2314', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2315" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2273', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2274" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2315', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2316" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2274', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2465"></a><tt class="py-lineno">2465</tt>  <tt class="py-line"> </tt>
-<a name="L2466"></a><tt class="py-lineno">2466</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2275" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2316', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2514"></a><tt class="py-lineno">2514</tt>  <tt class="py-line"> </tt>
+<a name="L2515"></a><tt class="py-lineno">2515</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2317" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2275', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2467"></a><tt class="py-lineno">2467</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2276" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2276', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A2'</tt> </tt>
-<a name="L2468"></a><tt class="py-lineno">2468</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2277" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2317', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2516"></a><tt class="py-lineno">2516</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2318" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2318', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'A2'</tt> </tt>
+<a name="L2517"></a><tt class="py-lineno">2517</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2319" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2277', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2278" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2278', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L2469"></a><tt class="py-lineno">2469</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'A2'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2470"></a><tt class="py-lineno">2470</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2279" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2279', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2471"></a><tt class="py-lineno">2471</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_elementtree_getiterator"></a><div id="_ETreeTestCaseBase.test_elementtree_getiterator-def"><a name="L2472"></a><tt class="py-lineno">2472</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator">test_elementtree_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_elementtree_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_getiterator-expanded"><a name="L2473"></a><tt class="py-lineno">2473</tt>  <tt class="py-line">        <tt id="link-2280" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2319', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2320" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2320', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L2518"></a><tt class="py-lineno">2518</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'A2'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2321" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2321', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2520"></a><tt class="py-lineno">2520</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_elementtree_getiterator"></a><div id="_ETreeTestCaseBase.test_elementtree_getiterator-def"><a name="L2521"></a><tt class="py-lineno">2521</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator">test_elementtree_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_elementtree_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_getiterator-expanded"><a name="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line">        <tt id="link-2322" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2280', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2281" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2322', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2323" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2281', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2282" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2323', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2324" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2282', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2474"></a><tt class="py-lineno">2474</tt>  <tt class="py-line">        <tt id="link-2283" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2283', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2284" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2324', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2523"></a><tt class="py-lineno">2523</tt>  <tt class="py-line">        <tt id="link-2325" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2325', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2326" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2284', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2285" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2285', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2475"></a><tt class="py-lineno">2475</tt>  <tt class="py-line">        <tt id="link-2286" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2326', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2327" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2327', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line">        <tt id="link-2328" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2286', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2287" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2328', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2329" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2287', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2288" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2329', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2330" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2288', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2476"></a><tt class="py-lineno">2476</tt>  <tt class="py-line">         </tt>
-<a name="L2477"></a><tt class="py-lineno">2477</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2289" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2330', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2525"></a><tt class="py-lineno">2525</tt>  <tt class="py-line">         </tt>
+<a name="L2526"></a><tt class="py-lineno">2526</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2331" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2289', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2478"></a><tt class="py-lineno">2478</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2290" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2290', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2479"></a><tt class="py-lineno">2479</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2291" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2291', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2480"></a><tt class="py-lineno">2480</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2292" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2292', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2481"></a><tt class="py-lineno">2481</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2293" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2293', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2482"></a><tt class="py-lineno">2482</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2294" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2331', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2332" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2332', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2333" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2333', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2334" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2334', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2335" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2335', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2336" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2294', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2295" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2295', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L2483"></a><tt class="py-lineno">2483</tt>  <tt class="py-line">         </tt>
-<a name="L2484"></a><tt class="py-lineno">2484</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2485"></a><tt class="py-lineno">2485</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2486"></a><tt class="py-lineno">2486</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2296" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2296', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2487"></a><tt class="py-lineno">2487</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_elementtree_getiterator_filter"></a><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-def"><a name="L2488"></a><tt class="py-lineno">2488</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_getiterator_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter">test_elementtree_getiterator_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-expanded"><a name="L2489"></a><tt class="py-lineno">2489</tt>  <tt class="py-line">        <tt id="link-2297" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2336', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2337" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2337', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L2532"></a><tt class="py-lineno">2532</tt>  <tt class="py-line">         </tt>
+<a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-name">d</tt><tt class="py-op">,</tt> <tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2535"></a><tt class="py-lineno">2535</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2338" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2338', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_elementtree_getiterator_filter"></a><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-def"><a name="L2537"></a><tt class="py-lineno">2537</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_getiterator_filter');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_getiterator_filter">test_elementtree_getiterator_filter</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_getiterator_filter-expanded"><a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-line">        <tt id="link-2339" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2297', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2298" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2339', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2340" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2298', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2299" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2340', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2341" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2299', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2490"></a><tt class="py-lineno">2490</tt>  <tt class="py-line">        <tt id="link-2300" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2300', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2301" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2341', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2539"></a><tt class="py-lineno">2539</tt>  <tt class="py-line">        <tt id="link-2342" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2342', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2343" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2301', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2302" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2302', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2491"></a><tt class="py-lineno">2491</tt>  <tt class="py-line">        <tt id="link-2303" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2343', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2344" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2344', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2540"></a><tt class="py-lineno">2540</tt>  <tt class="py-line">        <tt id="link-2345" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2303', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2304" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2345', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2346" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2304', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2305" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2346', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2347" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2305', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2492"></a><tt class="py-lineno">2492</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2306" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2347', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2348" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2306', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2493"></a><tt class="py-lineno">2493</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2307" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2307', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2494"></a><tt class="py-lineno">2494</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2308" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2308', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2495"></a><tt class="py-lineno">2495</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2309" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2309', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2496"></a><tt class="py-lineno">2496</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2310" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2310', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2497"></a><tt class="py-lineno">2497</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2311" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2348', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2349" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2349', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2350" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2350', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2544"></a><tt class="py-lineno">2544</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2351" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2351', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-2352" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2352', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'e'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2353" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2311', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2312" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2312', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L2498"></a><tt class="py-lineno">2498</tt>  <tt class="py-line">         </tt>
-<a name="L2499"></a><tt class="py-lineno">2499</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2500"></a><tt class="py-lineno">2500</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2501"></a><tt class="py-lineno">2501</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2313" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2313', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2502"></a><tt class="py-lineno">2502</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-2314" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2314', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2503"></a><tt class="py-lineno">2503</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2504"></a><tt class="py-lineno">2504</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2505"></a><tt class="py-lineno">2505</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2315" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2315', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2506"></a><tt class="py-lineno">2506</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_access"></a><div id="_ETreeTestCaseBase.test_ns_access-def"><a name="L2507"></a><tt class="py-lineno">2507</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_access-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_access');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_access-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_access-expanded"><a name="L2508"></a><tt class="py-lineno">2508</tt>  <tt class="py-line">        <tt id="link-2316" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2353', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2354" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2354', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L2547"></a><tt class="py-lineno">2547</tt>  <tt class="py-line">         </tt>
+<a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2549"></a><tt class="py-lineno">2549</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2355" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2355', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-2356" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2356', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2552"></a><tt class="py-lineno">2552</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2553"></a><tt class="py-lineno">2553</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-name">a2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2357" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2357', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_access"></a><div id="_ETreeTestCaseBase.test_ns_access-def"><a name="L2556"></a><tt class="py-lineno">2556</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_access-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_access');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access">test_ns_access</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_access-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_access-expanded"><a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line">        <tt id="link-2358" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2316', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2317" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2358', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2359" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2317', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2318" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2359', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2360" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2318', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2509"></a><tt class="py-lineno">2509</tt>  <tt class="py-line">        <tt id="link-2319" class="py-name" targets="Variable lxml.cssselect.ns=lxml.cssselect-module.html#ns"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2319', 'ns', 'link-2319');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
-<a name="L2510"></a><tt class="py-lineno">2510</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x:a xmlns:x="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;/x:a&gt;'</tt> <tt class="py-op">%</tt> <tt id="link-2320" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2320', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2511"></a><tt class="py-lineno">2511</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2321" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2360', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2558"></a><tt class="py-lineno">2558</tt>  <tt class="py-line">        <tt id="link-2361" class="py-name" targets="Variable lxml.cssselect.ns=lxml.cssselect-module.html#ns"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2361', 'ns', 'link-2361');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
+<a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x:a xmlns:x="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;/x:a&gt;'</tt> <tt class="py-op">%</tt> <tt id="link-2362" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2362', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2363" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2321', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2512"></a><tt class="py-lineno">2512</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2322" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2322', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2513"></a><tt class="py-lineno">2513</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2323" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2323', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2514"></a><tt class="py-lineno">2514</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2324" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2363', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2561"></a><tt class="py-lineno">2561</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2364" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2364', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2562"></a><tt class="py-lineno">2562</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2365" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2365', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2366" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2324', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2515"></a><tt class="py-lineno">2515</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2325" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2325', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2516"></a><tt class="py-lineno">2516</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2326" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2366', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2564"></a><tt class="py-lineno">2564</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2367" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2367', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2368" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2326', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2517"></a><tt class="py-lineno">2517</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_access2"></a><div id="_ETreeTestCaseBase.test_ns_access2-def"><a name="L2518"></a><tt class="py-lineno">2518</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_access2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_access2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access2">test_ns_access2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_access2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_access2-expanded"><a name="L2519"></a><tt class="py-lineno">2519</tt>  <tt class="py-line">        <tt id="link-2327" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2368', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2566"></a><tt class="py-lineno">2566</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_access2"></a><div id="_ETreeTestCaseBase.test_ns_access2-def"><a name="L2567"></a><tt class="py-lineno">2567</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_access2-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_access2');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_access2">test_ns_access2</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_access2-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_access2-expanded"><a name="L2568"></a><tt class="py-lineno">2568</tt>  <tt class="py-line">        <tt id="link-2369" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2327', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2328" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2369', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2370" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2328', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2329" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2370', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2371" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2329', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2520"></a><tt class="py-lineno">2520</tt>  <tt class="py-line">        <tt id="link-2330" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2330', 'ns', 'link-2319');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
-<a name="L2521"></a><tt class="py-lineno">2521</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
-<a name="L2522"></a><tt class="py-lineno">2522</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x:a xmlns:x="%s" xmlns:y="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;y:b&gt;&lt;/y:b&gt;&lt;/x:a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2331" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2331', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2523"></a><tt class="py-lineno">2523</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2332" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2371', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2569"></a><tt class="py-lineno">2569</tt>  <tt class="py-line">        <tt id="link-2372" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2372', 'ns', 'link-2361');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
+<a name="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
+<a name="L2571"></a><tt class="py-lineno">2571</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;x:a xmlns:x="%s" xmlns:y="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;y:b&gt;&lt;/y:b&gt;&lt;/x:a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2373" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2373', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2572"></a><tt class="py-lineno">2572</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2374" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2332', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2524"></a><tt class="py-lineno">2524</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2333" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2333', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2525"></a><tt class="py-lineno">2525</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2334" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2334', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2526"></a><tt class="py-lineno">2526</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2335" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2374', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2573"></a><tt class="py-lineno">2573</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2375" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2375', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2376" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2376', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2377" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2335', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2527"></a><tt class="py-lineno">2527</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2336" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2336', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2528"></a><tt class="py-lineno">2528</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2337" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2377', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2576"></a><tt class="py-lineno">2576</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2378" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2378', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2577"></a><tt class="py-lineno">2577</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2379" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2337', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2529"></a><tt class="py-lineno">2529</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
-<a name="L2530"></a><tt class="py-lineno">2530</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2338" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2379', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2578"></a><tt class="py-lineno">2578</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
+<a name="L2579"></a><tt class="py-lineno">2579</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2380" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2338', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2531"></a><tt class="py-lineno">2531</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_setting"></a><div id="_ETreeTestCaseBase.test_ns_setting-def"><a name="L2532"></a><tt class="py-lineno">2532</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_setting-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_setting');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_setting">test_ns_setting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_setting-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_setting-expanded"><a name="L2533"></a><tt class="py-lineno">2533</tt>  <tt class="py-line">        <tt id="link-2339" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2380', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_setting"></a><div id="_ETreeTestCaseBase.test_ns_setting-def"><a name="L2581"></a><tt class="py-lineno">2581</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_setting-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_setting');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_setting">test_ns_setting</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_setting-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_setting-expanded"><a name="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line">        <tt id="link-2381" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2339', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2340" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2381', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2382" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2340', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2341" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2382', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2383" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2341', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2534"></a><tt class="py-lineno">2534</tt>  <tt class="py-line">        <tt id="link-2342" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2342', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2343" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2383', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line">        <tt id="link-2384" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2384', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2385" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2343', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2344" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2344', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2535"></a><tt class="py-lineno">2535</tt>  <tt class="py-line">        <tt id="link-2345" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2345', 'ns', 'link-2319');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
-<a name="L2536"></a><tt class="py-lineno">2536</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
-<a name="L2537"></a><tt class="py-lineno">2537</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2346" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2385', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2386" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2386', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line">        <tt id="link-2387" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2387', 'ns', 'link-2361');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
+<a name="L2585"></a><tt class="py-lineno">2585</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
+<a name="L2586"></a><tt class="py-lineno">2586</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2388" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2346', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2347" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2347', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2538"></a><tt class="py-lineno">2538</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2348" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2348', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt> </tt>
-<a name="L2539"></a><tt class="py-lineno">2539</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2349" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2349', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2350" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2350', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2540"></a><tt class="py-lineno">2540</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2351" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2351', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2541"></a><tt class="py-lineno">2541</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2352" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2388', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2389" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2389', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2390" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2390', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2588"></a><tt class="py-lineno">2588</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2391" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2391', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2392" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2392', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2589"></a><tt class="py-lineno">2589</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2393" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2393', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2590"></a><tt class="py-lineno">2590</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2394" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2352', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2542"></a><tt class="py-lineno">2542</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
-<a name="L2543"></a><tt class="py-lineno">2543</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2353" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2394', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2591"></a><tt class="py-lineno">2591</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
+<a name="L2592"></a><tt class="py-lineno">2592</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2395" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2353', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2544"></a><tt class="py-lineno">2544</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2354" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2354', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2545"></a><tt class="py-lineno">2545</tt>  <tt class="py-line">                          <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2355" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2395', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2593"></a><tt class="py-lineno">2593</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2396" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2396', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2594"></a><tt class="py-lineno">2594</tt>  <tt class="py-line">                          <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2397" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2355', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2546"></a><tt class="py-lineno">2546</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2356" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2356', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2547"></a><tt class="py-lineno">2547</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2357" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2397', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2595"></a><tt class="py-lineno">2595</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2398" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2398', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2596"></a><tt class="py-lineno">2596</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2399" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2357', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2548"></a><tt class="py-lineno">2548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
-<a name="L2549"></a><tt class="py-lineno">2549</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2358" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2399', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2597"></a><tt class="py-lineno">2597</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
+<a name="L2598"></a><tt class="py-lineno">2598</tt>  <tt class="py-line">                          <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2400" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2358', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2550"></a><tt class="py-lineno">2550</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2359" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2359', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2551"></a><tt class="py-lineno">2551</tt>  <tt class="py-line">                          <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2360" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2400', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2599"></a><tt class="py-lineno">2599</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}c'</tt> <tt class="py-op">%</tt> <tt id="link-2401" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2401', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2600"></a><tt class="py-lineno">2600</tt>  <tt class="py-line">                          <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2402" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2360', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2552"></a><tt class="py-lineno">2552</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_tag_parse"></a><div id="_ETreeTestCaseBase.test_ns_tag_parse-def"><a name="L2553"></a><tt class="py-lineno">2553</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_tag_parse-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_tag_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_tag_parse">test_ns_tag_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_tag_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_tag_parse-expanded"><a name="L2554"></a><tt class="py-lineno">2554</tt>  <tt class="py-line">        <tt id="link-2361" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2402', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2601"></a><tt class="py-lineno">2601</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_tag_parse"></a><div id="_ETreeTestCaseBase.test_ns_tag_parse-def"><a name="L2602"></a><tt class="py-lineno">2602</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_tag_parse-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_tag_parse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_tag_parse">test_ns_tag_parse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_tag_parse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_tag_parse-expanded"><a name="L2603"></a><tt class="py-lineno">2603</tt>  <tt class="py-line">        <tt id="link-2403" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2361', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2362" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2403', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2404" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2362', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2363" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2404', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2405" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2363', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2555"></a><tt class="py-lineno">2555</tt>  <tt class="py-line">        <tt id="link-2364" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2364', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2365" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2405', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2604"></a><tt class="py-lineno">2604</tt>  <tt class="py-line">        <tt id="link-2406" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2406', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2407" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2365', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2366" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2366', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2556"></a><tt class="py-lineno">2556</tt>  <tt class="py-line">        <tt id="link-2367" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2407', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2408" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2408', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2605"></a><tt class="py-lineno">2605</tt>  <tt class="py-line">        <tt id="link-2409" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2367', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2368" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2409', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2410" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2368', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2369" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2410', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2411" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2369', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L2557"></a><tt class="py-lineno">2557</tt>  <tt class="py-line"> </tt>
-<a name="L2558"></a><tt class="py-lineno">2558</tt>  <tt class="py-line">        <tt id="link-2370" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2370', 'ns', 'link-2319');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
-<a name="L2559"></a><tt class="py-lineno">2559</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
-<a name="L2560"></a><tt class="py-lineno">2560</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns="%s" xmlns:x="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2371" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2371', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2561"></a><tt class="py-lineno">2561</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2372" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2411', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L2606"></a><tt class="py-lineno">2606</tt>  <tt class="py-line"> </tt>
+<a name="L2607"></a><tt class="py-lineno">2607</tt>  <tt class="py-line">        <tt id="link-2412" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2412', 'ns', 'link-2361');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
+<a name="L2608"></a><tt class="py-lineno">2608</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
+<a name="L2609"></a><tt class="py-lineno">2609</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns="%s" xmlns:x="%s"&gt;&lt;x:b&gt;&lt;/x:b&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2413" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2413', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2610"></a><tt class="py-lineno">2610</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-2414" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2372', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2562"></a><tt class="py-lineno">2562</tt>  <tt class="py-line"> </tt>
-<a name="L2563"></a><tt class="py-lineno">2563</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2373" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2373', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2564"></a><tt class="py-lineno">2564</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2374" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2374', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2565"></a><tt class="py-lineno">2565</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2375" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2414', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">file</tt><tt class="py-op">=</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2611"></a><tt class="py-lineno">2611</tt>  <tt class="py-line"> </tt>
+<a name="L2612"></a><tt class="py-lineno">2612</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">t</tt><tt class="py-op">.</tt><tt id="link-2415" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2415', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2613"></a><tt class="py-lineno">2613</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt id="link-2416" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2416', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2614"></a><tt class="py-lineno">2614</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2417" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2375', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2566"></a><tt class="py-lineno">2566</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
-<a name="L2567"></a><tt class="py-lineno">2567</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2376" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2417', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2615"></a><tt class="py-lineno">2615</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> </tt>
+<a name="L2616"></a><tt class="py-lineno">2616</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2418" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2376', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2568"></a><tt class="py-lineno">2568</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2377" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2377', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L2569"></a><tt class="py-lineno">2569</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2378" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2418', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2617"></a><tt class="py-lineno">2617</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}b'</tt> <tt class="py-op">%</tt> <tt id="link-2419" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2419', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L2618"></a><tt class="py-lineno">2618</tt>  <tt class="py-line">                          <tt class="py-name">a</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2420" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2378', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2570"></a><tt class="py-lineno">2570</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_attr"></a><div id="_ETreeTestCaseBase.test_ns_attr-def"><a name="L2571"></a><tt class="py-lineno">2571</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_attr-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_attr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_attr">test_ns_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_attr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_attr-expanded"><a name="L2572"></a><tt class="py-lineno">2572</tt>  <tt class="py-line">        <tt id="link-2379" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2420', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2619"></a><tt class="py-lineno">2619</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_attr"></a><div id="_ETreeTestCaseBase.test_ns_attr-def"><a name="L2620"></a><tt class="py-lineno">2620</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_attr-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_attr');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_attr">test_ns_attr</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_attr-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_attr-expanded"><a name="L2621"></a><tt class="py-lineno">2621</tt>  <tt class="py-line">        <tt id="link-2421" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2379', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2380" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2421', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2422" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2380', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2381" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2422', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2423" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2381', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2573"></a><tt class="py-lineno">2573</tt>  <tt class="py-line">        <tt id="link-2382" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2382', 'ns', 'link-2319');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
-<a name="L2574"></a><tt class="py-lineno">2574</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
-<a name="L2575"></a><tt class="py-lineno">2575</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2383" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2423', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2622"></a><tt class="py-lineno">2622</tt>  <tt class="py-line">        <tt id="link-2424" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2424', 'ns', 'link-2361');">ns</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/1'</tt> </tt>
+<a name="L2623"></a><tt class="py-lineno">2623</tt>  <tt class="py-line">        <tt class="py-name">ns2</tt> <tt class="py-op">=</tt> <tt class="py-string">'http://xml.infrae.com/2'</tt> </tt>
+<a name="L2624"></a><tt class="py-lineno">2624</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2425" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2383', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2576"></a><tt class="py-lineno">2576</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2384" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2425', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2625"></a><tt class="py-lineno">2625</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2426" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2384', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}foo'</tt> <tt class="py-op">%</tt> <tt id="link-2385" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2385', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2577"></a><tt class="py-lineno">2577</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2386" class="py-name"><a title="lxml.etree._Element.set
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2426', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}foo'</tt> <tt class="py-op">%</tt> <tt id="link-2427" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2427', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-string">'Foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2626"></a><tt class="py-lineno">2626</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2428" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2386', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}bar'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2578"></a><tt class="py-lineno">2578</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2579"></a><tt class="py-lineno">2579</tt>  <tt class="py-line">            <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2580"></a><tt class="py-lineno">2580</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2387" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2428', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}bar'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">,</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2627"></a><tt class="py-lineno">2627</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2628"></a><tt class="py-lineno">2628</tt>  <tt class="py-line">            <tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2629"></a><tt class="py-lineno">2629</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2429" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2387', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}foo'</tt> <tt class="py-op">%</tt> <tt id="link-2388" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2388', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2581"></a><tt class="py-lineno">2581</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2582"></a><tt class="py-lineno">2582</tt>  <tt class="py-line">            <tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2583"></a><tt class="py-lineno">2583</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2389" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2429', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}foo'</tt> <tt class="py-op">%</tt> <tt id="link-2430" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2430', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2630"></a><tt class="py-lineno">2630</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2631"></a><tt class="py-lineno">2631</tt>  <tt class="py-line">            <tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2632"></a><tt class="py-lineno">2632</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2431" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2389', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}bar'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2584"></a><tt class="py-lineno">2584</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L2585"></a><tt class="py-lineno">2585</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2390" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2390', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2586"></a><tt class="py-lineno">2586</tt>  <tt class="py-line">                <tt id="link-2391" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2391', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="%s" xmlns:ns1="%s" ns0:foo="Foo" ns1:bar="Bar"&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2392" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2392', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2587"></a><tt class="py-lineno">2587</tt>  <tt class="py-line">                <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L2588"></a><tt class="py-lineno">2588</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-2393" class="py-name"><a title="exceptions.AssertionError" class="py-name" href="#" onclick="return doclink('link-2393', 'AssertionError', 'link-685');">AssertionError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L2589"></a><tt class="py-lineno">2589</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2394" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2394', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2590"></a><tt class="py-lineno">2590</tt>  <tt class="py-line">                <tt id="link-2395" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2395', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="%s" xmlns:ns1="%s" ns1:foo="Foo" ns0:bar="Bar"&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">ns2</tt><tt class="py-op">,</tt> <tt id="link-2396" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2396', 'ns', 'link-2319');">ns</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2591"></a><tt class="py-lineno">2591</tt>  <tt class="py-line">                <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2592"></a><tt class="py-lineno">2592</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_move"></a><div id="_ETreeTestCaseBase.test_ns_move-def"><a name="L2593"></a><tt class="py-lineno">2593</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_move-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_move');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_move-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_move-expanded"><a name="L2594"></a><tt class="py-lineno">2594</tt>  <tt class="py-line">        <tt id="link-2397" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2431', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}bar'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2633"></a><tt class="py-lineno">2633</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L2634"></a><tt class="py-lineno">2634</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2432" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2432', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2635"></a><tt class="py-lineno">2635</tt>  <tt class="py-line">                <tt id="link-2433" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2433', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="%s" xmlns:ns1="%s" ns0:foo="Foo" ns1:bar="Bar"&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-2434" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2434', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">,</tt> <tt class="py-name">ns2</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2636"></a><tt class="py-lineno">2636</tt>  <tt class="py-line">                <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L2637"></a><tt class="py-lineno">2637</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-2435" class="py-name"><a title="exceptions.AssertionError" class="py-name" href="#" onclick="return doclink('link-2435', 'AssertionError', 'link-685');">AssertionError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L2638"></a><tt class="py-lineno">2638</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2436" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2436', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2639"></a><tt class="py-lineno">2639</tt>  <tt class="py-line">                <tt id="link-2437" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2437', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="%s" xmlns:ns1="%s" ns1:foo="Foo" ns0:bar="Bar"&gt;&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">ns2</tt><tt class="py-op">,</tt> <tt id="link-2438" class="py-name"><a title="lxml.cssselect.ns" class="py-name" href="#" onclick="return doclink('link-2438', 'ns', 'link-2361');">ns</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2640"></a><tt class="py-lineno">2640</tt>  <tt class="py-line">                <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2641"></a><tt class="py-lineno">2641</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_move"></a><div id="_ETreeTestCaseBase.test_ns_move-def"><a name="L2642"></a><tt class="py-lineno">2642</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_move-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_move');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_move">test_ns_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_move-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_move-expanded"><a name="L2643"></a><tt class="py-lineno">2643</tt>  <tt class="py-line">        <tt id="link-2439" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2397', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2398" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2439', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2440" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2398', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2399" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2440', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2441" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2399', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2595"></a><tt class="py-lineno">2595</tt>  <tt class="py-line">        <tt class="py-name">one</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2400" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2441', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2644"></a><tt class="py-lineno">2644</tt>  <tt class="py-line">        <tt class="py-name">one</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2442" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2400', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2401" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2442', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2443" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2401', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2596"></a><tt class="py-lineno">2596</tt>  <tt class="py-line">            <tt id="link-2402" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2402', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="http://a.b.c"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2597"></a><tt class="py-lineno">2597</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt class="py-name">one</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2598"></a><tt class="py-lineno">2598</tt>  <tt class="py-line"> </tt>
-<a name="L2599"></a><tt class="py-lineno">2599</tt>  <tt class="py-line">        <tt class="py-name">two</tt> <tt class="py-op">=</tt> <tt id="link-2403" class="py-name"><a title="lxml.etree.Element
-lxml.objectify.Element
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2403', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2600"></a><tt class="py-lineno">2600</tt>  <tt class="py-line">        <tt class="py-name">two</tt><tt class="py-op">.</tt><tt id="link-2404" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2404', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt> </tt>
-<a name="L2601"></a><tt class="py-lineno">2601</tt>  <tt class="py-line">        <tt class="py-comment"># removing the originating document could cause a crash/error before</tt> </tt>
-<a name="L2602"></a><tt class="py-lineno">2602</tt>  <tt class="py-line">        <tt class="py-comment"># as namespace is not moved along with it</tt> </tt>
-<a name="L2603"></a><tt class="py-lineno">2603</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">one</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt> </tt>
-<a name="L2604"></a><tt class="py-lineno">2604</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://a.b.c}baz'</tt><tt class="py-op">,</tt> <tt class="py-name">two</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2405" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2443', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2645"></a><tt class="py-lineno">2645</tt>  <tt class="py-line">            <tt id="link-2444" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2444', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="http://a.b.c"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2646"></a><tt class="py-lineno">2646</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt class="py-name">one</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2647"></a><tt class="py-lineno">2647</tt>  <tt class="py-line"> </tt>
+<a name="L2648"></a><tt class="py-lineno">2648</tt>  <tt class="py-line">        <tt class="py-name">two</tt> <tt class="py-op">=</tt> <tt id="link-2445" class="py-name"><a title="lxml.etree.Element
+lxml.objectify.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2445', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2649"></a><tt class="py-lineno">2649</tt>  <tt class="py-line">        <tt class="py-name">two</tt><tt class="py-op">.</tt><tt id="link-2446" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2446', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt> </tt>
+<a name="L2650"></a><tt class="py-lineno">2650</tt>  <tt class="py-line">        <tt class="py-comment"># removing the originating document could cause a crash/error before</tt> </tt>
+<a name="L2651"></a><tt class="py-lineno">2651</tt>  <tt class="py-line">        <tt class="py-comment"># as namespace is not moved along with it</tt> </tt>
+<a name="L2652"></a><tt class="py-lineno">2652</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">one</tt><tt class="py-op">,</tt> <tt class="py-name">baz</tt> </tt>
+<a name="L2653"></a><tt class="py-lineno">2653</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{http://a.b.c}baz'</tt><tt class="py-op">,</tt> <tt class="py-name">two</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2447" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2405', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2605"></a><tt class="py-lineno">2605</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_decl_tostring"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring-def"><a name="L2606"></a><tt class="py-lineno">2606</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring">test_ns_decl_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring-expanded"><a name="L2607"></a><tt class="py-lineno">2607</tt>  <tt class="py-line">        <tt id="link-2406" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2406', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2407" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2447', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2654"></a><tt class="py-lineno">2654</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_decl_tostring"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring-def"><a name="L2655"></a><tt class="py-lineno">2655</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring">test_ns_decl_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring-expanded"><a name="L2656"></a><tt class="py-lineno">2656</tt>  <tt class="py-line">        <tt id="link-2448" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2448', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2449" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2407', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2408" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2408', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2608"></a><tt class="py-lineno">2608</tt>  <tt class="py-line">        <tt id="link-2409" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2409', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2410" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2449', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2450" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2450', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2657"></a><tt class="py-lineno">2657</tt>  <tt class="py-line">        <tt id="link-2451" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2451', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2452" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2410', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2411" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2452', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2453" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2411', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2609"></a><tt class="py-lineno">2609</tt>  <tt class="py-line">            <tt id="link-2412" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2412', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="http://a.b.c"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2610"></a><tt class="py-lineno">2610</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2413" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2413', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2611"></a><tt class="py-lineno">2611</tt>  <tt class="py-line"> </tt>
-<a name="L2612"></a><tt class="py-lineno">2612</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2414" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2414', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2415" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2415', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2613"></a><tt class="py-lineno">2613</tt>  <tt class="py-line">                            <tt id="link-2416" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2416', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2614"></a><tt class="py-lineno">2614</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2417" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2417', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2615"></a><tt class="py-lineno">2615</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_ns_decl_tostring_default"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-def"><a name="L2616"></a><tt class="py-lineno">2616</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_default-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_default');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_default">test_ns_decl_tostring_default</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-expanded"><a name="L2617"></a><tt class="py-lineno">2617</tt>  <tt class="py-line">        <tt id="link-2418" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2418', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2419" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2453', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2658"></a><tt class="py-lineno">2658</tt>  <tt class="py-line">            <tt id="link-2454" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2454', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="http://a.b.c"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2659"></a><tt class="py-lineno">2659</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2455" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2455', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2660"></a><tt class="py-lineno">2660</tt>  <tt class="py-line"> </tt>
+<a name="L2661"></a><tt class="py-lineno">2661</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2456" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2456', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2457" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2457', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2662"></a><tt class="py-lineno">2662</tt>  <tt class="py-line">                            <tt id="link-2458" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2458', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2663"></a><tt class="py-lineno">2663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2459" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2459', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2664"></a><tt class="py-lineno">2664</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_ns_decl_tostring_default"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-def"><a name="L2665"></a><tt class="py-lineno">2665</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_default-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_default');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_default">test_ns_decl_tostring_default</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_default-expanded"><a name="L2666"></a><tt class="py-lineno">2666</tt>  <tt class="py-line">        <tt id="link-2460" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2460', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2461" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2419', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2420" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2420', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2618"></a><tt class="py-lineno">2618</tt>  <tt class="py-line">        <tt id="link-2421" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2421', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2422" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2461', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2462" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2462', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2667"></a><tt class="py-lineno">2667</tt>  <tt class="py-line">        <tt id="link-2463" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2463', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2464" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2422', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2423" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2464', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2465" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2423', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2619"></a><tt class="py-lineno">2619</tt>  <tt class="py-line">            <tt id="link-2424" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2424', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns="http://a.b.c"&gt;&lt;baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2620"></a><tt class="py-lineno">2620</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2425" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2425', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2621"></a><tt class="py-lineno">2621</tt>  <tt class="py-line"> </tt>
-<a name="L2622"></a><tt class="py-lineno">2622</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2426" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2426', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2427" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2427', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2623"></a><tt class="py-lineno">2623</tt>  <tt class="py-line">                            <tt id="link-2428" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2428', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2624"></a><tt class="py-lineno">2624</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2429" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2429', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2625"></a><tt class="py-lineno">2625</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_ns_decl_tostring_root"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-def"><a name="L2626"></a><tt class="py-lineno">2626</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_root-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-expanded"><a name="L2627"></a><tt class="py-lineno">2627</tt>  <tt class="py-line">        <tt id="link-2430" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2430', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2431" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2465', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2668"></a><tt class="py-lineno">2668</tt>  <tt class="py-line">            <tt id="link-2466" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2466', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns="http://a.b.c"&gt;&lt;baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2669"></a><tt class="py-lineno">2669</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2467" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2467', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2670"></a><tt class="py-lineno">2670</tt>  <tt class="py-line"> </tt>
+<a name="L2671"></a><tt class="py-lineno">2671</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2468" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2468', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2469" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2469', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2672"></a><tt class="py-lineno">2672</tt>  <tt class="py-line">                            <tt id="link-2470" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2470', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2673"></a><tt class="py-lineno">2673</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2471" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2471', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2674"></a><tt class="py-lineno">2674</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_ns_decl_tostring_root"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-def"><a name="L2675"></a><tt class="py-lineno">2675</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_root-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_root">test_ns_decl_tostring_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_root-expanded"><a name="L2676"></a><tt class="py-lineno">2676</tt>  <tt class="py-line">        <tt id="link-2472" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2472', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2473" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2431', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2432" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2432', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2628"></a><tt class="py-lineno">2628</tt>  <tt class="py-line">        <tt id="link-2433" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2433', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2434" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2473', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2474" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2474', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2677"></a><tt class="py-lineno">2677</tt>  <tt class="py-line">        <tt id="link-2475" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2475', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2476" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2434', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2435" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2476', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2477" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2435', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2629"></a><tt class="py-lineno">2629</tt>  <tt class="py-line">            <tt id="link-2436" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2436', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo xmlns:ns="http://a.b.c"&gt;&lt;bar&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2630"></a><tt class="py-lineno">2630</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2437" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2437', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2631"></a><tt class="py-lineno">2631</tt>  <tt class="py-line"> </tt>
-<a name="L2632"></a><tt class="py-lineno">2632</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2438" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2438', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2439" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2439', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2633"></a><tt class="py-lineno">2633</tt>  <tt class="py-line">                            <tt id="link-2440" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2440', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2634"></a><tt class="py-lineno">2634</tt>  <tt class="py-line"> </tt>
-<a name="L2635"></a><tt class="py-lineno">2635</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2441" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2441', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2636"></a><tt class="py-lineno">2636</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_ns_decl_tostring_element"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-def"><a name="L2637"></a><tt class="py-lineno">2637</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_element-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-expanded"><a name="L2638"></a><tt class="py-lineno">2638</tt>  <tt class="py-line">        <tt id="link-2442" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2477', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2678"></a><tt class="py-lineno">2678</tt>  <tt class="py-line">            <tt id="link-2478" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2478', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo xmlns:ns="http://a.b.c"&gt;&lt;bar&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2679"></a><tt class="py-lineno">2679</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2479" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2479', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2680"></a><tt class="py-lineno">2680</tt>  <tt class="py-line"> </tt>
+<a name="L2681"></a><tt class="py-lineno">2681</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2480" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2480', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2481" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2481', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2682"></a><tt class="py-lineno">2682</tt>  <tt class="py-line">                            <tt id="link-2482" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2482', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2683"></a><tt class="py-lineno">2683</tt>  <tt class="py-line"> </tt>
+<a name="L2684"></a><tt class="py-lineno">2684</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2483" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2483', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2685"></a><tt class="py-lineno">2685</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_ns_decl_tostring_element"></a><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-def"><a name="L2686"></a><tt class="py-lineno">2686</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_ns_decl_tostring_element-toggle" onclick="return toggle('_ETreeTestCaseBase.test_ns_decl_tostring_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_ns_decl_tostring_element">test_ns_decl_tostring_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_ns_decl_tostring_element-expanded"><a name="L2687"></a><tt class="py-lineno">2687</tt>  <tt class="py-line">        <tt id="link-2484" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2442', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2443" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2484', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2485" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2443', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2444" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2485', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2486" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2444', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2639"></a><tt class="py-lineno">2639</tt>  <tt class="py-line">        <tt id="link-2445" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2445', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2446" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2486', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2688"></a><tt class="py-lineno">2688</tt>  <tt class="py-line">        <tt id="link-2487" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2487', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2488" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2446', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2447" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2447', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2640"></a><tt class="py-lineno">2640</tt>  <tt class="py-line"> </tt>
-<a name="L2641"></a><tt class="py-lineno">2641</tt>  <tt class="py-line">        <tt id="link-2448" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2448', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2449" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2488', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2489" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2489', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2689"></a><tt class="py-lineno">2689</tt>  <tt class="py-line"> </tt>
+<a name="L2690"></a><tt class="py-lineno">2690</tt>  <tt class="py-line">        <tt id="link-2490" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2490', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2491" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2449', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"foo"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2642"></a><tt class="py-lineno">2642</tt>  <tt class="py-line">        <tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-2450" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2450', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2451" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2451', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{http://a.b.c}bar"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2643"></a><tt class="py-lineno">2643</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2452" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2452', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">bar</tt><tt class="py-op">,</tt> <tt class="py-string">"{http://a.b.c}baz"</tt><tt class="py-op">)</tt> </tt>
-<a name="L2644"></a><tt class="py-lineno">2644</tt>  <tt class="py-line"> </tt>
-<a name="L2645"></a><tt class="py-lineno">2645</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2453" class="py-name"><a title="lxml.etree._Element.findall
-lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2453', 'findall', 'link-980');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2454" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2454', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2646"></a><tt class="py-lineno">2646</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2455" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2491', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"foo"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2691"></a><tt class="py-lineno">2691</tt>  <tt class="py-line">        <tt class="py-name">bar</tt> <tt class="py-op">=</tt> <tt id="link-2492" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2492', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2493" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2493', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{http://a.b.c}bar"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2692"></a><tt class="py-lineno">2692</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt id="link-2494" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2494', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">bar</tt><tt class="py-op">,</tt> <tt class="py-string">"{http://a.b.c}baz"</tt><tt class="py-op">)</tt> </tt>
+<a name="L2693"></a><tt class="py-lineno">2693</tt>  <tt class="py-line"> </tt>
+<a name="L2694"></a><tt class="py-lineno">2694</tt>  <tt class="py-line">        <tt class="py-name">nsdecl</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt id="link-2495" class="py-name"><a title="lxml.etree._Element.findall
+lxml.etree._ElementTree.findall" class="py-name" href="#" onclick="return doclink('link-2495', 'findall', 'link-986');">findall</a></tt><tt class="py-op">(</tt><tt id="link-2496" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2496', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"xmlns(?::[a-z0-9]+)?=[\"']([^\"']+)[\"']"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2695"></a><tt class="py-lineno">2695</tt>  <tt class="py-line">                            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2497" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2455', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2456" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2456', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2647"></a><tt class="py-lineno">2647</tt>  <tt class="py-line"> </tt>
-<a name="L2648"></a><tt class="py-lineno">2648</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2457" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2457', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2649"></a><tt class="py-lineno">2649</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_attribute_xmlns_move"></a><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-def"><a name="L2650"></a><tt class="py-lineno">2650</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_xmlns_move-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_xmlns_move');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move">test_attribute_xmlns_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-expanded"><a name="L2651"></a><tt class="py-lineno">2651</tt>  <tt class="py-line">        <tt id="link-2458" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2497', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2498" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2498', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2696"></a><tt class="py-lineno">2696</tt>  <tt class="py-line"> </tt>
+<a name="L2697"></a><tt class="py-lineno">2697</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt id="link-2499" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2499', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"http://a.b.c"</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">nsdecl</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2698"></a><tt class="py-lineno">2698</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_attribute_xmlns_move"></a><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-def"><a name="L2699"></a><tt class="py-lineno">2699</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_xmlns_move-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_xmlns_move');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_xmlns_move">test_attribute_xmlns_move</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_xmlns_move-expanded"><a name="L2700"></a><tt class="py-lineno">2700</tt>  <tt class="py-line">        <tt id="link-2500" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2458', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2459" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2500', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2501" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2459', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2460" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2501', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2502" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2460', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2652"></a><tt class="py-lineno">2652</tt>  <tt class="py-line"> </tt>
-<a name="L2653"></a><tt class="py-lineno">2653</tt>  <tt class="py-line">        <tt id="link-2461" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2461', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2462" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2502', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2701"></a><tt class="py-lineno">2701</tt>  <tt class="py-line"> </tt>
+<a name="L2702"></a><tt class="py-lineno">2702</tt>  <tt class="py-line">        <tt id="link-2503" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2503', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2504" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2462', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'element'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2654"></a><tt class="py-lineno">2654</tt>  <tt class="py-line"> </tt>
-<a name="L2655"></a><tt class="py-lineno">2655</tt>  <tt class="py-line">        <tt class="py-name">subelement</tt> <tt class="py-op">=</tt> <tt id="link-2463" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2504', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'element'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2703"></a><tt class="py-lineno">2703</tt>  <tt class="py-line"> </tt>
+<a name="L2704"></a><tt class="py-lineno">2704</tt>  <tt class="py-line">        <tt class="py-name">subelement</tt> <tt class="py-op">=</tt> <tt id="link-2505" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2463', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'subelement'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2656"></a><tt class="py-lineno">2656</tt>  <tt class="py-line">                             <tt class="py-op">{</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">:</tt> <tt class="py-string">"foo"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2657"></a><tt class="py-lineno">2657</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2464" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2505', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'subelement'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2705"></a><tt class="py-lineno">2705</tt>  <tt class="py-line">                             <tt class="py-op">{</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">:</tt> <tt class="py-string">"foo"</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2706"></a><tt class="py-lineno">2706</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2506" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2464', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2658"></a><tt class="py-lineno">2658</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2659"></a><tt class="py-lineno">2659</tt>  <tt class="py-line">            <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> </tt>
-<a name="L2660"></a><tt class="py-lineno">2660</tt>  <tt class="py-line">            <tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2465" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2506', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2707"></a><tt class="py-lineno">2707</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2708"></a><tt class="py-lineno">2708</tt>  <tt class="py-line">            <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> </tt>
+<a name="L2709"></a><tt class="py-lineno">2709</tt>  <tt class="py-line">            <tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2507" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2465', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2661"></a><tt class="py-lineno">2661</tt>  <tt class="py-line"> </tt>
-<a name="L2662"></a><tt class="py-lineno">2662</tt>  <tt class="py-line">        <tt id="link-2466" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2466', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2467" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2467', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">)</tt> </tt>
-<a name="L2663"></a><tt class="py-lineno">2663</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2468" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2507', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2710"></a><tt class="py-lineno">2710</tt>  <tt class="py-line"> </tt>
+<a name="L2711"></a><tt class="py-lineno">2711</tt>  <tt class="py-line">        <tt id="link-2508" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2508', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2509" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2509', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">)</tt> </tt>
+<a name="L2712"></a><tt class="py-lineno">2712</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2510" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2468', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2664"></a><tt class="py-lineno">2664</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2665"></a><tt class="py-lineno">2665</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt> <tt class="py-op">:</tt> <tt class="py-string">"foo"</tt><tt class="py-op">}</tt><tt class="py-op">.</tt><tt id="link-2469" class="py-name"><a title="lxml.etree._Attrib.items
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2510', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2713"></a><tt class="py-lineno">2713</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2714"></a><tt class="py-lineno">2714</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt> <tt class="py-op">:</tt> <tt class="py-string">"foo"</tt><tt class="py-op">}</tt><tt class="py-op">.</tt><tt id="link-2511" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-2469', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2666"></a><tt class="py-lineno">2666</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2470" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-2511', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2715"></a><tt class="py-lineno">2715</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2512" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2470', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2471" class="py-name"><a title="lxml.etree._Attrib.items
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-2512', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-2513" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-2471', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2667"></a><tt class="py-lineno">2667</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2668"></a><tt class="py-lineno">2668</tt>  <tt class="py-line">            <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> </tt>
-<a name="L2669"></a><tt class="py-lineno">2669</tt>  <tt class="py-line">            <tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2472" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-2513', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2716"></a><tt class="py-lineno">2716</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2717"></a><tt class="py-lineno">2717</tt>  <tt class="py-line">            <tt class="py-string">"foo"</tt><tt class="py-op">,</tt> </tt>
+<a name="L2718"></a><tt class="py-lineno">2718</tt>  <tt class="py-line">            <tt class="py-name">subelement</tt><tt class="py-op">.</tt><tt id="link-2514" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2472', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2670"></a><tt class="py-lineno">2670</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_namespaces_after_serialize"></a><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-def"><a name="L2671"></a><tt class="py-lineno">2671</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_namespaces_after_serialize-toggle" onclick="return toggle('_ETreeTestCaseBase.test_namespaces_after_serialize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_namespaces_after_serialize">test_namespaces_after_serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-expanded"><a name="L2672"></a><tt class="py-lineno">2672</tt>  <tt class="py-line">        <tt id="link-2473" class="py-name" targets="Method lxml.etree._ElementTree.parse()=lxml.etree._ElementTree-class.html#parse,Function lxml.etree.parse()=lxml.etree-module.html#parse,Function lxml.html.ElementSoup.parse()=lxml.html.ElementSoup-module.html#parse,Function lxml.html.html5parser.parse()=lxml.html.html5parser-module.html#parse,Function lxml.html.soupparser.parse()=lxml.html.soupparser-module.html#parse,Function lxml.objectify.parse()=lxml.objectify-module.html#parse,Method lxml.tests.common_imports.HelperTestCase.parse()=lxml.tests.common_imports.HelperTestCase-class.html#parse"><a title="lxml.etree._ElementTree.parse
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2514', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{http://www.w3.org/XML/1998/namespace}id"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2719"></a><tt class="py-lineno">2719</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_namespaces_after_serialize"></a><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-def"><a name="L2720"></a><tt class="py-lineno">2720</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_namespaces_after_serialize-toggle" onclick="return toggle('_ETreeTestCaseBase.test_namespaces_after_serialize');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_namespaces_after_serialize">test_namespaces_after_serialize</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_namespaces_after_serialize-expanded"><a name="L2721"></a><tt class="py-lineno">2721</tt>  <tt class="py-line">        <tt id="link-2515" class="py-name" targets="Method lxml.etree._ElementTree.parse()=lxml.etree._ElementTree-class.html#parse,Function lxml.etree.parse()=lxml.etree-module.html#parse,Function lxml.html.ElementSoup.parse()=lxml.html.ElementSoup-module.html#parse,Function lxml.html.html5parser.parse()=lxml.html.html5parser-module.html#parse,Function lxml.html.soupparser.parse()=lxml.html.soupparser-module.html#parse,Function lxml.objectify.parse()=lxml.objectify-module.html#parse,Method lxml.tests.common_imports.HelperTestCase.parse()=lxml.tests.common_imports.HelperTestCase-class.html#parse"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2473', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2474" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2515', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2516" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2474', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2475" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2516', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2517" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2475', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2673"></a><tt class="py-lineno">2673</tt>  <tt class="py-line">        <tt id="link-2476" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2476', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2477" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2517', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L2722"></a><tt class="py-lineno">2722</tt>  <tt class="py-line">        <tt id="link-2518" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2518', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2519" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2477', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2478" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2478', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2674"></a><tt class="py-lineno">2674</tt>  <tt class="py-line"> </tt>
-<a name="L2675"></a><tt class="py-lineno">2675</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
-<a name="L2676"></a><tt class="py-lineno">2676</tt>  <tt class="py-line">        <tt class="py-name">one</tt> <tt class="py-op">=</tt> <tt id="link-2479" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2519', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2520" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2520', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2723"></a><tt class="py-lineno">2723</tt>  <tt class="py-line"> </tt>
+<a name="L2724"></a><tt class="py-lineno">2724</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
+<a name="L2725"></a><tt class="py-lineno">2725</tt>  <tt class="py-line">        <tt class="py-name">one</tt> <tt class="py-op">=</tt> <tt id="link-2521" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2479', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2677"></a><tt class="py-lineno">2677</tt>  <tt class="py-line">            <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="%s"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2678"></a><tt class="py-lineno">2678</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt class="py-name">one</tt><tt class="py-op">.</tt><tt id="link-2480" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2480', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-<a name="L2679"></a><tt class="py-lineno">2679</tt>  <tt class="py-line"> </tt>
-<a name="L2680"></a><tt class="py-lineno">2680</tt>  <tt class="py-line">        <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt id="link-2481" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2521', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L2726"></a><tt class="py-lineno">2726</tt>  <tt class="py-line">            <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;foo&gt;&lt;bar xmlns:ns="%s"&gt;&lt;ns:baz/&gt;&lt;/bar&gt;&lt;/foo&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2727"></a><tt class="py-lineno">2727</tt>  <tt class="py-line">        <tt class="py-name">baz</tt> <tt class="py-op">=</tt> <tt class="py-name">one</tt><tt class="py-op">.</tt><tt id="link-2522" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2522', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+<a name="L2728"></a><tt class="py-lineno">2728</tt>  <tt class="py-line"> </tt>
+<a name="L2729"></a><tt class="py-lineno">2729</tt>  <tt class="py-line">        <tt class="py-name">parsed</tt> <tt class="py-op">=</tt> <tt id="link-2523" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2481', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt> <tt id="link-2482" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2482', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2483" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2483', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2681"></a><tt class="py-lineno">2681</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}baz'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-2484" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2523', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt> <tt id="link-2524" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2524', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">baz</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2525" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2525', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2730"></a><tt class="py-lineno">2730</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'{%s}baz'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">,</tt> <tt class="py-name">parsed</tt><tt class="py-op">.</tt><tt id="link-2526" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2484', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2682"></a><tt class="py-lineno">2682</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_attribute_namespace_roundtrip"></a><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-def"><a name="L2683"></a><tt class="py-lineno">2683</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_namespace_roundtrip');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip">test_attribute_namespace_roundtrip</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-expanded"><a name="L2684"></a><tt class="py-lineno">2684</tt>  <tt class="py-line">        <tt id="link-2485" class="py-name"><a title="lxml.etree.fromstring
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2526', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2731"></a><tt class="py-lineno">2731</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_attribute_namespace_roundtrip"></a><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-def"><a name="L2732"></a><tt class="py-lineno">2732</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_namespace_roundtrip');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip">test_attribute_namespace_roundtrip</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip-expanded"><a name="L2733"></a><tt class="py-lineno">2733</tt>  <tt class="py-line">        <tt id="link-2527" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2485', 'fromstring', 'link-805');">fromstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2486" class="py-name"><a title="lxml.etree
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2527', 'fromstring', 'link-805');">fromstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2528" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2486', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2487" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2528', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2529" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2487', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
-<a name="L2685"></a><tt class="py-lineno">2685</tt>  <tt class="py-line">        <tt id="link-2488" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2488', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2489" class="py-name"><a title="lxml.etree
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2529', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
+<a name="L2734"></a><tt class="py-lineno">2734</tt>  <tt class="py-line">        <tt id="link-2530" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2530', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2531" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2489', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2490" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2490', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2686"></a><tt class="py-lineno">2686</tt>  <tt class="py-line"> </tt>
-<a name="L2687"></a><tt class="py-lineno">2687</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
-<a name="L2688"></a><tt class="py-lineno">2688</tt>  <tt class="py-line">        <tt id="link-2491" class="py-name" targets="Variable lxml.tests.test_threading.ThreadPipelineTestCase.xml=lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2491', 'xml', 'link-2491');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2492" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2492', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root xmlns="%s" xmlns:x="%s"&gt;&lt;el x:a="test" /&gt;&lt;/root&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L2689"></a><tt class="py-lineno">2689</tt>  <tt class="py-line">                <tt class="py-name">ns_href</tt><tt class="py-op">,</tt><tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2690"></a><tt class="py-lineno">2690</tt>  <tt class="py-line">        <tt id="link-2493" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2493', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2494" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2531', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2532" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2532', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2735"></a><tt class="py-lineno">2735</tt>  <tt class="py-line"> </tt>
+<a name="L2736"></a><tt class="py-lineno">2736</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
+<a name="L2737"></a><tt class="py-lineno">2737</tt>  <tt class="py-line">        <tt id="link-2533" class="py-name" targets="Variable lxml.tests.test_threading.ThreadPipelineTestCase.xml=lxml.tests.test_threading.ThreadPipelineTestCase-class.html#xml"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2533', 'xml', 'link-2533');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2534" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2534', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root xmlns="%s" xmlns:x="%s"&gt;&lt;el x:a="test" /&gt;&lt;/root&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L2738"></a><tt class="py-lineno">2738</tt>  <tt class="py-line">                <tt class="py-name">ns_href</tt><tt class="py-op">,</tt><tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2739"></a><tt class="py-lineno">2739</tt>  <tt class="py-line">        <tt id="link-2535" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2535', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2536" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2494', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-2495" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2495', 'xml', 'link-2491');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2691"></a><tt class="py-lineno">2691</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2496" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2496', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2497" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2536', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-2537" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2537', 'xml', 'link-2533');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2740"></a><tt class="py-lineno">2740</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2538" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2538', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2539" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2497', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2692"></a><tt class="py-lineno">2692</tt>  <tt class="py-line"> </tt>
-<a name="L2693"></a><tt class="py-lineno">2693</tt>  <tt class="py-line">        <tt class="py-name">xml2</tt> <tt class="py-op">=</tt> <tt id="link-2498" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2498', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2499" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2499', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2694"></a><tt class="py-lineno">2694</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2500" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2500', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">':a='</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xml2</tt><tt class="py-op">,</tt> <tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
-<a name="L2695"></a><tt class="py-lineno">2695</tt>  <tt class="py-line"> </tt>
-<a name="L2696"></a><tt class="py-lineno">2696</tt>  <tt class="py-line">        <tt class="py-name">root2</tt> <tt class="py-op">=</tt> <tt id="link-2501" class="py-name"><a title="lxml.etree.fromstring
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2539', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2741"></a><tt class="py-lineno">2741</tt>  <tt class="py-line"> </tt>
+<a name="L2742"></a><tt class="py-lineno">2742</tt>  <tt class="py-line">        <tt class="py-name">xml2</tt> <tt class="py-op">=</tt> <tt id="link-2540" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2540', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2541" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2541', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2743"></a><tt class="py-lineno">2743</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2542" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2542', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">':a='</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xml2</tt><tt class="py-op">,</tt> <tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2744"></a><tt class="py-lineno">2744</tt>  <tt class="py-line"> </tt>
+<a name="L2745"></a><tt class="py-lineno">2745</tt>  <tt class="py-line">        <tt class="py-name">root2</tt> <tt class="py-op">=</tt> <tt id="link-2543" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2501', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
-<a name="L2697"></a><tt class="py-lineno">2697</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt class="py-name">root2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2502" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2543', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2746"></a><tt class="py-lineno">2746</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt class="py-name">root2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2544" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2502', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2698"></a><tt class="py-lineno">2698</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced"></a><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-def"><a name="L2699"></a><tt class="py-lineno">2699</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-expanded"><a name="L2700"></a><tt class="py-lineno">2700</tt>  <tt class="py-line">        <tt id="link-2503" class="py-name"><a title="lxml.etree.fromstring
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2544', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2747"></a><tt class="py-lineno">2747</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced"></a><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-def"><a name="L2748"></a><tt class="py-lineno">2748</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-toggle" onclick="return toggle('_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_attribute_namespace_roundtrip_replaced">test_attribute_namespace_roundtrip_replaced</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_attribute_namespace_roundtrip_replaced-expanded"><a name="L2749"></a><tt class="py-lineno">2749</tt>  <tt class="py-line">        <tt id="link-2545" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2503', 'fromstring', 'link-805');">fromstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2504" class="py-name"><a title="lxml.etree
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2545', 'fromstring', 'link-805');">fromstring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2546" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2504', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2505" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2546', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2547" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2505', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
-<a name="L2701"></a><tt class="py-lineno">2701</tt>  <tt class="py-line">        <tt id="link-2506" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2506', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2507" class="py-name"><a title="lxml.etree
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2547', 'fromstring', 'link-805');">fromstring</a></tt> </tt>
+<a name="L2750"></a><tt class="py-lineno">2750</tt>  <tt class="py-line">        <tt id="link-2548" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2548', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2549" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2507', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2508" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2508', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2702"></a><tt class="py-lineno">2702</tt>  <tt class="py-line"> </tt>
-<a name="L2703"></a><tt class="py-lineno">2703</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
-<a name="L2704"></a><tt class="py-lineno">2704</tt>  <tt class="py-line">        <tt id="link-2509" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2509', 'xml', 'link-2491');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2510" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2510', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root xmlns="%s" xmlns:x="%s"&gt;&lt;el x:a="test" /&gt;&lt;/root&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L2705"></a><tt class="py-lineno">2705</tt>  <tt class="py-line">                <tt class="py-name">ns_href</tt><tt class="py-op">,</tt><tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2706"></a><tt class="py-lineno">2706</tt>  <tt class="py-line">        <tt id="link-2511" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2511', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2512" class="py-name"><a title="lxml.etree.fromstring
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2549', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2550" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2550', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2751"></a><tt class="py-lineno">2751</tt>  <tt class="py-line"> </tt>
+<a name="L2752"></a><tt class="py-lineno">2752</tt>  <tt class="py-line">        <tt class="py-name">ns_href</tt> <tt class="py-op">=</tt> <tt class="py-string">"http://a.b.c"</tt> </tt>
+<a name="L2753"></a><tt class="py-lineno">2753</tt>  <tt class="py-line">        <tt id="link-2551" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2551', 'xml', 'link-2533');">xml</a></tt> <tt class="py-op">=</tt> <tt id="link-2552" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2552', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root xmlns="%s" xmlns:x="%s"&gt;&lt;el x:a="test" /&gt;&lt;/root&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L2754"></a><tt class="py-lineno">2754</tt>  <tt class="py-line">                <tt class="py-name">ns_href</tt><tt class="py-op">,</tt><tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2755"></a><tt class="py-lineno">2755</tt>  <tt class="py-line">        <tt id="link-2553" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2553', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2554" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2512', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-2513" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2513', 'xml', 'link-2491');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2707"></a><tt class="py-lineno">2707</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2514" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2514', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2515" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2554', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt id="link-2555" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-2555', 'xml', 'link-2533');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2756"></a><tt class="py-lineno">2756</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2556" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2556', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2557" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2515', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2708"></a><tt class="py-lineno">2708</tt>  <tt class="py-line"> </tt>
-<a name="L2709"></a><tt class="py-lineno">2709</tt>  <tt class="py-line">        <tt id="link-2516" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2516', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2517" class="py-name"><a title="lxml.etree._Element.set
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2557', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2757"></a><tt class="py-lineno">2757</tt>  <tt class="py-line"> </tt>
+<a name="L2758"></a><tt class="py-lineno">2758</tt>  <tt class="py-line">        <tt id="link-2558" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2558', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2559" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2517', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">,</tt> <tt class="py-string">'TEST'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2710"></a><tt class="py-lineno">2710</tt>  <tt class="py-line"> </tt>
-<a name="L2711"></a><tt class="py-lineno">2711</tt>  <tt class="py-line">        <tt class="py-name">xml2</tt> <tt class="py-op">=</tt> <tt id="link-2518" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2518', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2519" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2519', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2712"></a><tt class="py-lineno">2712</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2520" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2520', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">':a='</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xml2</tt><tt class="py-op">,</tt> <tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
-<a name="L2713"></a><tt class="py-lineno">2713</tt>  <tt class="py-line"> </tt>
-<a name="L2714"></a><tt class="py-lineno">2714</tt>  <tt class="py-line">        <tt class="py-name">root2</tt> <tt class="py-op">=</tt> <tt id="link-2521" class="py-name"><a title="lxml.etree.fromstring
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2559', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">,</tt> <tt class="py-string">'TEST'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2759"></a><tt class="py-lineno">2759</tt>  <tt class="py-line"> </tt>
+<a name="L2760"></a><tt class="py-lineno">2760</tt>  <tt class="py-line">        <tt class="py-name">xml2</tt> <tt class="py-op">=</tt> <tt id="link-2560" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2560', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2561" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2561', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2761"></a><tt class="py-lineno">2761</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2562" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2562', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">':a='</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">xml2</tt><tt class="py-op">,</tt> <tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2762"></a><tt class="py-lineno">2762</tt>  <tt class="py-line"> </tt>
+<a name="L2763"></a><tt class="py-lineno">2763</tt>  <tt class="py-line">        <tt class="py-name">root2</tt> <tt class="py-op">=</tt> <tt id="link-2563" class="py-name"><a title="lxml.etree.fromstring
 lxml.html.html5parser.fromstring
 lxml.html.soupparser.fromstring
-lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2521', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
-<a name="L2715"></a><tt class="py-lineno">2715</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt><tt class="py-op">,</tt> <tt class="py-name">root2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2522" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.objectify.fromstring" class="py-name" href="#" onclick="return doclink('link-2563', 'fromstring', 'link-805');">fromstring</a></tt><tt class="py-op">(</tt><tt class="py-name">xml2</tt><tt class="py-op">)</tt> </tt>
+<a name="L2764"></a><tt class="py-lineno">2764</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt><tt class="py-op">,</tt> <tt class="py-name">root2</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2564" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2522', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2716"></a><tt class="py-lineno">2716</tt>  <tt class="py-line"> </tt>
-<a name="L2717"></a><tt class="py-lineno">2717</tt>  <tt class="py-line">    <tt id="link-2523" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2523', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_register_namespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_register_namespace"></a><div id="_ETreeTestCaseBase.test_register_namespace-def"><a name="L2718"></a><tt class="py-lineno">2718</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_register_namespace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_register_namespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace">test_register_namespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_register_namespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_register_namespace-expanded"><a name="L2719"></a><tt class="py-lineno">2719</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
-<a name="L2720"></a><tt class="py-lineno">2720</tt>  <tt class="py-line">        <tt id="link-2524" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2564', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}a'</tt> <tt class="py-op">%</tt> <tt class="py-name">ns_href</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2765"></a><tt class="py-lineno">2765</tt>  <tt class="py-line"> </tt>
+<a name="L2766"></a><tt class="py-lineno">2766</tt>  <tt class="py-line">    <tt id="link-2565" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2565', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_register_namespace'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_register_namespace"></a><div id="_ETreeTestCaseBase.test_register_namespace-def"><a name="L2767"></a><tt class="py-lineno">2767</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_register_namespace-toggle" onclick="return toggle('_ETreeTestCaseBase.test_register_namespace');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_register_namespace">test_register_namespace</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_register_namespace-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_register_namespace-expanded"><a name="L2768"></a><tt class="py-lineno">2768</tt>  <tt class="py-line">        <tt class="py-comment"># ET 1.3+</tt> </tt>
+<a name="L2769"></a><tt class="py-lineno">2769</tt>  <tt class="py-line">        <tt id="link-2566" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2524', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2525" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2566', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2567" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2525', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2526" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2567', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2568" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2526', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2721"></a><tt class="py-lineno">2721</tt>  <tt class="py-line">        <tt id="link-2527" class="py-name" targets="Variable lxml.etree._Element.prefix=lxml.etree._Element-class.html#prefix"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2527', 'prefix', 'link-2527');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'TESTPREFIX'</tt> </tt>
-<a name="L2722"></a><tt class="py-lineno">2722</tt>  <tt class="py-line">        <tt id="link-2528" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace,Function lxml.tests.selftest.namespace()=lxml.tests.selftest-module.html#namespace"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2528', 'namespace', 'link-2528');">namespace</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://seriously.unknown/namespace/URI'</tt> </tt>
-<a name="L2723"></a><tt class="py-lineno">2723</tt>  <tt class="py-line"> </tt>
-<a name="L2724"></a><tt class="py-lineno">2724</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-2529" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2568', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2770"></a><tt class="py-lineno">2770</tt>  <tt class="py-line">        <tt id="link-2569" class="py-name" targets="Variable lxml.etree._Element.prefix=lxml.etree._Element-class.html#prefix"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2569', 'prefix', 'link-2569');">prefix</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'TESTPREFIX'</tt> </tt>
+<a name="L2771"></a><tt class="py-lineno">2771</tt>  <tt class="py-line">        <tt id="link-2570" class="py-name" targets="Variable lxml.etree.QName.namespace=lxml.etree.QName-class.html#namespace,Function lxml.tests.selftest.namespace()=lxml.tests.selftest-module.html#namespace"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2570', 'namespace', 'link-2570');">namespace</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'http://seriously.unknown/namespace/URI'</tt> </tt>
+<a name="L2772"></a><tt class="py-lineno">2772</tt>  <tt class="py-line"> </tt>
+<a name="L2773"></a><tt class="py-lineno">2773</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-2571" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2529', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}test'</tt> <tt class="py-op">%</tt> <tt id="link-2530" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2530', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2725"></a><tt class="py-lineno">2725</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2531" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2531', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:test xmlns:ns0="%s"&gt;&lt;/ns0:test&gt;'</tt> <tt class="py-op">%</tt> <tt id="link-2532" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2532', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2726"></a><tt class="py-lineno">2726</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2533" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
-lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-2533', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2727"></a><tt class="py-lineno">2727</tt>  <tt class="py-line"> </tt>
-<a name="L2728"></a><tt class="py-lineno">2728</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2534" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2571', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}test'</tt> <tt class="py-op">%</tt> <tt id="link-2572" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2572', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2774"></a><tt class="py-lineno">2774</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2573" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2573', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:test xmlns:ns0="%s"&gt;&lt;/ns0:test&gt;'</tt> <tt class="py-op">%</tt> <tt id="link-2574" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2574', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2775"></a><tt class="py-lineno">2775</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2575" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
+lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-2575', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2776"></a><tt class="py-lineno">2776</tt>  <tt class="py-line"> </tt>
+<a name="L2777"></a><tt class="py-lineno">2777</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2576" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2534', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2535" class="py-name" targets="Method lxml.etree.XPathElementEvaluator.register_namespace()=lxml.etree.XPathElementEvaluator-class.html#register_namespace,Function lxml.etree.register_namespace()=lxml.etree-module.html#register_namespace"><a title="lxml.etree.XPathElementEvaluator.register_namespace
-lxml.etree.register_namespace" class="py-name" href="#" onclick="return doclink('link-2535', 'register_namespace', 'link-2535');">register_namespace</a></tt><tt class="py-op">(</tt><tt id="link-2536" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2536', 'prefix', 'link-2527');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2537" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2537', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2729"></a><tt class="py-lineno">2729</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-2538" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2576', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2577" class="py-name" targets="Method lxml.etree.XPathElementEvaluator.register_namespace()=lxml.etree.XPathElementEvaluator-class.html#register_namespace,Function lxml.etree.register_namespace()=lxml.etree-module.html#register_namespace"><a title="lxml.etree.XPathElementEvaluator.register_namespace
+lxml.etree.register_namespace" class="py-name" href="#" onclick="return doclink('link-2577', 'register_namespace', 'link-2577');">register_namespace</a></tt><tt class="py-op">(</tt><tt id="link-2578" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2578', 'prefix', 'link-2569');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2579" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2579', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2778"></a><tt class="py-lineno">2778</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-2580" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2538', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}test'</tt> <tt class="py-op">%</tt> <tt id="link-2539" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2539', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2730"></a><tt class="py-lineno">2730</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2540" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2540', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%s:test xmlns:%s="%s"&gt;&lt;/%s:test&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
-<a name="L2731"></a><tt class="py-lineno">2731</tt>  <tt class="py-line">            <tt id="link-2541" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2541', 'prefix', 'link-2527');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2542" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2542', 'prefix', 'link-2527');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2543" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2543', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">,</tt> <tt id="link-2544" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2544', 'prefix', 'link-2527');">prefix</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2732"></a><tt class="py-lineno">2732</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2545" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
-lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-2545', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2733"></a><tt class="py-lineno">2733</tt>  <tt class="py-line"> </tt>
-<a name="L2734"></a><tt class="py-lineno">2734</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2546" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2580', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'{%s}test'</tt> <tt class="py-op">%</tt> <tt id="link-2581" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2581', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2779"></a><tt class="py-lineno">2779</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2582" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2582', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;%s:test xmlns:%s="%s"&gt;&lt;/%s:test&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt> </tt>
+<a name="L2780"></a><tt class="py-lineno">2780</tt>  <tt class="py-line">            <tt id="link-2583" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2583', 'prefix', 'link-2569');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2584" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2584', 'prefix', 'link-2569');">prefix</a></tt><tt class="py-op">,</tt> <tt id="link-2585" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2585', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">,</tt> <tt id="link-2586" class="py-name"><a title="lxml.etree._Element.prefix" class="py-name" href="#" onclick="return doclink('link-2586', 'prefix', 'link-2569');">prefix</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2781"></a><tt class="py-lineno">2781</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2587" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
+lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-2587', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt class="py-name">el</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2782"></a><tt class="py-lineno">2782</tt>  <tt class="py-line"> </tt>
+<a name="L2783"></a><tt class="py-lineno">2783</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">ValueError</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2588" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2546', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2547" class="py-name"><a title="lxml.etree.XPathElementEvaluator.register_namespace
-lxml.etree.register_namespace" class="py-name" href="#" onclick="return doclink('link-2547', 'register_namespace', 'link-2535');">register_namespace</a></tt><tt class="py-op">,</tt> <tt class="py-string">'ns25'</tt><tt class="py-op">,</tt> <tt id="link-2548" class="py-name"><a title="lxml.etree.QName.namespace
-lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2548', 'namespace', 'link-2528');">namespace</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2735"></a><tt class="py-lineno">2735</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tostring"></a><div id="_ETreeTestCaseBase.test_tostring-def"><a name="L2736"></a><tt class="py-lineno">2736</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring">test_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring-expanded"><a name="L2737"></a><tt class="py-lineno">2737</tt>  <tt class="py-line">        <tt id="link-2549" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2549', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2550" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2588', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2589" class="py-name"><a title="lxml.etree.XPathElementEvaluator.register_namespace
+lxml.etree.register_namespace" class="py-name" href="#" onclick="return doclink('link-2589', 'register_namespace', 'link-2577');">register_namespace</a></tt><tt class="py-op">,</tt> <tt class="py-string">'ns25'</tt><tt class="py-op">,</tt> <tt id="link-2590" class="py-name"><a title="lxml.etree.QName.namespace
+lxml.tests.selftest.namespace" class="py-name" href="#" onclick="return doclink('link-2590', 'namespace', 'link-2570');">namespace</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2784"></a><tt class="py-lineno">2784</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tostring"></a><div id="_ETreeTestCaseBase.test_tostring-def"><a name="L2785"></a><tt class="py-lineno">2785</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring">test_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring-expanded"><a name="L2786"></a><tt class="py-lineno">2786</tt>  <tt class="py-line">        <tt id="link-2591" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2591', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2592" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2550', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2551" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2551', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2738"></a><tt class="py-lineno">2738</tt>  <tt class="py-line">        <tt id="link-2552" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2592', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2593" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2593', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2787"></a><tt class="py-lineno">2787</tt>  <tt class="py-line">        <tt id="link-2594" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2552', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2553" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2594', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2595" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2553', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2554" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2595', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2596" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2554', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2739"></a><tt class="py-lineno">2739</tt>  <tt class="py-line">        <tt id="link-2555" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2555', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2556" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2596', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2788"></a><tt class="py-lineno">2788</tt>  <tt class="py-line">        <tt id="link-2597" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2597', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2598" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2556', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2557" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2557', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2740"></a><tt class="py-lineno">2740</tt>  <tt class="py-line">         </tt>
-<a name="L2741"></a><tt class="py-lineno">2741</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2558" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2598', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2599" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2599', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2789"></a><tt class="py-lineno">2789</tt>  <tt class="py-line">         </tt>
+<a name="L2790"></a><tt class="py-lineno">2790</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2600" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2558', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2742"></a><tt class="py-lineno">2742</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2559" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2559', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2743"></a><tt class="py-lineno">2743</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2560" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2560', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2744"></a><tt class="py-lineno">2744</tt>  <tt class="py-line">         </tt>
-<a name="L2745"></a><tt class="py-lineno">2745</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2561" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2561', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2746"></a><tt class="py-lineno">2746</tt>  <tt class="py-line">                          <tt id="link-2562" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2562', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2563" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2563', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2747"></a><tt class="py-lineno">2747</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_tostring_element"></a><div id="_ETreeTestCaseBase.test_tostring_element-def"><a name="L2748"></a><tt class="py-lineno">2748</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_element-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element">test_tostring_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tostring_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_element-expanded"><a name="L2749"></a><tt class="py-lineno">2749</tt>  <tt class="py-line">        <tt id="link-2564" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2564', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2565" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2600', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2791"></a><tt class="py-lineno">2791</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2601" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2601', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2792"></a><tt class="py-lineno">2792</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2602" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2602', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2793"></a><tt class="py-lineno">2793</tt>  <tt class="py-line">         </tt>
+<a name="L2794"></a><tt class="py-lineno">2794</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2603" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2603', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c&gt;&lt;/c&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2795"></a><tt class="py-lineno">2795</tt>  <tt class="py-line">                          <tt id="link-2604" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2604', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2605" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2605', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2796"></a><tt class="py-lineno">2796</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_tostring_element"></a><div id="_ETreeTestCaseBase.test_tostring_element-def"><a name="L2797"></a><tt class="py-lineno">2797</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_element-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element">test_tostring_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tostring_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_element-expanded"><a name="L2798"></a><tt class="py-lineno">2798</tt>  <tt class="py-line">        <tt id="link-2606" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2606', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2607" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2565', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2566" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2566', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2750"></a><tt class="py-lineno">2750</tt>  <tt class="py-line">        <tt id="link-2567" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2607', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2608" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2608', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2799"></a><tt class="py-lineno">2799</tt>  <tt class="py-line">        <tt id="link-2609" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2567', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2568" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2609', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2610" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2568', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2569" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2610', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2611" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2569', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2751"></a><tt class="py-lineno">2751</tt>  <tt class="py-line">        <tt id="link-2570" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2570', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2571" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2611', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2800"></a><tt class="py-lineno">2800</tt>  <tt class="py-line">        <tt id="link-2612" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2612', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2613" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2571', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2572" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2572', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2752"></a><tt class="py-lineno">2752</tt>  <tt class="py-line">         </tt>
-<a name="L2753"></a><tt class="py-lineno">2753</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2573" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2613', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2614" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2614', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2801"></a><tt class="py-lineno">2801</tt>  <tt class="py-line">         </tt>
+<a name="L2802"></a><tt class="py-lineno">2802</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2615" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2573', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2754"></a><tt class="py-lineno">2754</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2574" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2574', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2755"></a><tt class="py-lineno">2755</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2575" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2575', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2756"></a><tt class="py-lineno">2756</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2576" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2576', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2757"></a><tt class="py-lineno">2757</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2577" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2577', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2758"></a><tt class="py-lineno">2758</tt>  <tt class="py-line">                          <tt id="link-2578" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2578', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2579" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2579', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2759"></a><tt class="py-lineno">2759</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2580" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2580', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;d&gt;&lt;/d&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2760"></a><tt class="py-lineno">2760</tt>  <tt class="py-line">                          <tt id="link-2581" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2581', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2582" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2582', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2761"></a><tt class="py-lineno">2761</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_tostring_element_tail"></a><div id="_ETreeTestCaseBase.test_tostring_element_tail-def"><a name="L2762"></a><tt class="py-lineno">2762</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_element_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_element_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element_tail">test_tostring_element_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tostring_element_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_element_tail-expanded"><a name="L2763"></a><tt class="py-lineno">2763</tt>  <tt class="py-line">        <tt id="link-2583" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2583', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2584" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2615', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2803"></a><tt class="py-lineno">2803</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2616" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2616', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2804"></a><tt class="py-lineno">2804</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2617" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2617', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2805"></a><tt class="py-lineno">2805</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2618" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2618', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2806"></a><tt class="py-lineno">2806</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2619" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2619', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2807"></a><tt class="py-lineno">2807</tt>  <tt class="py-line">                          <tt id="link-2620" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2620', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2621" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2621', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2808"></a><tt class="py-lineno">2808</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2622" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2622', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;c&gt;&lt;d&gt;&lt;/d&gt;&lt;/c&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2809"></a><tt class="py-lineno">2809</tt>  <tt class="py-line">                          <tt id="link-2623" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-2623', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-2624" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2624', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2810"></a><tt class="py-lineno">2810</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_tostring_element_tail"></a><div id="_ETreeTestCaseBase.test_tostring_element_tail-def"><a name="L2811"></a><tt class="py-lineno">2811</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_element_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_element_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_element_tail">test_tostring_element_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tostring_element_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_element_tail-expanded"><a name="L2812"></a><tt class="py-lineno">2812</tt>  <tt class="py-line">        <tt id="link-2625" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2625', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2626" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2584', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2585" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2585', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2764"></a><tt class="py-lineno">2764</tt>  <tt class="py-line">        <tt id="link-2586" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2626', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2627" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2627', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2813"></a><tt class="py-lineno">2813</tt>  <tt class="py-line">        <tt id="link-2628" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2586', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2587" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2628', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2629" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2587', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2588" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2629', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2630" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2588', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2765"></a><tt class="py-lineno">2765</tt>  <tt class="py-line">        <tt id="link-2589" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2589', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2590" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2630', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2814"></a><tt class="py-lineno">2814</tt>  <tt class="py-line">        <tt id="link-2631" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2631', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2632" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2590', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2591" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2591', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2766"></a><tt class="py-lineno">2766</tt>  <tt class="py-line">         </tt>
-<a name="L2767"></a><tt class="py-lineno">2767</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2592" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2632', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2633" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2633', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2815"></a><tt class="py-lineno">2815</tt>  <tt class="py-line">         </tt>
+<a name="L2816"></a><tt class="py-lineno">2816</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2634" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2592', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2768"></a><tt class="py-lineno">2768</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2593" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2593', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2769"></a><tt class="py-lineno">2769</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2594" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2594', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2770"></a><tt class="py-lineno">2770</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2595" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2595', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2771"></a><tt class="py-lineno">2771</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2596" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2596', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
-<a name="L2772"></a><tt class="py-lineno">2772</tt>  <tt class="py-line"> </tt>
-<a name="L2773"></a><tt class="py-lineno">2773</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2597" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2597', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-2598" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2598', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b/&gt;Foo'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
-<a name="L2774"></a><tt class="py-lineno">2774</tt>  <tt class="py-line">                     <tt id="link-2599" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2599', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-2600" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2600', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b /&gt;Foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2775"></a><tt class="py-lineno">2775</tt>  <tt class="py-line"> </tt>
-<a name="L2776"></a><tt class="py-lineno">2776</tt>  <tt class="py-line">    <tt id="link-2601" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2601', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_tostring_method_html'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_tostring_method_html"></a><div id="_ETreeTestCaseBase.test_tostring_method_html-def"><a name="L2777"></a><tt class="py-lineno">2777</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_method_html-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_method_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_html">test_tostring_method_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tostring_method_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_method_html-expanded"><a name="L2778"></a><tt class="py-lineno">2778</tt>  <tt class="py-line">        <tt id="link-2602" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2602', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2603" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2634', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2817"></a><tt class="py-lineno">2817</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2635" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2635', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2818"></a><tt class="py-lineno">2818</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2636" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2636', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2819"></a><tt class="py-lineno">2819</tt>  <tt class="py-line">        <tt class="py-name">d</tt> <tt class="py-op">=</tt> <tt id="link-2637" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2637', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">c</tt><tt class="py-op">,</tt> <tt class="py-string">'d'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2820"></a><tt class="py-lineno">2820</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2638" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2638', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
+<a name="L2821"></a><tt class="py-lineno">2821</tt>  <tt class="py-line"> </tt>
+<a name="L2822"></a><tt class="py-lineno">2822</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-2639" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2639', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-2640" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2640', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b/&gt;Foo'</tt><tt class="py-op">)</tt> <tt class="py-keyword">or</tt> </tt>
+<a name="L2823"></a><tt class="py-lineno">2823</tt>  <tt class="py-line">                     <tt id="link-2641" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2641', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-2642" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2642', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b /&gt;Foo'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2824"></a><tt class="py-lineno">2824</tt>  <tt class="py-line"> </tt>
+<a name="L2825"></a><tt class="py-lineno">2825</tt>  <tt class="py-line">    <tt id="link-2643" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2643', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_tostring_method_html'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_tostring_method_html"></a><div id="_ETreeTestCaseBase.test_tostring_method_html-def"><a name="L2826"></a><tt class="py-lineno">2826</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_method_html-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_method_html');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_html">test_tostring_method_html</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tostring_method_html-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_method_html-expanded"><a name="L2827"></a><tt class="py-lineno">2827</tt>  <tt class="py-line">        <tt id="link-2644" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2644', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2645" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2603', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2604" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2604', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2779"></a><tt class="py-lineno">2779</tt>  <tt class="py-line">        <tt id="link-2605" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2645', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2646" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2646', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2828"></a><tt class="py-lineno">2828</tt>  <tt class="py-line">        <tt id="link-2647" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2605', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2606" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2647', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2648" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2606', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2607" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2648', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2649" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2607', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2780"></a><tt class="py-lineno">2780</tt>  <tt class="py-line">        <tt id="link-2608" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2608', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2609" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2649', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2829"></a><tt class="py-lineno">2829</tt>  <tt class="py-line">        <tt id="link-2650" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2650', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2651" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2609', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2610" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2610', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2781"></a><tt class="py-lineno">2781</tt>  <tt class="py-line">         </tt>
-<a name="L2782"></a><tt class="py-lineno">2782</tt>  <tt class="py-line">        <tt id="link-2611" class="py-name"><a title="lxml.html
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2651', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2652" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2652', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2830"></a><tt class="py-lineno">2830</tt>  <tt class="py-line">         </tt>
+<a name="L2831"></a><tt class="py-lineno">2831</tt>  <tt class="py-line">        <tt id="link-2653" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2611', 'html', 'link-1081');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-2612" class="py-name"><a title="lxml.etree.Element
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2653', 'html', 'link-1087');">html</a></tt> <tt class="py-op">=</tt> <tt id="link-2654" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2612', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2783"></a><tt class="py-lineno">2783</tt>  <tt class="py-line">        <tt id="link-2613" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-2613', 'body', 'link-1083');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-2614" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2614', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2615" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2654', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'html'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2832"></a><tt class="py-lineno">2832</tt>  <tt class="py-line">        <tt id="link-2655" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-2655', 'body', 'link-1089');">body</a></tt> <tt class="py-op">=</tt> <tt id="link-2656" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2656', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2657" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2615', 'html', 'link-1081');">html</a></tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2784"></a><tt class="py-lineno">2784</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-2616" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2616', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2617" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-2617', 'body', 'link-1083');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'p'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2785"></a><tt class="py-lineno">2785</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-2618" class="py-name"><a title="lxml.etree.QName.text
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2657', 'html', 'link-1087');">html</a></tt><tt class="py-op">,</tt> <tt class="py-string">'body'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2833"></a><tt class="py-lineno">2833</tt>  <tt class="py-line">        <tt class="py-name">p</tt> <tt class="py-op">=</tt> <tt id="link-2658" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2658', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-2659" class="py-name"><a title="lxml.html.HtmlMixin.body" class="py-name" href="#" onclick="return doclink('link-2659', 'body', 'link-1089');">body</a></tt><tt class="py-op">,</tt> <tt class="py-string">'p'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2834"></a><tt class="py-lineno">2834</tt>  <tt class="py-line">        <tt class="py-name">p</tt><tt class="py-op">.</tt><tt id="link-2660" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2618', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"html"</tt> </tt>
-<a name="L2786"></a><tt class="py-lineno">2786</tt>  <tt class="py-line">        <tt id="link-2619" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2619', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-string">'br'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2620" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2620', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</tt> </tt>
-<a name="L2787"></a><tt class="py-lineno">2787</tt>  <tt class="py-line"> </tt>
-<a name="L2788"></a><tt class="py-lineno">2788</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2621" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2621', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;&lt;p&gt;html&lt;br&gt;test&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2789"></a><tt class="py-lineno">2789</tt>  <tt class="py-line">                          <tt id="link-2622" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2622', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2623" class="py-name"><a title="lxml.html
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2660', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"html"</tt> </tt>
+<a name="L2835"></a><tt class="py-lineno">2835</tt>  <tt class="py-line">        <tt id="link-2661" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2661', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">p</tt><tt class="py-op">,</tt> <tt class="py-string">'br'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2662" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2662', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"test"</tt> </tt>
+<a name="L2836"></a><tt class="py-lineno">2836</tt>  <tt class="py-line"> </tt>
+<a name="L2837"></a><tt class="py-lineno">2837</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2663" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2663', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;body&gt;&lt;p&gt;html&lt;br&gt;test&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2838"></a><tt class="py-lineno">2838</tt>  <tt class="py-line">                          <tt id="link-2664" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2664', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2665" class="py-name"><a title="lxml.html
 lxml.html.diff.href_token.html
 lxml.html.diff.tag_token.html
-lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2623', 'html', 'link-1081');">html</a></tt><tt class="py-op">,</tt> <tt id="link-2624" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-2624', 'method', 'link-1095');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2790"></a><tt class="py-lineno">2790</tt>  <tt class="py-line"> </tt>
-<a name="L2791"></a><tt class="py-lineno">2791</tt>  <tt class="py-line">    <tt id="link-2625" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2625', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_tostring_method_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_tostring_method_text"></a><div id="_ETreeTestCaseBase.test_tostring_method_text-def"><a name="L2792"></a><tt class="py-lineno">2792</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_method_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_method_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_text">test_tostring_method_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_tostring_method_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_method_text-expanded"><a name="L2793"></a><tt class="py-lineno">2793</tt>  <tt class="py-line">        <tt id="link-2626" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2626', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2627" class="py-name"><a title="lxml.etree
+lxml.html.diff.token.html" class="py-name" href="#" onclick="return doclink('link-2665', 'html', 'link-1087');">html</a></tt><tt class="py-op">,</tt> <tt id="link-2666" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-2666', 'method', 'link-1101');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"html"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2839"></a><tt class="py-lineno">2839</tt>  <tt class="py-line"> </tt>
+<a name="L2840"></a><tt class="py-lineno">2840</tt>  <tt class="py-line">    <tt id="link-2667" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2667', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_tostring_method_text'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_tostring_method_text"></a><div id="_ETreeTestCaseBase.test_tostring_method_text-def"><a name="L2841"></a><tt class="py-lineno">2841</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_tostring_method_text-toggle" onclick="return toggle('_ETreeTestCaseBase.test_tostring_method_text');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_tostring_method_text">test_tostring_method_text</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_tostring_method_text-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_tostring_method_text-expanded"><a name="L2842"></a><tt class="py-lineno">2842</tt>  <tt class="py-line">        <tt id="link-2668" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2668', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2669" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2627', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2628" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2628', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2794"></a><tt class="py-lineno">2794</tt>  <tt class="py-line">        <tt id="link-2629" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2669', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2670" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2670', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2843"></a><tt class="py-lineno">2843</tt>  <tt class="py-line">        <tt id="link-2671" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2629', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2630" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2671', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2672" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2630', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2631" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2672', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2673" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2631', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L2795"></a><tt class="py-lineno">2795</tt>  <tt class="py-line">        <tt id="link-2632" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2632', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2633" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2673', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L2844"></a><tt class="py-lineno">2844</tt>  <tt class="py-line">        <tt id="link-2674" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2674', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2675" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2633', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2634" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2634', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L2796"></a><tt class="py-lineno">2796</tt>  <tt class="py-line">         </tt>
-<a name="L2797"></a><tt class="py-lineno">2797</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2635" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2675', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2676" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2676', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L2845"></a><tt class="py-lineno">2845</tt>  <tt class="py-line">         </tt>
+<a name="L2846"></a><tt class="py-lineno">2846</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2677" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2635', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2798"></a><tt class="py-lineno">2798</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2636" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2677', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2847"></a><tt class="py-lineno">2847</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2678" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2636', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"A"</tt> </tt>
-<a name="L2799"></a><tt class="py-lineno">2799</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2637" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2637', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail"</tt> </tt>
-<a name="L2800"></a><tt class="py-lineno">2800</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2638" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2638', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2801"></a><tt class="py-lineno">2801</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2639" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2678', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"A"</tt> </tt>
+<a name="L2848"></a><tt class="py-lineno">2848</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2679" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2679', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"tail"</tt> </tt>
+<a name="L2849"></a><tt class="py-lineno">2849</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2680" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2680', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2850"></a><tt class="py-lineno">2850</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2681" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2639', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"B"</tt> </tt>
-<a name="L2802"></a><tt class="py-lineno">2802</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2640" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2640', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL"</tt> </tt>
-<a name="L2803"></a><tt class="py-lineno">2803</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2641" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2641', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2804"></a><tt class="py-lineno">2804</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2642" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2681', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"B"</tt> </tt>
+<a name="L2851"></a><tt class="py-lineno">2851</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2682" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2682', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"TAIL"</tt> </tt>
+<a name="L2852"></a><tt class="py-lineno">2852</tt>  <tt class="py-line">        <tt class="py-name">c</tt> <tt class="py-op">=</tt> <tt id="link-2683" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2683', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2853"></a><tt class="py-lineno">2853</tt>  <tt class="py-line">        <tt class="py-name">c</tt><tt class="py-op">.</tt><tt id="link-2684" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2642', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"C"</tt> </tt>
-<a name="L2805"></a><tt class="py-lineno">2805</tt>  <tt class="py-line">         </tt>
-<a name="L2806"></a><tt class="py-lineno">2806</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2643" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2643', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ABTAILCtail'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2807"></a><tt class="py-lineno">2807</tt>  <tt class="py-line">                          <tt id="link-2644" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2644', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt id="link-2645" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-2645', 'method', 'link-1095');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"text"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2808"></a><tt class="py-lineno">2808</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse"></a><div id="_ETreeTestCaseBase.test_iterparse-def"><a name="L2809"></a><tt class="py-lineno">2809</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse-expanded"><a name="L2810"></a><tt class="py-lineno">2810</tt>  <tt class="py-line">        <tt id="link-2646" class="py-name" targets="Class lxml.etree.iterparse=lxml.etree.iterparse-class.html,Function lxml.tests.selftest.iterparse()=lxml.tests.selftest-module.html#iterparse"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2646', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2647" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2647', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2648" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2648', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2811"></a><tt class="py-lineno">2811</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2812"></a><tt class="py-lineno">2812</tt>  <tt class="py-line"> </tt>
-<a name="L2813"></a><tt class="py-lineno">2813</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2649" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2649', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2814"></a><tt class="py-lineno">2814</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L2815"></a><tt class="py-lineno">2815</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2650" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2650', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2816"></a><tt class="py-lineno">2816</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
-<a name="L2817"></a><tt class="py-lineno">2817</tt>  <tt class="py-line">        <tt id="link-2651" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2651', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2652" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2652', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2818"></a><tt class="py-lineno">2818</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2819"></a><tt class="py-lineno">2819</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2653" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2653', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2654" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2654', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2655" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2655', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2820"></a><tt class="py-lineno">2820</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2821"></a><tt class="py-lineno">2821</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_incomplete"></a><div id="_ETreeTestCaseBase.test_iterparse_incomplete-def"><a name="L2822"></a><tt class="py-lineno">2822</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_incomplete-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_incomplete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_incomplete">test_iterparse_incomplete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_incomplete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_incomplete-expanded"><a name="L2823"></a><tt class="py-lineno">2823</tt>  <tt class="py-line">        <tt id="link-2656" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2656', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2657" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2657', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2658" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2658', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2824"></a><tt class="py-lineno">2824</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2825"></a><tt class="py-lineno">2825</tt>  <tt class="py-line"> </tt>
-<a name="L2826"></a><tt class="py-lineno">2826</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2659" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2659', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2827"></a><tt class="py-lineno">2827</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L2828"></a><tt class="py-lineno">2828</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2660" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2660', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2829"></a><tt class="py-lineno">2829</tt>  <tt class="py-line">        <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt id="link-2661" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2661', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-2662" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2684', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"C"</tt> </tt>
+<a name="L2854"></a><tt class="py-lineno">2854</tt>  <tt class="py-line">         </tt>
+<a name="L2855"></a><tt class="py-lineno">2855</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2685" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2685', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ABTAILCtail'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2856"></a><tt class="py-lineno">2856</tt>  <tt class="py-line">                          <tt id="link-2686" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2686', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt id="link-2687" class="py-name"><a title="lxml.html.FormElement.method" class="py-name" href="#" onclick="return doclink('link-2687', 'method', 'link-1101');">method</a></tt><tt class="py-op">=</tt><tt class="py-string">"text"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2857"></a><tt class="py-lineno">2857</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse"></a><div id="_ETreeTestCaseBase.test_iterparse-def"><a name="L2858"></a><tt class="py-lineno">2858</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse-expanded"><a name="L2859"></a><tt class="py-lineno">2859</tt>  <tt class="py-line">        <tt id="link-2688" class="py-name" targets="Class lxml.etree.iterparse=lxml.etree.iterparse-class.html,Function lxml.tests.selftest.iterparse()=lxml.tests.selftest-module.html#iterparse"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2688', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2689" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2689', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2690" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2690', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2860"></a><tt class="py-lineno">2860</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2861"></a><tt class="py-lineno">2861</tt>  <tt class="py-line"> </tt>
+<a name="L2862"></a><tt class="py-lineno">2862</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2691" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2691', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2863"></a><tt class="py-lineno">2863</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L2864"></a><tt class="py-lineno">2864</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2692" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2692', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2865"></a><tt class="py-lineno">2865</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
+<a name="L2866"></a><tt class="py-lineno">2866</tt>  <tt class="py-line">        <tt id="link-2693" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2693', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2694" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2694', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2867"></a><tt class="py-lineno">2867</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2868"></a><tt class="py-lineno">2868</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2695" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2695', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2696" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2696', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2697" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2697', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2869"></a><tt class="py-lineno">2869</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2870"></a><tt class="py-lineno">2870</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_incomplete"></a><div id="_ETreeTestCaseBase.test_iterparse_incomplete-def"><a name="L2871"></a><tt class="py-lineno">2871</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_incomplete-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_incomplete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_incomplete">test_iterparse_incomplete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_incomplete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_incomplete-expanded"><a name="L2872"></a><tt class="py-lineno">2872</tt>  <tt class="py-line">        <tt id="link-2698" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2698', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2699" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2699', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2700" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2700', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2873"></a><tt class="py-lineno">2873</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2874"></a><tt class="py-lineno">2874</tt>  <tt class="py-line"> </tt>
+<a name="L2875"></a><tt class="py-lineno">2875</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2701" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2701', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2876"></a><tt class="py-lineno">2876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L2877"></a><tt class="py-lineno">2877</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2702" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2702', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2878"></a><tt class="py-lineno">2878</tt>  <tt class="py-line">        <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt id="link-2703" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2703', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt id="link-2704" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-2662', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt id="link-2663" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-2663', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2830"></a><tt class="py-lineno">2830</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
-<a name="L2831"></a><tt class="py-lineno">2831</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt id="link-2664" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2664', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-2665" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-2704', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt id="link-2705" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-2705', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2879"></a><tt class="py-lineno">2879</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+<a name="L2880"></a><tt class="py-lineno">2880</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt id="link-2706" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2706', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-2707" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2665', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2832"></a><tt class="py-lineno">2832</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_file"></a><div id="_ETreeTestCaseBase.test_iterparse_file-def"><a name="L2833"></a><tt class="py-lineno">2833</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_file">test_iterparse_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_file-expanded"><a name="L2834"></a><tt class="py-lineno">2834</tt>  <tt class="py-line">        <tt id="link-2666" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2666', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2667" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2667', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2668" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2668', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2835"></a><tt class="py-lineno">2835</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2669" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2669', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt id="link-2670" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2670', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test.xml"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2836"></a><tt class="py-lineno">2836</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L2837"></a><tt class="py-lineno">2837</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2671" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2671', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L2838"></a><tt class="py-lineno">2838</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
-<a name="L2839"></a><tt class="py-lineno">2839</tt>  <tt class="py-line">        <tt id="link-2672" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2672', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2673" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2673', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2840"></a><tt class="py-lineno">2840</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2841"></a><tt class="py-lineno">2841</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2674" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2674', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2675" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2675', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2842"></a><tt class="py-lineno">2842</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2843"></a><tt class="py-lineno">2843</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_start"></a><div id="_ETreeTestCaseBase.test_iterparse_start-def"><a name="L2844"></a><tt class="py-lineno">2844</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_start-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_start');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start">test_iterparse_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_start-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_start-expanded"><a name="L2845"></a><tt class="py-lineno">2845</tt>  <tt class="py-line">        <tt id="link-2676" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2676', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2677" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2677', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2678" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2678', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2846"></a><tt class="py-lineno">2846</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2847"></a><tt class="py-lineno">2847</tt>  <tt class="py-line"> </tt>
-<a name="L2848"></a><tt class="py-lineno">2848</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2679" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2679', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2849"></a><tt class="py-lineno">2849</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
-<a name="L2850"></a><tt class="py-lineno">2850</tt>  <tt class="py-line">        <tt id="link-2680" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2680', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2681" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2681', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2851"></a><tt class="py-lineno">2851</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2852"></a><tt class="py-lineno">2852</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2682" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2682', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2683" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2683', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2684" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2684', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2853"></a><tt class="py-lineno">2853</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2854"></a><tt class="py-lineno">2854</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_start_end"></a><div id="_ETreeTestCaseBase.test_iterparse_start_end-def"><a name="L2855"></a><tt class="py-lineno">2855</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_start_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_start_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start_end">test_iterparse_start_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_start_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_start_end-expanded"><a name="L2856"></a><tt class="py-lineno">2856</tt>  <tt class="py-line">        <tt id="link-2685" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2685', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2686" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2686', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2687" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2687', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2857"></a><tt class="py-lineno">2857</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2858"></a><tt class="py-lineno">2858</tt>  <tt class="py-line"> </tt>
-<a name="L2859"></a><tt class="py-lineno">2859</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2688" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2688', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-string">'end'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2860"></a><tt class="py-lineno">2860</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
-<a name="L2861"></a><tt class="py-lineno">2861</tt>  <tt class="py-line">        <tt id="link-2689" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2689', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2690" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2690', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2862"></a><tt class="py-lineno">2862</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2863"></a><tt class="py-lineno">2863</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2691" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2691', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2692" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2692', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2693" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2693', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2864"></a><tt class="py-lineno">2864</tt>  <tt class="py-line">             <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2694" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2694', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2695" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2695', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2696" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2696', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2865"></a><tt class="py-lineno">2865</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2866"></a><tt class="py-lineno">2866</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_clear"></a><div id="_ETreeTestCaseBase.test_iterparse_clear-def"><a name="L2867"></a><tt class="py-lineno">2867</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_clear-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_clear">test_iterparse_clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_clear-expanded"><a name="L2868"></a><tt class="py-lineno">2868</tt>  <tt class="py-line">        <tt id="link-2697" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2697', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2698" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2698', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2699" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2699', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2869"></a><tt class="py-lineno">2869</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2870"></a><tt class="py-lineno">2870</tt>  <tt class="py-line"> </tt>
-<a name="L2871"></a><tt class="py-lineno">2871</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2700" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2700', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2872"></a><tt class="py-lineno">2872</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">iterator</tt><tt class="py-op">:</tt> </tt>
-<a name="L2873"></a><tt class="py-lineno">2873</tt>  <tt class="py-line">            <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2701" class="py-name"><a title="lxml.etree.DocInfo.clear
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2707', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2881"></a><tt class="py-lineno">2881</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_file"></a><div id="_ETreeTestCaseBase.test_iterparse_file-def"><a name="L2882"></a><tt class="py-lineno">2882</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_file">test_iterparse_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_file-expanded"><a name="L2883"></a><tt class="py-lineno">2883</tt>  <tt class="py-line">        <tt id="link-2708" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2708', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2709" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2709', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2710" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2710', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2884"></a><tt class="py-lineno">2884</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2711" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2711', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt id="link-2712" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2712', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">"test.xml"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2885"></a><tt class="py-lineno">2885</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L2886"></a><tt class="py-lineno">2886</tt>  <tt class="py-line">                          <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2713" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2713', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L2887"></a><tt class="py-lineno">2887</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
+<a name="L2888"></a><tt class="py-lineno">2888</tt>  <tt class="py-line">        <tt id="link-2714" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2714', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2715" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2715', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2889"></a><tt class="py-lineno">2889</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2890"></a><tt class="py-lineno">2890</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2716" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2716', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2717" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2717', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2891"></a><tt class="py-lineno">2891</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2892"></a><tt class="py-lineno">2892</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_start"></a><div id="_ETreeTestCaseBase.test_iterparse_start-def"><a name="L2893"></a><tt class="py-lineno">2893</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_start-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_start');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start">test_iterparse_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_start-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_start-expanded"><a name="L2894"></a><tt class="py-lineno">2894</tt>  <tt class="py-line">        <tt id="link-2718" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2718', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2719" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2719', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2720" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2720', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2895"></a><tt class="py-lineno">2895</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2896"></a><tt class="py-lineno">2896</tt>  <tt class="py-line"> </tt>
+<a name="L2897"></a><tt class="py-lineno">2897</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2721" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2721', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2898"></a><tt class="py-lineno">2898</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
+<a name="L2899"></a><tt class="py-lineno">2899</tt>  <tt class="py-line">        <tt id="link-2722" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2722', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2723" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2723', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2900"></a><tt class="py-lineno">2900</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2901"></a><tt class="py-lineno">2901</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2724" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2724', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2725" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2725', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2726" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2726', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2902"></a><tt class="py-lineno">2902</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2903"></a><tt class="py-lineno">2903</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_start_end"></a><div id="_ETreeTestCaseBase.test_iterparse_start_end-def"><a name="L2904"></a><tt class="py-lineno">2904</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_start_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_start_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_start_end">test_iterparse_start_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_start_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_start_end-expanded"><a name="L2905"></a><tt class="py-lineno">2905</tt>  <tt class="py-line">        <tt id="link-2727" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2727', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2728" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2728', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2729" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2729', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2906"></a><tt class="py-lineno">2906</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2907"></a><tt class="py-lineno">2907</tt>  <tt class="py-line"> </tt>
+<a name="L2908"></a><tt class="py-lineno">2908</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2730" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2730', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-string">'end'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2909"></a><tt class="py-lineno">2909</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">iterator</tt><tt class="py-op">)</tt> </tt>
+<a name="L2910"></a><tt class="py-lineno">2910</tt>  <tt class="py-line">        <tt id="link-2731" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2731', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2732" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2732', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2911"></a><tt class="py-lineno">2911</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2912"></a><tt class="py-lineno">2912</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2733" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2733', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2734', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2735" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2735', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2913"></a><tt class="py-lineno">2913</tt>  <tt class="py-line">             <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt id="link-2736" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2736', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2737" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2737', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt id="link-2738" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2738', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2914"></a><tt class="py-lineno">2914</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2915"></a><tt class="py-lineno">2915</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_clear"></a><div id="_ETreeTestCaseBase.test_iterparse_clear-def"><a name="L2916"></a><tt class="py-lineno">2916</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_clear-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_clear');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_clear">test_iterparse_clear</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_clear-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_clear-expanded"><a name="L2917"></a><tt class="py-lineno">2917</tt>  <tt class="py-line">        <tt id="link-2739" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2739', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2740" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2740', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2741" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2741', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2918"></a><tt class="py-lineno">2918</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2919"></a><tt class="py-lineno">2919</tt>  <tt class="py-line"> </tt>
+<a name="L2920"></a><tt class="py-lineno">2920</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2742" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2742', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2921"></a><tt class="py-lineno">2921</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">iterator</tt><tt class="py-op">:</tt> </tt>
+<a name="L2922"></a><tt class="py-lineno">2922</tt>  <tt class="py-line">            <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2743" class="py-name"><a title="lxml.etree.DocInfo.clear
 lxml.etree._Attrib.clear
 lxml.etree._Element.clear
-lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-2701', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2874"></a><tt class="py-lineno">2874</tt>  <tt class="py-line"> </tt>
-<a name="L2875"></a><tt class="py-lineno">2875</tt>  <tt class="py-line">        <tt id="link-2702" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2702', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2703" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2703', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2876"></a><tt class="py-lineno">2876</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
-<a name="L2877"></a><tt class="py-lineno">2877</tt>  <tt class="py-line">                          <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2704" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2704', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2878"></a><tt class="py-lineno">2878</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_large"></a><div id="_ETreeTestCaseBase.test_iterparse_large-def"><a name="L2879"></a><tt class="py-lineno">2879</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_large-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_large');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_large">test_iterparse_large</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_large-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_large-expanded"><a name="L2880"></a><tt class="py-lineno">2880</tt>  <tt class="py-line">        <tt id="link-2705" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2705', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2706" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2706', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2707" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2707', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2881"></a><tt class="py-lineno">2881</tt>  <tt class="py-line">        <tt class="py-name">CHILD_COUNT</tt> <tt class="py-op">=</tt> <tt class="py-number">12345</tt> </tt>
-<a name="L2882"></a><tt class="py-lineno">2882</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;%s&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;test&lt;/b&gt;'</tt><tt class="py-op">*</tt><tt class="py-name">CHILD_COUNT</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2883"></a><tt class="py-lineno">2883</tt>  <tt class="py-line"> </tt>
-<a name="L2884"></a><tt class="py-lineno">2884</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L2885"></a><tt class="py-lineno">2885</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-2708" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2708', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2886"></a><tt class="py-lineno">2886</tt>  <tt class="py-line">            <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt id="link-2709" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2709', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
-<a name="L2887"></a><tt class="py-lineno">2887</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L2888"></a><tt class="py-lineno">2888</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">CHILD_COUNT</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2889"></a><tt class="py-lineno">2889</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_attrib_ns"></a><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-def"><a name="L2890"></a><tt class="py-lineno">2890</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_attrib_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_attrib_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_attrib_ns">test_iterparse_attrib_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-expanded"><a name="L2891"></a><tt class="py-lineno">2891</tt>  <tt class="py-line">        <tt id="link-2710" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2710', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2711" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2711', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2712" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2712', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2892"></a><tt class="py-lineno">2892</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns="http://ns1/"&gt;&lt;b&gt;&lt;c xmlns="http://ns2/"/&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2893"></a><tt class="py-lineno">2893</tt>  <tt class="py-line"> </tt>
-<a name="L2894"></a><tt class="py-lineno">2894</tt>  <tt class="py-line">        <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'{http://testns/}bla'</tt> </tt>
-<a name="L2895"></a><tt class="py-lineno">2895</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L2896"></a><tt class="py-lineno">2896</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2713" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2713', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt><tt class="py-string">'end-ns'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2897"></a><tt class="py-lineno">2897</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">iterator</tt><tt class="py-op">:</tt> </tt>
-<a name="L2898"></a><tt class="py-lineno">2898</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-2714" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2714', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
-<a name="L2899"></a><tt class="py-lineno">2899</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-op">==</tt> <tt class="py-string">'start'</tt><tt class="py-op">:</tt> </tt>
-<a name="L2900"></a><tt class="py-lineno">2900</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2715" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._ErrorLog.clear" class="py-name" href="#" onclick="return doclink('link-2743', 'clear', 'link-405');">clear</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L2923"></a><tt class="py-lineno">2923</tt>  <tt class="py-line"> </tt>
+<a name="L2924"></a><tt class="py-lineno">2924</tt>  <tt class="py-line">        <tt id="link-2744" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2744', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2745" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2745', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2925"></a><tt class="py-lineno">2925</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> </tt>
+<a name="L2926"></a><tt class="py-lineno">2926</tt>  <tt class="py-line">                          <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-2746" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2746', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2927"></a><tt class="py-lineno">2927</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_large"></a><div id="_ETreeTestCaseBase.test_iterparse_large-def"><a name="L2928"></a><tt class="py-lineno">2928</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_large-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_large');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_large">test_iterparse_large</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_large-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_large-expanded"><a name="L2929"></a><tt class="py-lineno">2929</tt>  <tt class="py-line">        <tt id="link-2747" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2747', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2748" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2748', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2749" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2749', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2930"></a><tt class="py-lineno">2930</tt>  <tt class="py-line">        <tt class="py-name">CHILD_COUNT</tt> <tt class="py-op">=</tt> <tt class="py-number">12345</tt> </tt>
+<a name="L2931"></a><tt class="py-lineno">2931</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;%s&lt;/a&gt;'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;test&lt;/b&gt;'</tt><tt class="py-op">*</tt><tt class="py-name">CHILD_COUNT</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2932"></a><tt class="py-lineno">2932</tt>  <tt class="py-line"> </tt>
+<a name="L2933"></a><tt class="py-lineno">2933</tt>  <tt class="py-line">        <tt class="py-name">i</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L2934"></a><tt class="py-lineno">2934</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-2750" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2750', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2935"></a><tt class="py-lineno">2935</tt>  <tt class="py-line">            <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt id="link-2751" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2751', 'element', 'link-862');">element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">key</tt> </tt>
+<a name="L2936"></a><tt class="py-lineno">2936</tt>  <tt class="py-line">            <tt class="py-name">i</tt> <tt class="py-op">+=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L2937"></a><tt class="py-lineno">2937</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">i</tt><tt class="py-op">,</tt> <tt class="py-name">CHILD_COUNT</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2938"></a><tt class="py-lineno">2938</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_attrib_ns"></a><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-def"><a name="L2939"></a><tt class="py-lineno">2939</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_attrib_ns-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_attrib_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_attrib_ns">test_iterparse_attrib_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_attrib_ns-expanded"><a name="L2940"></a><tt class="py-lineno">2940</tt>  <tt class="py-line">        <tt id="link-2752" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2752', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2753" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2753', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2754" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2754', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2941"></a><tt class="py-lineno">2941</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns="http://ns1/"&gt;&lt;b&gt;&lt;c xmlns="http://ns2/"/&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2942"></a><tt class="py-lineno">2942</tt>  <tt class="py-line"> </tt>
+<a name="L2943"></a><tt class="py-lineno">2943</tt>  <tt class="py-line">        <tt class="py-name">attr_name</tt> <tt class="py-op">=</tt> <tt class="py-string">'{http://testns/}bla'</tt> </tt>
+<a name="L2944"></a><tt class="py-lineno">2944</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2945"></a><tt class="py-lineno">2945</tt>  <tt class="py-line">        <tt class="py-name">iterator</tt> <tt class="py-op">=</tt> <tt id="link-2755" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2755', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt><tt class="py-string">'end-ns'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2946"></a><tt class="py-lineno">2946</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">iterator</tt><tt class="py-op">:</tt> </tt>
+<a name="L2947"></a><tt class="py-lineno">2947</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-2756" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2756', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+<a name="L2948"></a><tt class="py-lineno">2948</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-name">event</tt> <tt class="py-op">==</tt> <tt class="py-string">'start'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2949"></a><tt class="py-lineno">2949</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2757" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2715', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'{http://ns1/}a'</tt><tt class="py-op">:</tt> </tt>
-<a name="L2901"></a><tt class="py-lineno">2901</tt>  <tt class="py-line">                    <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2716" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2757', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'{http://ns1/}a'</tt><tt class="py-op">:</tt> </tt>
+<a name="L2950"></a><tt class="py-lineno">2950</tt>  <tt class="py-line">                    <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2758" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2716', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">,</tt> <tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2902"></a><tt class="py-lineno">2902</tt>  <tt class="py-line"> </tt>
-<a name="L2903"></a><tt class="py-lineno">2903</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2904"></a><tt class="py-lineno">2904</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2905"></a><tt class="py-lineno">2905</tt>  <tt class="py-line">             <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2906"></a><tt class="py-lineno">2906</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-<a name="L2907"></a><tt class="py-lineno">2907</tt>  <tt class="py-line"> </tt>
-<a name="L2908"></a><tt class="py-lineno">2908</tt>  <tt class="py-line">        <tt id="link-2717" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2717', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2718" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2718', 'root', 'link-50');">root</a></tt> </tt>
-<a name="L2909"></a><tt class="py-lineno">2909</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2910"></a><tt class="py-lineno">2910</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
-<a name="L2911"></a><tt class="py-lineno">2911</tt>  <tt class="py-line">            <tt id="link-2719" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2719', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2720" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-2758', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">,</tt> <tt class="py-string">'value'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2951"></a><tt class="py-lineno">2951</tt>  <tt class="py-line"> </tt>
+<a name="L2952"></a><tt class="py-lineno">2952</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2953"></a><tt class="py-lineno">2953</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2954"></a><tt class="py-lineno">2954</tt>  <tt class="py-line">             <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2955"></a><tt class="py-lineno">2955</tt>  <tt class="py-line">            <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+<a name="L2956"></a><tt class="py-lineno">2956</tt>  <tt class="py-line"> </tt>
+<a name="L2957"></a><tt class="py-lineno">2957</tt>  <tt class="py-line">        <tt id="link-2759" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2759', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">iterator</tt><tt class="py-op">.</tt><tt id="link-2760" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2760', 'root', 'link-50');">root</a></tt> </tt>
+<a name="L2958"></a><tt class="py-lineno">2958</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2959"></a><tt class="py-lineno">2959</tt>  <tt class="py-line">            <tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
+<a name="L2960"></a><tt class="py-lineno">2960</tt>  <tt class="py-line">            <tt id="link-2761" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2761', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2762" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2720', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2912"></a><tt class="py-lineno">2912</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2913"></a><tt class="py-lineno">2913</tt>  <tt class="py-line">            <tt class="py-string">'value'</tt><tt class="py-op">,</tt> </tt>
-<a name="L2914"></a><tt class="py-lineno">2914</tt>  <tt class="py-line">            <tt id="link-2721" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2721', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2722" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2762', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2961"></a><tt class="py-lineno">2961</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2962"></a><tt class="py-lineno">2962</tt>  <tt class="py-line">            <tt class="py-string">'value'</tt><tt class="py-op">,</tt> </tt>
+<a name="L2963"></a><tt class="py-lineno">2963</tt>  <tt class="py-line">            <tt id="link-2763" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2763', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2764" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2722', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2915"></a><tt class="py-lineno">2915</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_getiterator"></a><div id="_ETreeTestCaseBase.test_iterparse_getiterator-def"><a name="L2916"></a><tt class="py-lineno">2916</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_getiterator">test_iterparse_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_getiterator-expanded"><a name="L2917"></a><tt class="py-lineno">2917</tt>  <tt class="py-line">        <tt id="link-2723" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2723', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2724" class="py-name"><a title="lxml.etree
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-2764', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-name">attr_name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2964"></a><tt class="py-lineno">2964</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_getiterator"></a><div id="_ETreeTestCaseBase.test_iterparse_getiterator-def"><a name="L2965"></a><tt class="py-lineno">2965</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_getiterator-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_getiterator');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_getiterator">test_iterparse_getiterator</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_getiterator-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_getiterator-expanded"><a name="L2966"></a><tt class="py-lineno">2966</tt>  <tt class="py-line">        <tt id="link-2765" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2765', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2766" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2724', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2725" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2725', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2918"></a><tt class="py-lineno">2918</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d/&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2919"></a><tt class="py-lineno">2919</tt>  <tt class="py-line"> </tt>
-<a name="L2920"></a><tt class="py-lineno">2920</tt>  <tt class="py-line">        <tt class="py-name">counts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L2921"></a><tt class="py-lineno">2921</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt id="link-2726" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2726', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L2922"></a><tt class="py-lineno">2922</tt>  <tt class="py-line">            <tt class="py-name">counts</tt><tt class="py-op">.</tt><tt id="link-2727" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2727', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2728" class="py-name"><a title="lxml.etree._Element.getiterator
-lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2728', 'getiterator', 'link-1833');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2923"></a><tt class="py-lineno">2923</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2924"></a><tt class="py-lineno">2924</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2925"></a><tt class="py-lineno">2925</tt>  <tt class="py-line">            <tt class="py-name">counts</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2926"></a><tt class="py-lineno">2926</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_move_elements"></a><div id="_ETreeTestCaseBase.test_iterparse_move_elements-def"><a name="L2927"></a><tt class="py-lineno">2927</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_move_elements-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_move_elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_move_elements">test_iterparse_move_elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_move_elements-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_move_elements-expanded"><a name="L2928"></a><tt class="py-lineno">2928</tt>  <tt class="py-line">        <tt id="link-2729" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2729', 'iterparse', 'link-2646');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2730" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2766', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2767" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2767', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2967"></a><tt class="py-lineno">2967</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d/&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2968"></a><tt class="py-lineno">2968</tt>  <tt class="py-line"> </tt>
+<a name="L2969"></a><tt class="py-lineno">2969</tt>  <tt class="py-line">        <tt class="py-name">counts</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L2970"></a><tt class="py-lineno">2970</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt id="link-2768" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2768', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L2971"></a><tt class="py-lineno">2971</tt>  <tt class="py-line">            <tt class="py-name">counts</tt><tt class="py-op">.</tt><tt id="link-2769" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-2769', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-2770" class="py-name"><a title="lxml.etree._Element.getiterator
+lxml.etree._ElementTree.getiterator" class="py-name" href="#" onclick="return doclink('link-2770', 'getiterator', 'link-1875');">getiterator</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L2972"></a><tt class="py-lineno">2972</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2973"></a><tt class="py-lineno">2973</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">2</tt><tt class="py-op">,</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">4</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2974"></a><tt class="py-lineno">2974</tt>  <tt class="py-line">            <tt class="py-name">counts</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2975"></a><tt class="py-lineno">2975</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_move_elements"></a><div id="_ETreeTestCaseBase.test_iterparse_move_elements-def"><a name="L2976"></a><tt class="py-lineno">2976</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_move_elements-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_move_elements');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_move_elements">test_iterparse_move_elements</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_move_elements-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_move_elements-expanded"><a name="L2977"></a><tt class="py-lineno">2977</tt>  <tt class="py-line">        <tt id="link-2771" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2771', 'iterparse', 'link-2688');">iterparse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2772" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2730', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2731" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2731', 'iterparse', 'link-2646');">iterparse</a></tt> </tt>
-<a name="L2929"></a><tt class="py-lineno">2929</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d/&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2930"></a><tt class="py-lineno">2930</tt>  <tt class="py-line"> </tt>
-<a name="L2931"></a><tt class="py-lineno">2931</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt id="link-2732" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2772', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2773" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2773', 'iterparse', 'link-2688');">iterparse</a></tt> </tt>
+<a name="L2978"></a><tt class="py-lineno">2978</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;d/&gt;&lt;/b&gt;&lt;c/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2979"></a><tt class="py-lineno">2979</tt>  <tt class="py-line"> </tt>
+<a name="L2980"></a><tt class="py-lineno">2980</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">node</tt> <tt class="py-keyword">in</tt> <tt id="link-2774" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2732', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2733" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2733', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
-<a name="L2932"></a><tt class="py-lineno">2932</tt>  <tt class="py-line"> </tt>
-<a name="L2933"></a><tt class="py-lineno">2933</tt>  <tt class="py-line">        <tt id="link-2734" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2734', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2735" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2774', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2775" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2775', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> <tt class="py-keyword">pass</tt> </tt>
+<a name="L2981"></a><tt class="py-lineno">2981</tt>  <tt class="py-line"> </tt>
+<a name="L2982"></a><tt class="py-lineno">2982</tt>  <tt class="py-line">        <tt id="link-2776" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2776', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-2777" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2735', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2736" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2777', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2778" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2736', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'new_root'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L2934"></a><tt class="py-lineno">2934</tt>  <tt class="py-line">        <tt id="link-2737" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2737', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-<a name="L2935"></a><tt class="py-lineno">2935</tt>  <tt class="py-line"> </tt>
-<a name="L2936"></a><tt class="py-lineno">2936</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L2937"></a><tt class="py-lineno">2937</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L2938"></a><tt class="py-lineno">2938</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2738" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2778', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'new_root'</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L2983"></a><tt class="py-lineno">2983</tt>  <tt class="py-line">        <tt id="link-2779" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2779', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">node</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+<a name="L2984"></a><tt class="py-lineno">2984</tt>  <tt class="py-line"> </tt>
+<a name="L2985"></a><tt class="py-lineno">2985</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L2986"></a><tt class="py-lineno">2986</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-string">'b'</tt><tt class="py-op">,</tt> <tt class="py-string">'c'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L2987"></a><tt class="py-lineno">2987</tt>  <tt class="py-line">            <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2780" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2738', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2739" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2739', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2939"></a><tt class="py-lineno">2939</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_iterparse_cdata"></a><div id="_ETreeTestCaseBase.test_iterparse_cdata-def"><a name="L2940"></a><tt class="py-lineno">2940</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_cdata-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_cdata');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_cdata">test_iterparse_cdata</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_iterparse_cdata-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_cdata-expanded"><a name="L2941"></a><tt class="py-lineno">2941</tt>  <tt class="py-line">        <tt id="link-2740" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2740', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2741" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-2780', 'tag', 'link-44');">tag</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt id="link-2781" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2781', 'root', 'link-50');">root</a></tt> <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2988"></a><tt class="py-lineno">2988</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_iterparse_cdata"></a><div id="_ETreeTestCaseBase.test_iterparse_cdata-def"><a name="L2989"></a><tt class="py-lineno">2989</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_iterparse_cdata-toggle" onclick="return toggle('_ETreeTestCaseBase.test_iterparse_cdata');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse_cdata">test_iterparse_cdata</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_iterparse_cdata-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_iterparse_cdata-expanded"><a name="L2990"></a><tt class="py-lineno">2990</tt>  <tt class="py-line">        <tt id="link-2782" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2782', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2783" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2741', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2742" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2742', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L2942"></a><tt class="py-lineno">2942</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2943"></a><tt class="py-lineno">2943</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2743" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2783', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2784" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2784', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L2991"></a><tt class="py-lineno">2991</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L2992"></a><tt class="py-lineno">2992</tt>  <tt class="py-line">        <tt class="py-name">context</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2785" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2743', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2744" class="py-name"><a title="lxml.etree.iterparse
-lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2744', 'iterparse', 'link-2646');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2944"></a><tt class="py-lineno">2944</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2745" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2785', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2786" class="py-name"><a title="lxml.etree.iterparse
+lxml.tests.selftest.iterparse" class="py-name" href="#" onclick="return doclink('link-2786', 'iterparse', 'link-2688');">iterparse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L2993"></a><tt class="py-lineno">2993</tt>  <tt class="py-line">        <tt class="py-name">content</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-2787" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2745', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">context</tt> <tt class="py-op">]</tt> </tt>
-<a name="L2945"></a><tt class="py-lineno">2945</tt>  <tt class="py-line"> </tt>
-<a name="L2946"></a><tt class="py-lineno">2946</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'test'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
-<a name="L2947"></a><tt class="py-lineno">2947</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2746" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2746', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;test&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2948"></a><tt class="py-lineno">2948</tt>  <tt class="py-line">                          <tt id="link-2747" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2747', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-2748" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2748', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2949"></a><tt class="py-lineno">2949</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_file"></a><div id="_ETreeTestCaseBase.test_parse_file-def"><a name="L2950"></a><tt class="py-lineno">2950</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file-expanded"><a name="L2951"></a><tt class="py-lineno">2951</tt>  <tt class="py-line">        <tt id="link-2749" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2787', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">for</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt><tt class="py-name">el</tt> <tt class="py-keyword">in</tt> <tt class="py-name">context</tt> <tt class="py-op">]</tt> </tt>
+<a name="L2994"></a><tt class="py-lineno">2994</tt>  <tt class="py-line"> </tt>
+<a name="L2995"></a><tt class="py-lineno">2995</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'test'</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">content</tt><tt class="py-op">)</tt> </tt>
+<a name="L2996"></a><tt class="py-lineno">2996</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2788" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2788', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;test&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L2997"></a><tt class="py-lineno">2997</tt>  <tt class="py-line">                          <tt id="link-2789" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2789', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">context</tt><tt class="py-op">.</tt><tt id="link-2790" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2790', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L2998"></a><tt class="py-lineno">2998</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_file"></a><div id="_ETreeTestCaseBase.test_parse_file-def"><a name="L2999"></a><tt class="py-lineno">2999</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file">test_parse_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file-expanded"><a name="L3000"></a><tt class="py-lineno">3000</tt>  <tt class="py-line">        <tt id="link-2791" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2749', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2750" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2791', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2792" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2750', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2751" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2792', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2793" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2751', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2952"></a><tt class="py-lineno">2952</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
-<a name="L2953"></a><tt class="py-lineno">2953</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2752" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2793', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3001"></a><tt class="py-lineno">3001</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
+<a name="L3002"></a><tt class="py-lineno">3002</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2794" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2752', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2753" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2753', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L2954"></a><tt class="py-lineno">2954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2754" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2754', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2955"></a><tt class="py-lineno">2955</tt>  <tt class="py-line">            <tt id="link-2755" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2755', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2956"></a><tt class="py-lineno">2956</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2756" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2756', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2957"></a><tt class="py-lineno">2957</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_file_nonexistent"></a><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-def"><a name="L2958"></a><tt class="py-lineno">2958</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_nonexistent-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_nonexistent');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-expanded"><a name="L2959"></a><tt class="py-lineno">2959</tt>  <tt class="py-line">        <tt id="link-2757" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2794', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2795" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2795', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3003"></a><tt class="py-lineno">3003</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2796" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2796', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3004"></a><tt class="py-lineno">3004</tt>  <tt class="py-line">            <tt id="link-2797" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2797', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3005"></a><tt class="py-lineno">3005</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2798" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2798', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3006"></a><tt class="py-lineno">3006</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_file_nonexistent"></a><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-def"><a name="L3007"></a><tt class="py-lineno">3007</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_nonexistent-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_nonexistent');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_nonexistent">test_parse_file_nonexistent</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_nonexistent-expanded"><a name="L3008"></a><tt class="py-lineno">3008</tt>  <tt class="py-line">        <tt id="link-2799" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2757', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2758" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2799', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2800" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2758', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2759" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2800', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2801" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2759', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2960"></a><tt class="py-lineno">2960</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt id="link-2760" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2801', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3009"></a><tt class="py-lineno">3009</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">IOError</tt><tt class="py-op">,</tt> <tt id="link-2802" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2760', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> <tt id="link-2761" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2761', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'notthere.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>   </tt>
-</div><a name="L2961"></a><tt class="py-lineno">2961</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_error_none"></a><div id="_ETreeTestCaseBase.test_parse_error_none-def"><a name="L2962"></a><tt class="py-lineno">2962</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_error_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error_none-expanded"><a name="L2963"></a><tt class="py-lineno">2963</tt>  <tt class="py-line">        <tt id="link-2762" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2802', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> <tt id="link-2803" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2803', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'notthere.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt>   </tt>
+</div><a name="L3010"></a><tt class="py-lineno">3010</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_error_none"></a><div id="_ETreeTestCaseBase.test_parse_error_none-def"><a name="L3011"></a><tt class="py-lineno">3011</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error_none-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error_none');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_none">test_parse_error_none</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_error_none-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error_none-expanded"><a name="L3012"></a><tt class="py-lineno">3012</tt>  <tt class="py-line">        <tt id="link-2804" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2762', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2763" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2804', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2805" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2763', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2764" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2805', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2806" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2764', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2964"></a><tt class="py-lineno">2964</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt id="link-2765" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2806', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3013"></a><tt class="py-lineno">3013</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">TypeError</tt><tt class="py-op">,</tt> <tt id="link-2807" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2765', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2965"></a><tt class="py-lineno">2965</tt>  <tt class="py-line"> </tt>
-<a name="L2966"></a><tt class="py-lineno">2966</tt>  <tt class="py-line">    <tt id="link-2766" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2766', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_error'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parse_error"></a><div id="_ETreeTestCaseBase.test_parse_error-def"><a name="L2967"></a><tt class="py-lineno">2967</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error-expanded"><a name="L2968"></a><tt class="py-lineno">2968</tt>  <tt class="py-line">        <tt class="py-comment"># ET &lt; 1.3 raises ExpatError</tt> </tt>
-<a name="L2969"></a><tt class="py-lineno">2969</tt>  <tt class="py-line">        <tt id="link-2767" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2807', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3014"></a><tt class="py-lineno">3014</tt>  <tt class="py-line"> </tt>
+<a name="L3015"></a><tt class="py-lineno">3015</tt>  <tt class="py-line">    <tt id="link-2808" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2808', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_error'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parse_error"></a><div id="_ETreeTestCaseBase.test_parse_error-def"><a name="L3016"></a><tt class="py-lineno">3016</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error">test_parse_error</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_error-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error-expanded"><a name="L3017"></a><tt class="py-lineno">3017</tt>  <tt class="py-line">        <tt class="py-comment"># ET &lt; 1.3 raises ExpatError</tt> </tt>
+<a name="L3018"></a><tt class="py-lineno">3018</tt>  <tt class="py-line">        <tt id="link-2809" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2767', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2768" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2809', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2810" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2768', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2769" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2810', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2811" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2769', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2970"></a><tt class="py-lineno">2970</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/c&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2971"></a><tt class="py-lineno">2971</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2770" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2811', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3019"></a><tt class="py-lineno">3019</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/c&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3020"></a><tt class="py-lineno">3020</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2812" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2770', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2972"></a><tt class="py-lineno">2972</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2771" class="py-name" targets="Method lxml.etree.TreeBuilder.close()=lxml.etree.TreeBuilder-class.html#close,Method lxml.etree._FeedParser.close()=lxml.etree._FeedParser-class.html#close,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#close"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2812', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3021"></a><tt class="py-lineno">3021</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2813" class="py-name" targets="Method lxml.etree.TreeBuilder.close()=lxml.etree.TreeBuilder-class.html#close,Method lxml.etree._FeedParser.close()=lxml.etree._FeedParser-class.html#close,Method lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close()=lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike-class.html#close"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2771', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2973"></a><tt class="py-lineno">2973</tt>  <tt class="py-line"> </tt>
-<a name="L2974"></a><tt class="py-lineno">2974</tt>  <tt class="py-line">    <tt id="link-2772" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2772', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_error_from_file'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parse_error_from_file"></a><div id="_ETreeTestCaseBase.test_parse_error_from_file-def"><a name="L2975"></a><tt class="py-lineno">2975</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error_from_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error_from_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_error_from_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error_from_file-expanded"><a name="L2976"></a><tt class="py-lineno">2976</tt>  <tt class="py-line">        <tt id="link-2773" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2813', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3022"></a><tt class="py-lineno">3022</tt>  <tt class="py-line"> </tt>
+<a name="L3023"></a><tt class="py-lineno">3023</tt>  <tt class="py-line">    <tt id="link-2814" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2814', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_error_from_file'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parse_error_from_file"></a><div id="_ETreeTestCaseBase.test_parse_error_from_file-def"><a name="L3024"></a><tt class="py-lineno">3024</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_error_from_file-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_error_from_file');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_error_from_file">test_parse_error_from_file</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_error_from_file-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_error_from_file-expanded"><a name="L3025"></a><tt class="py-lineno">3025</tt>  <tt class="py-line">        <tt id="link-2815" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2773', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2774" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2815', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2816" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2774', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2775" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2816', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2817" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2775', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2977"></a><tt class="py-lineno">2977</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
-<a name="L2978"></a><tt class="py-lineno">2978</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2776" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2776', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test_broken.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2979"></a><tt class="py-lineno">2979</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2777" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2817', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3026"></a><tt class="py-lineno">3026</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
+<a name="L3027"></a><tt class="py-lineno">3027</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2818" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2818', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test_broken.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3028"></a><tt class="py-lineno">3028</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2819" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2777', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2980"></a><tt class="py-lineno">2980</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2778" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2819', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> <tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3029"></a><tt class="py-lineno">3029</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2820" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2778', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2981"></a><tt class="py-lineno">2981</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_file_object"></a><div id="_ETreeTestCaseBase.test_parse_file_object-def"><a name="L2982"></a><tt class="py-lineno">2982</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_object-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object">test_parse_file_object</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_file_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_object-expanded"><a name="L2983"></a><tt class="py-lineno">2983</tt>  <tt class="py-line">        <tt id="link-2779" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2820', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3030"></a><tt class="py-lineno">3030</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_file_object"></a><div id="_ETreeTestCaseBase.test_parse_file_object-def"><a name="L3031"></a><tt class="py-lineno">3031</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_object-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_object');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object">test_parse_file_object</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_file_object-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_object-expanded"><a name="L3032"></a><tt class="py-lineno">3032</tt>  <tt class="py-line">        <tt id="link-2821" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2779', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2780" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2821', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2822" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2780', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2781" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2822', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2823" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2781', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2984"></a><tt class="py-lineno">2984</tt>  <tt class="py-line">        <tt class="py-comment"># from file object</tt> </tt>
-<a name="L2985"></a><tt class="py-lineno">2985</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2782" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2782', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2986"></a><tt class="py-lineno">2986</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2783" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2823', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3033"></a><tt class="py-lineno">3033</tt>  <tt class="py-line">        <tt class="py-comment"># from file object</tt> </tt>
+<a name="L3034"></a><tt class="py-lineno">3034</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2824" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2824', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3035"></a><tt class="py-lineno">3035</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2825" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2783', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2987"></a><tt class="py-lineno">2987</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2784" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2825', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3036"></a><tt class="py-lineno">3036</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2826" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2784', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2988"></a><tt class="py-lineno">2988</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2785" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2785', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2989"></a><tt class="py-lineno">2989</tt>  <tt class="py-line">            <tt id="link-2786" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2786', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2990"></a><tt class="py-lineno">2990</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2787" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2787', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L2991"></a><tt class="py-lineno">2991</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_stringio"></a><div id="_ETreeTestCaseBase.test_parse_stringio-def"><a name="L2992"></a><tt class="py-lineno">2992</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_stringio-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_stringio');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_stringio">test_parse_stringio</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_stringio-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_stringio-expanded"><a name="L2993"></a><tt class="py-lineno">2993</tt>  <tt class="py-line">        <tt id="link-2788" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2826', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3037"></a><tt class="py-lineno">3037</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2827" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2827', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3038"></a><tt class="py-lineno">3038</tt>  <tt class="py-line">            <tt id="link-2828" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2828', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3039"></a><tt class="py-lineno">3039</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2829" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2829', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3040"></a><tt class="py-lineno">3040</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_stringio"></a><div id="_ETreeTestCaseBase.test_parse_stringio-def"><a name="L3041"></a><tt class="py-lineno">3041</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_stringio-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_stringio');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_stringio">test_parse_stringio</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_stringio-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_stringio-expanded"><a name="L3042"></a><tt class="py-lineno">3042</tt>  <tt class="py-line">        <tt id="link-2830" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2788', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2789" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2830', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2831" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2789', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2790" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2831', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2832" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2790', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L2994"></a><tt class="py-lineno">2994</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L2995"></a><tt class="py-lineno">2995</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2791" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2832', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3043"></a><tt class="py-lineno">3043</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3044"></a><tt class="py-lineno">3044</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2833" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2791', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L2996"></a><tt class="py-lineno">2996</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2792" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2833', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3045"></a><tt class="py-lineno">3045</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2834" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2792', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L2997"></a><tt class="py-lineno">2997</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2793" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2793', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L2998"></a><tt class="py-lineno">2998</tt>  <tt class="py-line">            <tt id="link-2794" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2794', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L2999"></a><tt class="py-lineno">2999</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2795" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2795', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3000"></a><tt class="py-lineno">3000</tt>  <tt class="py-line">           <tt class="py-op">)</tt> </tt>
-</div><a name="L3001"></a><tt class="py-lineno">3001</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_cdata"></a><div id="_ETreeTestCaseBase.test_parse_cdata-def"><a name="L3002"></a><tt class="py-lineno">3002</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_cdata-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_cdata');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_cdata">test_parse_cdata</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_cdata-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_cdata-expanded"><a name="L3003"></a><tt class="py-lineno">3003</tt>  <tt class="py-line">        <tt id="link-2796" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2796', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2797" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2834', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3046"></a><tt class="py-lineno">3046</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2835" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2835', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3047"></a><tt class="py-lineno">3047</tt>  <tt class="py-line">            <tt id="link-2836" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2836', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b&gt;&lt;/b&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3048"></a><tt class="py-lineno">3048</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2837" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2837', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3049"></a><tt class="py-lineno">3049</tt>  <tt class="py-line">           <tt class="py-op">)</tt> </tt>
+</div><a name="L3050"></a><tt class="py-lineno">3050</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_cdata"></a><div id="_ETreeTestCaseBase.test_parse_cdata-def"><a name="L3051"></a><tt class="py-lineno">3051</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_cdata-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_cdata');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_cdata">test_parse_cdata</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_cdata-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_cdata-expanded"><a name="L3052"></a><tt class="py-lineno">3052</tt>  <tt class="py-line">        <tt id="link-2838" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2838', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2839" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2797', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2798" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2798', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3004"></a><tt class="py-lineno">3004</tt>  <tt class="py-line">        <tt id="link-2799" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2799', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2800" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2839', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2840" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2840', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3053"></a><tt class="py-lineno">3053</tt>  <tt class="py-line">        <tt id="link-2841" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2841', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2842" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2800', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2801" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2842', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2843" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2801', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2802" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2802', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3005"></a><tt class="py-lineno">3005</tt>  <tt class="py-line"> </tt>
-<a name="L3006"></a><tt class="py-lineno">3006</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2803" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2803', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2804" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2843', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-2844" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2844', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;![CDATA[test]]&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3054"></a><tt class="py-lineno">3054</tt>  <tt class="py-line"> </tt>
+<a name="L3055"></a><tt class="py-lineno">3055</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'test'</tt><tt class="py-op">,</tt> <tt id="link-2845" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2845', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-2846" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2804', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3007"></a><tt class="py-lineno">3007</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2805" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2805', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;test&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3008"></a><tt class="py-lineno">3008</tt>  <tt class="py-line">                          <tt id="link-2806" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2806', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2807" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2807', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3009"></a><tt class="py-lineno">3009</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_with_encoding"></a><div id="_ETreeTestCaseBase.test_parse_with_encoding-def"><a name="L3010"></a><tt class="py-lineno">3010</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_with_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_with_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_with_encoding">test_parse_with_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_with_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_with_encoding-expanded"><a name="L3011"></a><tt class="py-lineno">3011</tt>  <tt class="py-line">        <tt class="py-comment"># this can fail in libxml2 &lt;= 2.6.22</tt> </tt>
-<a name="L3012"></a><tt class="py-lineno">3012</tt>  <tt class="py-line">        <tt id="link-2808" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2846', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3056"></a><tt class="py-lineno">3056</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2847" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2847', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;test&lt;/root&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3057"></a><tt class="py-lineno">3057</tt>  <tt class="py-line">                          <tt id="link-2848" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2848', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-2849" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-2849', 'root', 'link-50');">root</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3058"></a><tt class="py-lineno">3058</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_with_encoding"></a><div id="_ETreeTestCaseBase.test_parse_with_encoding-def"><a name="L3059"></a><tt class="py-lineno">3059</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_with_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_with_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_with_encoding">test_parse_with_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_with_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_with_encoding-expanded"><a name="L3060"></a><tt class="py-lineno">3060</tt>  <tt class="py-line">        <tt class="py-comment"># this can fail in libxml2 &lt;= 2.6.22</tt> </tt>
+<a name="L3061"></a><tt class="py-lineno">3061</tt>  <tt class="py-line">        <tt id="link-2850" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2808', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2809" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2850', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2851" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2809', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2810" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2851', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2852" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2810', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L3013"></a><tt class="py-lineno">3013</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2811" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2852', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3062"></a><tt class="py-lineno">3062</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2853" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2811', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="ascii"?&gt;&lt;html/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3014"></a><tt class="py-lineno">3014</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2812" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2812', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-2813" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2813', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3015"></a><tt class="py-lineno">3015</tt>  <tt class="py-line">                       <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2814" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2814', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3016"></a><tt class="py-lineno">3016</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding"></a><div id="_ETreeTestCaseBase.test_encoding-def"><a name="L3017"></a><tt class="py-lineno">3017</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding">test_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding-expanded"><a name="L3018"></a><tt class="py-lineno">3018</tt>  <tt class="py-line">        <tt id="link-2815" class="py-name"><a title="lxml.etree.Element
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2853', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="ascii"?&gt;&lt;html/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3063"></a><tt class="py-lineno">3063</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2854" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2854', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt><tt id="link-2855" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2855', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;html&gt;&lt;/html&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3064"></a><tt class="py-lineno">3064</tt>  <tt class="py-line">                       <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2856" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2856', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3065"></a><tt class="py-lineno">3065</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding"></a><div id="_ETreeTestCaseBase.test_encoding-def"><a name="L3066"></a><tt class="py-lineno">3066</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding">test_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding-expanded"><a name="L3067"></a><tt class="py-lineno">3067</tt>  <tt class="py-line">        <tt id="link-2857" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2815', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2816" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2857', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2858" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2816', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2817" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2858', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2859" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2817', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3019"></a><tt class="py-lineno">3019</tt>  <tt class="py-line"> </tt>
-<a name="L3020"></a><tt class="py-lineno">3020</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2818" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2859', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3068"></a><tt class="py-lineno">3068</tt>  <tt class="py-line"> </tt>
+<a name="L3069"></a><tt class="py-lineno">3069</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2860" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2818', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3021"></a><tt class="py-lineno">3021</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2819" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2860', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3070"></a><tt class="py-lineno">3070</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2861" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2819', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2820" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2820', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3022"></a><tt class="py-lineno">3022</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2821" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2821', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3023"></a><tt class="py-lineno">3023</tt>  <tt class="py-line">            <tt id="link-2822" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2822', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3024"></a><tt class="py-lineno">3024</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3025"></a><tt class="py-lineno">3025</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_exact"></a><div id="_ETreeTestCaseBase.test_encoding_exact-def"><a name="L3026"></a><tt class="py-lineno">3026</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_exact-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_exact');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_exact">test_encoding_exact</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_exact-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_exact-expanded"><a name="L3027"></a><tt class="py-lineno">3027</tt>  <tt class="py-line">        <tt id="link-2823" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2861', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2862" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2862', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3071"></a><tt class="py-lineno">3071</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2863" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2863', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3072"></a><tt class="py-lineno">3072</tt>  <tt class="py-line">            <tt id="link-2864" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2864', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3073"></a><tt class="py-lineno">3073</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3074"></a><tt class="py-lineno">3074</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_exact"></a><div id="_ETreeTestCaseBase.test_encoding_exact-def"><a name="L3075"></a><tt class="py-lineno">3075</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_exact-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_exact');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_exact">test_encoding_exact</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_exact-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_exact-expanded"><a name="L3076"></a><tt class="py-lineno">3076</tt>  <tt class="py-line">        <tt id="link-2865" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2823', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2824" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2865', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2866" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2824', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2825" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2866', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2867" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2825', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3028"></a><tt class="py-lineno">3028</tt>  <tt class="py-line">        <tt id="link-2826" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2867', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3077"></a><tt class="py-lineno">3077</tt>  <tt class="py-line">        <tt id="link-2868" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2826', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2827" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2868', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2869" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2827', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2828" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2869', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2870" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2828', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3029"></a><tt class="py-lineno">3029</tt>  <tt class="py-line"> </tt>
-<a name="L3030"></a><tt class="py-lineno">3030</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2829" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2870', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3078"></a><tt class="py-lineno">3078</tt>  <tt class="py-line"> </tt>
+<a name="L3079"></a><tt class="py-lineno">3079</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2871" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2829', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3031"></a><tt class="py-lineno">3031</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2830" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2871', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3080"></a><tt class="py-lineno">3080</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2872" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2830', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2831" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2831', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3032"></a><tt class="py-lineno">3032</tt>  <tt class="py-line">         </tt>
-<a name="L3033"></a><tt class="py-lineno">3033</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3034"></a><tt class="py-lineno">3034</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2832" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2872', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2873" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2873', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3081"></a><tt class="py-lineno">3081</tt>  <tt class="py-line">         </tt>
+<a name="L3082"></a><tt class="py-lineno">3082</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3083"></a><tt class="py-lineno">3083</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2874" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2832', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2833" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2833', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3035"></a><tt class="py-lineno">3035</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2834" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2834', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2835" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2874', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2875" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2875', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3084"></a><tt class="py-lineno">3084</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2876" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2876', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2877" class="py-name" targets="Variable lxml.etree.DocInfo.encoding=lxml.etree.DocInfo-class.html#encoding,Function lxml.tests.selftest.encoding()=lxml.tests.selftest-module.html#encoding,Function lxml.tests.selftest2.encoding()=lxml.tests.selftest2-module.html#encoding"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2835', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3036"></a><tt class="py-lineno">3036</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2836" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2836', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3037"></a><tt class="py-lineno">3037</tt>  <tt class="py-line">                          <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2837" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2837', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2838" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2838', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2839" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2839', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3038"></a><tt class="py-lineno">3038</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_file_encoding"></a><div id="_ETreeTestCaseBase.test_parse_file_encoding-def"><a name="L3039"></a><tt class="py-lineno">3039</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_file_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_encoding-expanded"><a name="L3040"></a><tt class="py-lineno">3040</tt>  <tt class="py-line">        <tt id="link-2840" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2877', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3085"></a><tt class="py-lineno">3085</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2878" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2878', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3086"></a><tt class="py-lineno">3086</tt>  <tt class="py-line">                          <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2879" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2879', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2880" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2880', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2881" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2881', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3087"></a><tt class="py-lineno">3087</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_file_encoding"></a><div id="_ETreeTestCaseBase.test_parse_file_encoding-def"><a name="L3088"></a><tt class="py-lineno">3088</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_encoding">test_parse_file_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_file_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_encoding-expanded"><a name="L3089"></a><tt class="py-lineno">3089</tt>  <tt class="py-line">        <tt id="link-2882" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2840', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2841" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2882', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2883" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2841', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2842" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2883', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2884" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2842', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L3041"></a><tt class="py-lineno">3041</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
-<a name="L3042"></a><tt class="py-lineno">3042</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2843" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2884', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3090"></a><tt class="py-lineno">3090</tt>  <tt class="py-line">        <tt class="py-comment"># from file</tt> </tt>
+<a name="L3091"></a><tt class="py-lineno">3091</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2885" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2843', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2844" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2844', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test-string.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3043"></a><tt class="py-lineno">3043</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2845" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2845', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3044"></a><tt class="py-lineno">3044</tt>  <tt class="py-line">            <tt id="link-2846" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2846', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3045"></a><tt class="py-lineno">3045</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2847" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2847', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3046"></a><tt class="py-lineno">3046</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parse_file_object_encoding"></a><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-def"><a name="L3047"></a><tt class="py-lineno">3047</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_object_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_object_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object_encoding">test_parse_file_object_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-expanded"><a name="L3048"></a><tt class="py-lineno">3048</tt>  <tt class="py-line">        <tt id="link-2848" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2885', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt id="link-2886" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2886', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test-string.xml'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3092"></a><tt class="py-lineno">3092</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2887" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2887', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3093"></a><tt class="py-lineno">3093</tt>  <tt class="py-line">            <tt id="link-2888" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2888', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3094"></a><tt class="py-lineno">3094</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2889" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2889', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3095"></a><tt class="py-lineno">3095</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parse_file_object_encoding"></a><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-def"><a name="L3096"></a><tt class="py-lineno">3096</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_file_object_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_file_object_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_file_object_encoding">test_parse_file_object_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_file_object_encoding-expanded"><a name="L3097"></a><tt class="py-lineno">3097</tt>  <tt class="py-line">        <tt id="link-2890" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2848', 'parse', 'link-2473');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2849" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2890', 'parse', 'link-2515');">parse</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2891" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2849', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2850" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2891', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2892" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2850', 'parse', 'link-2473');">parse</a></tt> </tt>
-<a name="L3049"></a><tt class="py-lineno">3049</tt>  <tt class="py-line">        <tt class="py-comment"># from file object</tt> </tt>
-<a name="L3050"></a><tt class="py-lineno">3050</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2851" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2851', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test-string.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3051"></a><tt class="py-lineno">3051</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2852" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2892', 'parse', 'link-2515');">parse</a></tt> </tt>
+<a name="L3098"></a><tt class="py-lineno">3098</tt>  <tt class="py-line">        <tt class="py-comment"># from file object</tt> </tt>
+<a name="L3099"></a><tt class="py-lineno">3099</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-2893" class="py-name"><a title="lxml.tests.common_imports.fileInTestDir" class="py-name" href="#" onclick="return doclink('link-2893', 'fileInTestDir', 'link-17');">fileInTestDir</a></tt><tt class="py-op">(</tt><tt class="py-string">'test-string.xml'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3100"></a><tt class="py-lineno">3100</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2894" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2852', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L3052"></a><tt class="py-lineno">3052</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2853" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2894', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3101"></a><tt class="py-lineno">3101</tt>  <tt class="py-line">        <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-2895" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2853', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3053"></a><tt class="py-lineno">3053</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2854" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2854', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3054"></a><tt class="py-lineno">3054</tt>  <tt class="py-line">            <tt id="link-2855" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2855', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3055"></a><tt class="py-lineno">3055</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2856" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2856', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3056"></a><tt class="py-lineno">3056</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_8bit_latin1"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-def"><a name="L3057"></a><tt class="py-lineno">3057</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_latin1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_latin1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_latin1">test_encoding_8bit_latin1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-expanded"><a name="L3058"></a><tt class="py-lineno">3058</tt>  <tt class="py-line">        <tt id="link-2857" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-2895', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3102"></a><tt class="py-lineno">3102</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2896" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-2896', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3103"></a><tt class="py-lineno">3103</tt>  <tt class="py-line">            <tt id="link-2897" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2897', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3104"></a><tt class="py-lineno">3104</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2898" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2898', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3105"></a><tt class="py-lineno">3105</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_8bit_latin1"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-def"><a name="L3106"></a><tt class="py-lineno">3106</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_latin1-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_latin1');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_latin1">test_encoding_8bit_latin1</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_latin1-expanded"><a name="L3107"></a><tt class="py-lineno">3107</tt>  <tt class="py-line">        <tt id="link-2899" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2857', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2858" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2899', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2900" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2858', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2859" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2900', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2901" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2859', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3059"></a><tt class="py-lineno">3059</tt>  <tt class="py-line">        <tt id="link-2860" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2901', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3108"></a><tt class="py-lineno">3108</tt>  <tt class="py-line">        <tt id="link-2902" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2860', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2861" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2902', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2903" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2861', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2862" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2903', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2904" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2862', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3060"></a><tt class="py-lineno">3060</tt>  <tt class="py-line"> </tt>
-<a name="L3061"></a><tt class="py-lineno">3061</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2863" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2904', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3109"></a><tt class="py-lineno">3109</tt>  <tt class="py-line"> </tt>
+<a name="L3110"></a><tt class="py-lineno">3110</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2905" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2863', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3062"></a><tt class="py-lineno">3062</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2864" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2905', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3111"></a><tt class="py-lineno">3111</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2906" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2864', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2865" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2865', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3063"></a><tt class="py-lineno">3063</tt>  <tt class="py-line"> </tt>
-<a name="L3064"></a><tt class="py-lineno">3064</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3065"></a><tt class="py-lineno">3065</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2866" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2906', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2907" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2907', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3112"></a><tt class="py-lineno">3112</tt>  <tt class="py-line"> </tt>
+<a name="L3113"></a><tt class="py-lineno">3113</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3114"></a><tt class="py-lineno">3114</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2908" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2866', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2867" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2867', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3066"></a><tt class="py-lineno">3066</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2868" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2868', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2869" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2908', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2909" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2909', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3115"></a><tt class="py-lineno">3115</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2910" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2910', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-2911" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2869', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3067"></a><tt class="py-lineno">3067</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3068"></a><tt class="py-lineno">3068</tt>  <tt class="py-line">        <tt class="py-name">declaration</tt> <tt class="py-op">=</tt> <tt id="link-2870" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2870', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;?xml version=\'1.0\' encoding=\'iso-8859-1\'?&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3069"></a><tt class="py-lineno">3069</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2871" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase.assertEncodingDeclaration()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertEncodingDeclaration"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertEncodingDeclaration" class="py-name" href="#" onclick="return doclink('link-2871', 'assertEncodingDeclaration', 'link-2871');">assertEncodingDeclaration</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-2872" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2872', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3070"></a><tt class="py-lineno">3070</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-2873" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2873', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'?&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2874" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2874', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2875" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2875', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2876" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2876', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3071"></a><tt class="py-lineno">3071</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2877" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2877', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3072"></a><tt class="py-lineno">3072</tt>  <tt class="py-line">                          <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3073"></a><tt class="py-lineno">3073</tt>  <tt class="py-line"> </tt>
-<a name="L3074"></a><tt class="py-lineno">3074</tt>  <tt class="py-line">    <tt id="link-2878" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2878', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_encoding_8bit_explicit'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit"></a><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-def"><a name="L3075"></a><tt class="py-lineno">3075</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_encoding_8bit_explicit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-expanded"><a name="L3076"></a><tt class="py-lineno">3076</tt>  <tt class="py-line">        <tt id="link-2879" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2911', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3116"></a><tt class="py-lineno">3116</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3117"></a><tt class="py-lineno">3117</tt>  <tt class="py-line">        <tt class="py-name">declaration</tt> <tt class="py-op">=</tt> <tt id="link-2912" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2912', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;?xml version=\'1.0\' encoding=\'iso-8859-1\'?&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3118"></a><tt class="py-lineno">3118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2913" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase.assertEncodingDeclaration()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertEncodingDeclaration"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertEncodingDeclaration" class="py-name" href="#" onclick="return doclink('link-2913', 'assertEncodingDeclaration', 'link-2913');">assertEncodingDeclaration</a></tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-2914" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2914', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3119"></a><tt class="py-lineno">3119</tt>  <tt class="py-line">        <tt class="py-name">result</tt> <tt class="py-op">=</tt> <tt class="py-name">result</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt id="link-2915" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2915', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'?&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">-</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-2916" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2916', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2917" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2917', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2918" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2918', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3120"></a><tt class="py-lineno">3120</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2919" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2919', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3121"></a><tt class="py-lineno">3121</tt>  <tt class="py-line">                          <tt class="py-name">result</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3122"></a><tt class="py-lineno">3122</tt>  <tt class="py-line"> </tt>
+<a name="L3123"></a><tt class="py-lineno">3123</tt>  <tt class="py-line">    <tt id="link-2920" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2920', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_encoding_8bit_explicit'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit"></a><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-def"><a name="L3124"></a><tt class="py-lineno">3124</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_encoding_8bit_explicit');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_explicit">test_parse_encoding_8bit_explicit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_explicit-expanded"><a name="L3125"></a><tt class="py-lineno">3125</tt>  <tt class="py-line">        <tt id="link-2921" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2879', 'XMLParser', 'link-34');">XMLParser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2880" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2921', 'XMLParser', 'link-34');">XMLParser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2922" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2880', 'XMLParser', 'link-34');">XMLParser</a></tt> </tt>
-<a name="L3077"></a><tt class="py-lineno">3077</tt>  <tt class="py-line"> </tt>
-<a name="L3078"></a><tt class="py-lineno">3078</tt>  <tt class="py-line">        <tt id="link-2881" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2922', 'XMLParser', 'link-34');">XMLParser</a></tt> </tt>
+<a name="L3126"></a><tt class="py-lineno">3126</tt>  <tt class="py-line"> </tt>
+<a name="L3127"></a><tt class="py-lineno">3127</tt>  <tt class="py-line">        <tt id="link-2923" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2881', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2882" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2882', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3079"></a><tt class="py-lineno">3079</tt>  <tt class="py-line">        <tt class="py-name">xml_latin1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2883" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2883', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;%s&lt;/a&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt id="link-2884" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2923', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2924" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2924', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3128"></a><tt class="py-lineno">3128</tt>  <tt class="py-line">        <tt class="py-name">xml_latin1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2925" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2925', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;%s&lt;/a&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt id="link-2926" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2884', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3080"></a><tt class="py-lineno">3080</tt>  <tt class="py-line"> </tt>
-<a name="L3081"></a><tt class="py-lineno">3081</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2885" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2926', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3129"></a><tt class="py-lineno">3129</tt>  <tt class="py-line"> </tt>
+<a name="L3130"></a><tt class="py-lineno">3130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2927" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2885', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2886" class="py-name" targets="Class lxml.etree.ParseError=lxml.etree.ParseError-class.html,Class xml.etree.ElementTree.ParseError=xml.etree.ElementTree.ParseError-class.html"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-2886', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L3082"></a><tt class="py-lineno">3082</tt>  <tt class="py-line">                          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2887" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2927', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2928" class="py-name" targets="Class lxml.etree.ParseError=lxml.etree.ParseError-class.html,Class xml.etree.ElementTree.ParseError=xml.etree.ElementTree.ParseError-class.html"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-2928', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L3131"></a><tt class="py-lineno">3131</tt>  <tt class="py-line">                          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2929" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2887', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2888" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2929', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2930" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2888', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L3083"></a><tt class="py-lineno">3083</tt>  <tt class="py-line">                          <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3084"></a><tt class="py-lineno">3084</tt>  <tt class="py-line"> </tt>
-<a name="L3085"></a><tt class="py-lineno">3085</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2889" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2930', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L3132"></a><tt class="py-lineno">3132</tt>  <tt class="py-line">                          <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3133"></a><tt class="py-lineno">3133</tt>  <tt class="py-line"> </tt>
+<a name="L3134"></a><tt class="py-lineno">3134</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2931" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2889', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2890" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2931', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2932" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2890', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3086"></a><tt class="py-lineno">3086</tt>  <tt class="py-line">                                <tt id="link-2891" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2932', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3135"></a><tt class="py-lineno">3135</tt>  <tt class="py-line">                                <tt id="link-2933" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2891', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-2892" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2933', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-2934" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2892', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"iso-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3087"></a><tt class="py-lineno">3087</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2893" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2893', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3088"></a><tt class="py-lineno">3088</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2894" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2934', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"iso-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3136"></a><tt class="py-lineno">3136</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2935" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2935', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3137"></a><tt class="py-lineno">3137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2936" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2894', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2895" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2936', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2937" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2895', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3089"></a><tt class="py-lineno">3089</tt>  <tt class="py-line"> </tt>
-<a name="L3090"></a><tt class="py-lineno">3090</tt>  <tt class="py-line">    <tt id="link-2896" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2896', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_encoding_8bit_override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parse_encoding_8bit_override"></a><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-def"><a name="L3091"></a><tt class="py-lineno">3091</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_encoding_8bit_override');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-expanded"><a name="L3092"></a><tt class="py-lineno">3092</tt>  <tt class="py-line">        <tt id="link-2897" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2937', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3138"></a><tt class="py-lineno">3138</tt>  <tt class="py-line"> </tt>
+<a name="L3139"></a><tt class="py-lineno">3139</tt>  <tt class="py-line">    <tt id="link-2938" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-2938', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parse_encoding_8bit_override'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parse_encoding_8bit_override"></a><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-def"><a name="L3140"></a><tt class="py-lineno">3140</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parse_encoding_8bit_override');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parse_encoding_8bit_override">test_parse_encoding_8bit_override</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parse_encoding_8bit_override-expanded"><a name="L3141"></a><tt class="py-lineno">3141</tt>  <tt class="py-line">        <tt id="link-2939" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2897', 'XMLParser', 'link-34');">XMLParser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2898" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2939', 'XMLParser', 'link-34');">XMLParser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2940" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2898', 'XMLParser', 'link-34');">XMLParser</a></tt> </tt>
-<a name="L3093"></a><tt class="py-lineno">3093</tt>  <tt class="py-line"> </tt>
-<a name="L3094"></a><tt class="py-lineno">3094</tt>  <tt class="py-line">        <tt id="link-2899" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2940', 'XMLParser', 'link-34');">XMLParser</a></tt> </tt>
+<a name="L3142"></a><tt class="py-lineno">3142</tt>  <tt class="py-line"> </tt>
+<a name="L3143"></a><tt class="py-lineno">3143</tt>  <tt class="py-line">        <tt id="link-2941" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2899', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2900" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2900', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3095"></a><tt class="py-lineno">3095</tt>  <tt class="py-line">        <tt class="py-name">wrong_declaration</tt> <tt class="py-op">=</tt> <tt id="link-2901" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2901', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;?xml version='1.0' encoding='UTF-8'?&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3096"></a><tt class="py-lineno">3096</tt>  <tt class="py-line">        <tt class="py-name">xml_latin1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2902" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2902', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s&lt;a&gt;%s&lt;/a&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">wrong_declaration</tt><tt class="py-op">,</tt> <tt id="link-2903" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2941', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2942" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2942', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3144"></a><tt class="py-lineno">3144</tt>  <tt class="py-line">        <tt class="py-name">wrong_declaration</tt> <tt class="py-op">=</tt> <tt id="link-2943" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2943', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;?xml version='1.0' encoding='UTF-8'?&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3145"></a><tt class="py-lineno">3145</tt>  <tt class="py-line">        <tt class="py-name">xml_latin1</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2944" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2944', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'%s&lt;a&gt;%s&lt;/a&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">wrong_declaration</tt><tt class="py-op">,</tt> <tt id="link-2945" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2903', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3097"></a><tt class="py-lineno">3097</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3098"></a><tt class="py-lineno">3098</tt>  <tt class="py-line"> </tt>
-<a name="L3099"></a><tt class="py-lineno">3099</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2904" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2945', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3146"></a><tt class="py-lineno">3146</tt>  <tt class="py-line">                      <tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3147"></a><tt class="py-lineno">3147</tt>  <tt class="py-line"> </tt>
+<a name="L3148"></a><tt class="py-lineno">3148</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2946" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2904', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2905" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-2905', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L3100"></a><tt class="py-lineno">3100</tt>  <tt class="py-line">                          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2906" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2946', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2947" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-2947', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L3149"></a><tt class="py-lineno">3149</tt>  <tt class="py-line">                          <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2948" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2906', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2907" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2948', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2949" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2907', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L3101"></a><tt class="py-lineno">3101</tt>  <tt class="py-line">                          <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3102"></a><tt class="py-lineno">3102</tt>  <tt class="py-line"> </tt>
-<a name="L3103"></a><tt class="py-lineno">3103</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2908" class="py-name"><a title="lxml.etree
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2949', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L3150"></a><tt class="py-lineno">3150</tt>  <tt class="py-line">                          <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3151"></a><tt class="py-lineno">3151</tt>  <tt class="py-line"> </tt>
+<a name="L3152"></a><tt class="py-lineno">3152</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2950" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2908', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2909" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2950', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2951" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2909', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3104"></a><tt class="py-lineno">3104</tt>  <tt class="py-line">                                <tt id="link-2910" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-2951', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">xml_latin1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3153"></a><tt class="py-lineno">3153</tt>  <tt class="py-line">                                <tt id="link-2952" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2910', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-2911" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-2952', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-2953" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2911', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"iso-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3105"></a><tt class="py-lineno">3105</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2912" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2912', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3106"></a><tt class="py-lineno">3106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2913" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2953', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">"iso-8859-1"</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3154"></a><tt class="py-lineno">3154</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2954" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-2954', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3155"></a><tt class="py-lineno">3155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2955" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2913', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2914" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2955', 'text', 'link-45');">text</a></tt><tt class="py-op">,</tt> <tt id="link-2956" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2914', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3107"></a><tt class="py-lineno">3107</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._test_wrong_unicode_encoding"></a><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-def"><a name="L3108"></a><tt class="py-lineno">3108</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._test_wrong_unicode_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase._test_wrong_unicode_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding">_test_wrong_unicode_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-expanded"><a name="L3109"></a><tt class="py-lineno">3109</tt>  <tt class="py-line">        <tt class="py-comment"># raise error on wrong encoding declaration in unicode strings</tt> </tt>
-<a name="L3110"></a><tt class="py-lineno">3110</tt>  <tt class="py-line">        <tt id="link-2915" class="py-name"><a title="lxml.etree.XML
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2956', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3156"></a><tt class="py-lineno">3156</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._test_wrong_unicode_encoding"></a><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-def"><a name="L3157"></a><tt class="py-lineno">3157</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._test_wrong_unicode_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase._test_wrong_unicode_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding">_test_wrong_unicode_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._test_wrong_unicode_encoding-expanded"><a name="L3158"></a><tt class="py-lineno">3158</tt>  <tt class="py-line">        <tt class="py-comment"># raise error on wrong encoding declaration in unicode strings</tt> </tt>
+<a name="L3159"></a><tt class="py-lineno">3159</tt>  <tt class="py-line">        <tt id="link-2957" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2915', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2916" class="py-name"><a title="lxml.etree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2957', 'XML', 'link-259');">XML</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2958" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2916', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2917" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2958', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2959" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2917', 'XML', 'link-259');">XML</a></tt> </tt>
-<a name="L3111"></a><tt class="py-lineno">3111</tt>  <tt class="py-line">        <tt class="py-name">test_utf</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2918" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2918', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
-<a name="L3112"></a><tt class="py-lineno">3112</tt>  <tt class="py-line">                    <tt id="link-2919" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2919', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3113"></a><tt class="py-lineno">3113</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2920" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2959', 'XML', 'link-259');">XML</a></tt> </tt>
+<a name="L3160"></a><tt class="py-lineno">3160</tt>  <tt class="py-line">        <tt class="py-name">test_utf</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-2960" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2960', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L3161"></a><tt class="py-lineno">3161</tt>  <tt class="py-line">                    <tt id="link-2961" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2961', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3162"></a><tt class="py-lineno">3162</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">SyntaxError</tt><tt class="py-op">,</tt> <tt id="link-2962" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2920', 'XML', 'link-259');">XML</a></tt><tt class="py-op">,</tt> <tt class="py-name">test_utf</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3114"></a><tt class="py-lineno">3114</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_write_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-def"><a name="L3115"></a><tt class="py-lineno">3115</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_write_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_write_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_write_default_encoding">test_encoding_write_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-expanded"><a name="L3116"></a><tt class="py-lineno">3116</tt>  <tt class="py-line">        <tt id="link-2921" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-2962', 'XML', 'link-259');">XML</a></tt><tt class="py-op">,</tt> <tt class="py-name">test_utf</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3163"></a><tt class="py-lineno">3163</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_write_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-def"><a name="L3164"></a><tt class="py-lineno">3164</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_write_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_write_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_write_default_encoding">test_encoding_write_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_write_default_encoding-expanded"><a name="L3165"></a><tt class="py-lineno">3165</tt>  <tt class="py-line">        <tt id="link-2963" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2921', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2922" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2963', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2964" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2922', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2923" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2964', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2965" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2923', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3117"></a><tt class="py-lineno">3117</tt>  <tt class="py-line">        <tt id="link-2924" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2965', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3166"></a><tt class="py-lineno">3166</tt>  <tt class="py-line">        <tt id="link-2966" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2924', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2925" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2966', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2967" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2925', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2926" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2967', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2968" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2926', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3118"></a><tt class="py-lineno">3118</tt>  <tt class="py-line"> </tt>
-<a name="L3119"></a><tt class="py-lineno">3119</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2927" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2968', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3167"></a><tt class="py-lineno">3167</tt>  <tt class="py-line"> </tt>
+<a name="L3168"></a><tt class="py-lineno">3168</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2969" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2927', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3120"></a><tt class="py-lineno">3120</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2928" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2969', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3169"></a><tt class="py-lineno">3169</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2970" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2928', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2929" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2929', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3121"></a><tt class="py-lineno">3121</tt>  <tt class="py-line">         </tt>
-<a name="L3122"></a><tt class="py-lineno">3122</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3123"></a><tt class="py-lineno">3123</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2930" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2970', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2971" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2971', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3170"></a><tt class="py-lineno">3170</tt>  <tt class="py-line">         </tt>
+<a name="L3171"></a><tt class="py-lineno">3171</tt>  <tt class="py-line">        <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3172"></a><tt class="py-lineno">3172</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-2972" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2930', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2931" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2931', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3124"></a><tt class="py-lineno">3124</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2932" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2932', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
-<a name="L3125"></a><tt class="py-lineno">3125</tt>  <tt class="py-line">        <tt id="link-2933" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-2933', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2934" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2934', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2935" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2935', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2936" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2936', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3126"></a><tt class="py-lineno">3126</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L3127"></a><tt class="py-lineno">3127</tt>  <tt class="py-line">            <tt id="link-2937" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2937', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ASCII'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3128"></a><tt class="py-lineno">3128</tt>  <tt class="py-line">            <tt id="link-2938" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-2938', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3129"></a><tt class="py-lineno">3129</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_tostring"></a><div id="_ETreeTestCaseBase.test_encoding_tostring-def"><a name="L3130"></a><tt class="py-lineno">3130</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring">test_encoding_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring-expanded"><a name="L3131"></a><tt class="py-lineno">3131</tt>  <tt class="py-line">        <tt id="link-2939" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-2972', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-2973" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-2973', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3173"></a><tt class="py-lineno">3173</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-2974" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-2974', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">)</tt> </tt>
+<a name="L3174"></a><tt class="py-lineno">3174</tt>  <tt class="py-line">        <tt id="link-2975" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-2975', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt class="py-name">getvalue</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-2976" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-2976', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-2977" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2977', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt><tt id="link-2978" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-2978', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3175"></a><tt class="py-lineno">3175</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L3176"></a><tt class="py-lineno">3176</tt>  <tt class="py-line">            <tt id="link-2979" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2979', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'ASCII'</tt><tt class="py-op">,</tt> <tt class="py-string">'xmlcharrefreplace'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3177"></a><tt class="py-lineno">3177</tt>  <tt class="py-line">            <tt id="link-2980" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-2980', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3178"></a><tt class="py-lineno">3178</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_tostring"></a><div id="_ETreeTestCaseBase.test_encoding_tostring-def"><a name="L3179"></a><tt class="py-lineno">3179</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring">test_encoding_tostring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_tostring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring-expanded"><a name="L3180"></a><tt class="py-lineno">3180</tt>  <tt class="py-line">        <tt id="link-2981" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2939', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2940" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2981', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2982" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2940', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2941" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2982', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2983" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2941', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3132"></a><tt class="py-lineno">3132</tt>  <tt class="py-line">        <tt id="link-2942" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2942', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2943" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2983', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3181"></a><tt class="py-lineno">3181</tt>  <tt class="py-line">        <tt id="link-2984" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2984', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2985" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2943', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2944" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2944', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3133"></a><tt class="py-lineno">3133</tt>  <tt class="py-line"> </tt>
-<a name="L3134"></a><tt class="py-lineno">3134</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2945" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2985', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2986" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2986', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3182"></a><tt class="py-lineno">3182</tt>  <tt class="py-line"> </tt>
+<a name="L3183"></a><tt class="py-lineno">3183</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2987" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2945', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3135"></a><tt class="py-lineno">3135</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2946" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2987', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3184"></a><tt class="py-lineno">3184</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2988" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2946', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2947" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2947', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3136"></a><tt class="py-lineno">3136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2948" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2948', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3137"></a><tt class="py-lineno">3137</tt>  <tt class="py-line">                         <tt id="link-2949" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2949', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt id="link-2950" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2988', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2989" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2989', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3185"></a><tt class="py-lineno">3185</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2990" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2990', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&#248;k p&#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3186"></a><tt class="py-lineno">3186</tt>  <tt class="py-line">                         <tt id="link-2991" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2991', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt id="link-2992" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2950', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3138"></a><tt class="py-lineno">3138</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_tostring_unknown"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-def"><a name="L3139"></a><tt class="py-lineno">3139</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_unknown-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_unknown');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown">test_encoding_tostring_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-expanded"><a name="L3140"></a><tt class="py-lineno">3140</tt>  <tt class="py-line">        <tt id="link-2951" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2992', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3187"></a><tt class="py-lineno">3187</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_tostring_unknown"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-def"><a name="L3188"></a><tt class="py-lineno">3188</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_unknown-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_unknown');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_unknown">test_encoding_tostring_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_unknown-expanded"><a name="L3189"></a><tt class="py-lineno">3189</tt>  <tt class="py-line">        <tt id="link-2993" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2951', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2952" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2993', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2994" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2952', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2953" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2994', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2995" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2953', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3141"></a><tt class="py-lineno">3141</tt>  <tt class="py-line">        <tt id="link-2954" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2954', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2955" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2995', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3190"></a><tt class="py-lineno">3190</tt>  <tt class="py-line">        <tt id="link-2996" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2996', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2997" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2955', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2956" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2956', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3142"></a><tt class="py-lineno">3142</tt>  <tt class="py-line">         </tt>
-<a name="L3143"></a><tt class="py-lineno">3143</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2957" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2997', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2998" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2998', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3191"></a><tt class="py-lineno">3191</tt>  <tt class="py-line">         </tt>
+<a name="L3192"></a><tt class="py-lineno">3192</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2999" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2957', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3144"></a><tt class="py-lineno">3144</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-2958" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2999', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3193"></a><tt class="py-lineno">3193</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3000" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2958', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2959" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2959', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3145"></a><tt class="py-lineno">3145</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">LookupError</tt><tt class="py-op">,</tt> <tt id="link-2960" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2960', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt> </tt>
-<a name="L3146"></a><tt class="py-lineno">3146</tt>  <tt class="py-line">                          <tt id="link-2961" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3000', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3001" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3001', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3194"></a><tt class="py-lineno">3194</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">LookupError</tt><tt class="py-op">,</tt> <tt id="link-3002" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3002', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">,</tt> </tt>
+<a name="L3195"></a><tt class="py-lineno">3195</tt>  <tt class="py-line">                          <tt id="link-3003" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2961', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'Invalid Encoding'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3147"></a><tt class="py-lineno">3147</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_tostring_sub"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-def"><a name="L3148"></a><tt class="py-lineno">3148</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_sub-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_sub');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub">test_encoding_tostring_sub</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-expanded"><a name="L3149"></a><tt class="py-lineno">3149</tt>  <tt class="py-line">        <tt id="link-2962" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3003', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'Invalid Encoding'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3196"></a><tt class="py-lineno">3196</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_tostring_sub"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-def"><a name="L3197"></a><tt class="py-lineno">3197</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_sub-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_sub');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub">test_encoding_tostring_sub</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub-expanded"><a name="L3198"></a><tt class="py-lineno">3198</tt>  <tt class="py-line">        <tt id="link-3004" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2962', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2963" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3004', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3005" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2963', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2964" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3005', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3006" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2964', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3150"></a><tt class="py-lineno">3150</tt>  <tt class="py-line">        <tt id="link-2965" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2965', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2966" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3006', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3199"></a><tt class="py-lineno">3199</tt>  <tt class="py-line">        <tt id="link-3007" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3007', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3008" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2966', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2967" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2967', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L3151"></a><tt class="py-lineno">3151</tt>  <tt class="py-line">        <tt id="link-2968" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2968', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2969" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3008', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3009" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3009', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L3200"></a><tt class="py-lineno">3200</tt>  <tt class="py-line">        <tt id="link-3010" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3010', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3011" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2969', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2970" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2970', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3152"></a><tt class="py-lineno">3152</tt>  <tt class="py-line"> </tt>
-<a name="L3153"></a><tt class="py-lineno">3153</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2971" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3011', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3012" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3012', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3201"></a><tt class="py-lineno">3201</tt>  <tt class="py-line"> </tt>
+<a name="L3202"></a><tt class="py-lineno">3202</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3013" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2971', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3154"></a><tt class="py-lineno">3154</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2972" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2972', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3155"></a><tt class="py-lineno">3155</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2973" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3013', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3203"></a><tt class="py-lineno">3203</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3014" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3014', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3204"></a><tt class="py-lineno">3204</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3015" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2973', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2974" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2974', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3156"></a><tt class="py-lineno">3156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2975" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2975', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&#248;k p&#229; nettet&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3157"></a><tt class="py-lineno">3157</tt>  <tt class="py-line">                         <tt id="link-2976" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2976', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-2977" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3015', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3016" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3016', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3205"></a><tt class="py-lineno">3205</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3017" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3017', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&#248;k p&#229; nettet&lt;/b&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3206"></a><tt class="py-lineno">3206</tt>  <tt class="py-line">                         <tt id="link-3018" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3018', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-3019" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2977', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3158"></a><tt class="py-lineno">3158</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_tostring_sub_tail"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-def"><a name="L3159"></a><tt class="py-lineno">3159</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_sub_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-expanded"><a name="L3160"></a><tt class="py-lineno">3160</tt>  <tt class="py-line">        <tt id="link-2978" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3019', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3207"></a><tt class="py-lineno">3207</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_tostring_sub_tail"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-def"><a name="L3208"></a><tt class="py-lineno">3208</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_sub_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_sub_tail">test_encoding_tostring_sub_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_sub_tail-expanded"><a name="L3209"></a><tt class="py-lineno">3209</tt>  <tt class="py-line">        <tt id="link-3020" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2978', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2979" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3020', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3021" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2979', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2980" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3021', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3022" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2980', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3161"></a><tt class="py-lineno">3161</tt>  <tt class="py-line">        <tt id="link-2981" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2981', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2982" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3022', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3210"></a><tt class="py-lineno">3210</tt>  <tt class="py-line">        <tt id="link-3023" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3023', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3024" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2982', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2983" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2983', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L3162"></a><tt class="py-lineno">3162</tt>  <tt class="py-line">        <tt id="link-2984" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2984', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2985" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3024', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3025" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3025', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L3211"></a><tt class="py-lineno">3211</tt>  <tt class="py-line">        <tt id="link-3026" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3026', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3027" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2985', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2986" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2986', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3163"></a><tt class="py-lineno">3163</tt>  <tt class="py-line"> </tt>
-<a name="L3164"></a><tt class="py-lineno">3164</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-2987" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3027', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3028" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3028', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3212"></a><tt class="py-lineno">3212</tt>  <tt class="py-line"> </tt>
+<a name="L3213"></a><tt class="py-lineno">3213</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3029" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2987', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3165"></a><tt class="py-lineno">3165</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-2988" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2988', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3166"></a><tt class="py-lineno">3166</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2989" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3029', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3214"></a><tt class="py-lineno">3214</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3030" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3030', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3215"></a><tt class="py-lineno">3215</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3031" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-2989', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-2990" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2990', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3167"></a><tt class="py-lineno">3167</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-2991" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-2991', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-2992" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2992', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3168"></a><tt class="py-lineno">3168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-2993" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-2993', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&#248;k p&#229; nettet&lt;/b&gt;S&#248;k'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3169"></a><tt class="py-lineno">3169</tt>  <tt class="py-line">                         <tt id="link-2994" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-2994', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-2995" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3031', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3032" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3032', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3216"></a><tt class="py-lineno">3216</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3033" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3033', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt id="link-3034" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3034', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3217"></a><tt class="py-lineno">3217</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3035" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3035', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&#248;k p&#229; nettet&lt;/b&gt;S&#248;k'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'UTF-8'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3218"></a><tt class="py-lineno">3218</tt>  <tt class="py-line">                         <tt id="link-3036" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3036', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">,</tt> <tt id="link-3037" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-2995', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3170"></a><tt class="py-lineno">3170</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_encoding_tostring_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-def"><a name="L3171"></a><tt class="py-lineno">3171</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding">test_encoding_tostring_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-expanded"><a name="L3172"></a><tt class="py-lineno">3172</tt>  <tt class="py-line">        <tt id="link-2996" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3037', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt class="py-string">'utf-8'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3219"></a><tt class="py-lineno">3219</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_encoding_tostring_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-def"><a name="L3220"></a><tt class="py-lineno">3220</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_tostring_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_tostring_default_encoding">test_encoding_tostring_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_tostring_default_encoding-expanded"><a name="L3221"></a><tt class="py-lineno">3221</tt>  <tt class="py-line">        <tt id="link-3038" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2996', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-2997" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3038', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3039" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-2997', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-2998" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3039', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3040" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-2998', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3173"></a><tt class="py-lineno">3173</tt>  <tt class="py-line">        <tt id="link-2999" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-2999', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3000" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3040', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3222"></a><tt class="py-lineno">3222</tt>  <tt class="py-line">        <tt id="link-3041" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3041', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3042" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3000', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3001" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3001', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L3174"></a><tt class="py-lineno">3174</tt>  <tt class="py-line">        <tt id="link-3002" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3002', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3003" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3042', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3043" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3043', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L3223"></a><tt class="py-lineno">3223</tt>  <tt class="py-line">        <tt id="link-3044" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3044', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3045" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3003', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3004" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3004', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3175"></a><tt class="py-lineno">3175</tt>  <tt class="py-line"> </tt>
-<a name="L3176"></a><tt class="py-lineno">3176</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3005" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3045', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3046" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3046', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3224"></a><tt class="py-lineno">3224</tt>  <tt class="py-line"> </tt>
+<a name="L3225"></a><tt class="py-lineno">3225</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3047" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3005', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3177"></a><tt class="py-lineno">3177</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3006" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3047', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3226"></a><tt class="py-lineno">3226</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3048" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3006', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3007" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3007', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3178"></a><tt class="py-lineno">3178</tt>  <tt class="py-line"> </tt>
-<a name="L3179"></a><tt class="py-lineno">3179</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-3008" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3008', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&amp;#248;k p&amp;#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3180"></a><tt class="py-lineno">3180</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L3181"></a><tt class="py-lineno">3181</tt>  <tt class="py-line">            <tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
-<a name="L3182"></a><tt class="py-lineno">3182</tt>  <tt class="py-line">            <tt id="link-3009" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3009', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3183"></a><tt class="py-lineno">3183</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-def"><a name="L3184"></a><tt class="py-lineno">3184</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-expanded"><a name="L3185"></a><tt class="py-lineno">3185</tt>  <tt class="py-line">        <tt id="link-3010" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3048', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3049" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3049', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3227"></a><tt class="py-lineno">3227</tt>  <tt class="py-line"> </tt>
+<a name="L3228"></a><tt class="py-lineno">3228</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-3050" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3050', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;S&amp;#248;k p&amp;#229; nettet&lt;/a&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3229"></a><tt class="py-lineno">3229</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L3230"></a><tt class="py-lineno">3230</tt>  <tt class="py-line">            <tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
+<a name="L3231"></a><tt class="py-lineno">3231</tt>  <tt class="py-line">            <tt id="link-3051" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3051', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3232"></a><tt class="py-lineno">3232</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding"></a><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-def"><a name="L3233"></a><tt class="py-lineno">3233</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_sub_tostring_default_encoding">test_encoding_sub_tostring_default_encoding</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_sub_tostring_default_encoding-expanded"><a name="L3234"></a><tt class="py-lineno">3234</tt>  <tt class="py-line">        <tt id="link-3052" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3010', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3011" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3052', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3053" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3011', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3012" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3053', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3054" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3012', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3186"></a><tt class="py-lineno">3186</tt>  <tt class="py-line">        <tt id="link-3013" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3013', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3014" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3054', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3235"></a><tt class="py-lineno">3235</tt>  <tt class="py-line">        <tt id="link-3055" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3055', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3056" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3014', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3015" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3015', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L3187"></a><tt class="py-lineno">3187</tt>  <tt class="py-line">        <tt id="link-3016" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3016', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3017" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3056', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3057" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3057', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L3236"></a><tt class="py-lineno">3236</tt>  <tt class="py-line">        <tt id="link-3058" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3058', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3059" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3017', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3018" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3018', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3188"></a><tt class="py-lineno">3188</tt>  <tt class="py-line"> </tt>
-<a name="L3189"></a><tt class="py-lineno">3189</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3019" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3059', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3060" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3060', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3237"></a><tt class="py-lineno">3237</tt>  <tt class="py-line"> </tt>
+<a name="L3238"></a><tt class="py-lineno">3238</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3061" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3019', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3190"></a><tt class="py-lineno">3190</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3020" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3020', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3191"></a><tt class="py-lineno">3191</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3021" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3061', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3239"></a><tt class="py-lineno">3239</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3062" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3062', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3240"></a><tt class="py-lineno">3240</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3063" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3021', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3022" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3022', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3192"></a><tt class="py-lineno">3192</tt>  <tt class="py-line"> </tt>
-<a name="L3193"></a><tt class="py-lineno">3193</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-3023" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3023', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&amp;#248;k p&amp;#229; nettet&lt;/b&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3194"></a><tt class="py-lineno">3194</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L3195"></a><tt class="py-lineno">3195</tt>  <tt class="py-line">            <tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
-<a name="L3196"></a><tt class="py-lineno">3196</tt>  <tt class="py-line">            <tt id="link-3024" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3024', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3197"></a><tt class="py-lineno">3197</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_8bit_xml"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-def"><a name="L3198"></a><tt class="py-lineno">3198</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_xml-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_xml">test_encoding_8bit_xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-expanded"><a name="L3199"></a><tt class="py-lineno">3199</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3025" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3025', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3200"></a><tt class="py-lineno">3200</tt>  <tt class="py-line">        <tt id="link-3026" class="py-name" targets="Variable lxml.tests.test_unicode.uxml=lxml.tests.test_unicode-module.html#uxml"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3026', 'uxml', 'link-3026');">uxml</a></tt> <tt class="py-op">=</tt> <tt id="link-3027" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3027', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt> </tt>
-<a name="L3201"></a><tt class="py-lineno">3201</tt>  <tt class="py-line">        <tt class="py-name">prologue</tt> <tt class="py-op">=</tt> <tt id="link-3028" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3028', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1" ?&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3202"></a><tt class="py-lineno">3202</tt>  <tt class="py-line">        <tt class="py-name">isoxml</tt> <tt class="py-op">=</tt> <tt class="py-name">prologue</tt> <tt class="py-op">+</tt> <tt id="link-3029" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3029', 'uxml', 'link-3026');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3203"></a><tt class="py-lineno">3203</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3030" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3063', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt id="link-3064" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3064', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3241"></a><tt class="py-lineno">3241</tt>  <tt class="py-line"> </tt>
+<a name="L3242"></a><tt class="py-lineno">3242</tt>  <tt class="py-line">        <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt id="link-3065" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3065', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b&gt;S&amp;#248;k p&amp;#229; nettet&lt;/b&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3243"></a><tt class="py-lineno">3243</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L3244"></a><tt class="py-lineno">3244</tt>  <tt class="py-line">            <tt class="py-name">expected</tt><tt class="py-op">,</tt> </tt>
+<a name="L3245"></a><tt class="py-lineno">3245</tt>  <tt class="py-line">            <tt id="link-3066" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3066', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3246"></a><tt class="py-lineno">3246</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_8bit_xml"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-def"><a name="L3247"></a><tt class="py-lineno">3247</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_xml-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_xml">test_encoding_8bit_xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_xml-expanded"><a name="L3248"></a><tt class="py-lineno">3248</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3067" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3067', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3249"></a><tt class="py-lineno">3249</tt>  <tt class="py-line">        <tt id="link-3068" class="py-name" targets="Variable lxml.tests.test_unicode.uxml=lxml.tests.test_unicode-module.html#uxml"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3068', 'uxml', 'link-3068');">uxml</a></tt> <tt class="py-op">=</tt> <tt id="link-3069" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3069', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt> </tt>
+<a name="L3250"></a><tt class="py-lineno">3250</tt>  <tt class="py-line">        <tt class="py-name">prologue</tt> <tt class="py-op">=</tt> <tt id="link-3070" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3070', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1" ?&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3251"></a><tt class="py-lineno">3251</tt>  <tt class="py-line">        <tt class="py-name">isoxml</tt> <tt class="py-op">=</tt> <tt class="py-name">prologue</tt> <tt class="py-op">+</tt> <tt id="link-3071" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3071', 'uxml', 'link-3068');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3252"></a><tt class="py-lineno">3252</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3072" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3030', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3031" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3072', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3073" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3031', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">isoxml</tt><tt class="py-op">)</tt> </tt>
-<a name="L3204"></a><tt class="py-lineno">3204</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3032" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3073', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt class="py-name">isoxml</tt><tt class="py-op">)</tt> </tt>
+<a name="L3253"></a><tt class="py-lineno">3253</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3074" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3032', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3205"></a><tt class="py-lineno">3205</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_utf8_bom"></a><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-def"><a name="L3206"></a><tt class="py-lineno">3206</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_utf8_bom-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_utf8_bom');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_utf8_bom">test_encoding_utf8_bom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-expanded"><a name="L3207"></a><tt class="py-lineno">3207</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3033" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3033', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3208"></a><tt class="py-lineno">3208</tt>  <tt class="py-line">        <tt id="link-3034" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3034', 'uxml', 'link-3026');">uxml</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-3035" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3035', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="UTF-8"?&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
-<a name="L3209"></a><tt class="py-lineno">3209</tt>  <tt class="py-line">                <tt id="link-3036" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3036', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt><tt class="py-op">)</tt> </tt>
-<a name="L3210"></a><tt class="py-lineno">3210</tt>  <tt class="py-line">        <tt class="py-name">bom</tt> <tt class="py-op">=</tt> <tt id="link-3037" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3037', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\\xEF\\xBB\\xBF'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"unicode_escape"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"latin1"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3211"></a><tt class="py-lineno">3211</tt>  <tt class="py-line">        <tt id="link-3038" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-3038', 'xml', 'link-2491');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-name">bom</tt> <tt class="py-op">+</tt> <tt id="link-3039" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3039', 'uxml', 'link-3026');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3212"></a><tt class="py-lineno">3212</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-3040" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3074', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3254"></a><tt class="py-lineno">3254</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_utf8_bom"></a><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-def"><a name="L3255"></a><tt class="py-lineno">3255</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_utf8_bom-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_utf8_bom');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_utf8_bom">test_encoding_utf8_bom</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_utf8_bom-expanded"><a name="L3256"></a><tt class="py-lineno">3256</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3075" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3075', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3257"></a><tt class="py-lineno">3257</tt>  <tt class="py-line">        <tt id="link-3076" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3076', 'uxml', 'link-3068');">uxml</a></tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt id="link-3077" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3077', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="UTF-8"?&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">+</tt> </tt>
+<a name="L3258"></a><tt class="py-lineno">3258</tt>  <tt class="py-line">                <tt id="link-3078" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3078', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt><tt class="py-op">)</tt> </tt>
+<a name="L3259"></a><tt class="py-lineno">3259</tt>  <tt class="py-line">        <tt class="py-name">bom</tt> <tt class="py-op">=</tt> <tt id="link-3079" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3079', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\\xEF\\xBB\\xBF'</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">decode</tt><tt class="py-op">(</tt><tt class="py-string">"unicode_escape"</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"latin1"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3260"></a><tt class="py-lineno">3260</tt>  <tt class="py-line">        <tt id="link-3080" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-3080', 'xml', 'link-2533');">xml</a></tt> <tt class="py-op">=</tt> <tt class="py-name">bom</tt> <tt class="py-op">+</tt> <tt id="link-3081" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3081', 'uxml', 'link-3068');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">"utf-8"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3261"></a><tt class="py-lineno">3261</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-3082" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3040', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3041" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3082', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3083" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3041', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-3042" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-3042', 'xml', 'link-2491');">xml</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3213"></a><tt class="py-lineno">3213</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3043" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3083', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-3084" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.xml" class="py-name" href="#" onclick="return doclink('link-3084', 'xml', 'link-2533');">xml</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3262"></a><tt class="py-lineno">3262</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3085" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3043', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3214"></a><tt class="py-lineno">3214</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-def"><a name="L3215"></a><tt class="py-lineno">3215</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_parse_stringio');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio">test_encoding_8bit_parse_stringio</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-expanded"><a name="L3216"></a><tt class="py-lineno">3216</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3044" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3044', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3217"></a><tt class="py-lineno">3217</tt>  <tt class="py-line">        <tt id="link-3045" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3045', 'uxml', 'link-3026');">uxml</a></tt> <tt class="py-op">=</tt> <tt id="link-3046" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3046', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt> </tt>
-<a name="L3218"></a><tt class="py-lineno">3218</tt>  <tt class="py-line">        <tt class="py-name">prologue</tt> <tt class="py-op">=</tt> <tt id="link-3047" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3047', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1" ?&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3219"></a><tt class="py-lineno">3219</tt>  <tt class="py-line">        <tt class="py-name">isoxml</tt> <tt class="py-op">=</tt> <tt class="py-name">prologue</tt> <tt class="py-op">+</tt> <tt id="link-3048" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3048', 'uxml', 'link-3026');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3220"></a><tt class="py-lineno">3220</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3049" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3085', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3263"></a><tt class="py-lineno">3263</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio"></a><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-def"><a name="L3264"></a><tt class="py-lineno">3264</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-toggle" onclick="return toggle('_ETreeTestCaseBase.test_encoding_8bit_parse_stringio');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_encoding_8bit_parse_stringio">test_encoding_8bit_parse_stringio</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_encoding_8bit_parse_stringio-expanded"><a name="L3265"></a><tt class="py-lineno">3265</tt>  <tt class="py-line">        <tt class="py-name">utext</tt> <tt class="py-op">=</tt> <tt id="link-3086" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3086', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'S&#248;k p&#229; nettet'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3266"></a><tt class="py-lineno">3266</tt>  <tt class="py-line">        <tt id="link-3087" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3087', 'uxml', 'link-3068');">uxml</a></tt> <tt class="py-op">=</tt> <tt id="link-3088" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3088', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;p&gt;%s&lt;/p&gt;'</tt><tt class="py-op">)</tt> <tt class="py-op">%</tt> <tt class="py-name">utext</tt> </tt>
+<a name="L3267"></a><tt class="py-lineno">3267</tt>  <tt class="py-line">        <tt class="py-name">prologue</tt> <tt class="py-op">=</tt> <tt id="link-3089" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3089', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version="1.0" encoding="iso-8859-1" ?&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3268"></a><tt class="py-lineno">3268</tt>  <tt class="py-line">        <tt class="py-name">isoxml</tt> <tt class="py-op">=</tt> <tt class="py-name">prologue</tt> <tt class="py-op">+</tt> <tt id="link-3090" class="py-name"><a title="lxml.tests.test_unicode.uxml" class="py-name" href="#" onclick="return doclink('link-3090', 'uxml', 'link-3068');">uxml</a></tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt class="py-string">'iso-8859-1'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3269"></a><tt class="py-lineno">3269</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3091" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3049', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3050" class="py-name"><a title="lxml.etree._ElementTree.parse
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3091', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3092" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-3050', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">isoxml</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3051" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3051', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3221"></a><tt class="py-lineno">3221</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3052" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-3092', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-name">isoxml</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3093" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3093', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3270"></a><tt class="py-lineno">3270</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">utext</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3094" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3052', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3222"></a><tt class="py-lineno">3222</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_elementtree"></a><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-def"><a name="L3223"></a><tt class="py-lineno">3223</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_elementtree-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_elementtree">test_deepcopy_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-expanded"><a name="L3224"></a><tt class="py-lineno">3224</tt>  <tt class="py-line">        <tt id="link-3053" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3094', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3271"></a><tt class="py-lineno">3271</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_elementtree"></a><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-def"><a name="L3272"></a><tt class="py-lineno">3272</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_elementtree-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_elementtree">test_deepcopy_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_elementtree-expanded"><a name="L3273"></a><tt class="py-lineno">3273</tt>  <tt class="py-line">        <tt id="link-3095" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3053', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3054" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3095', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3096" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3054', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3055" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3096', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3097" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3055', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3225"></a><tt class="py-lineno">3225</tt>  <tt class="py-line">        <tt id="link-3056" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3097', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3274"></a><tt class="py-lineno">3274</tt>  <tt class="py-line">        <tt id="link-3098" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3056', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3057" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3098', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3099" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3057', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3058" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3099', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3100" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3058', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3226"></a><tt class="py-lineno">3226</tt>  <tt class="py-line"> </tt>
-<a name="L3227"></a><tt class="py-lineno">3227</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3059" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3100', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3275"></a><tt class="py-lineno">3275</tt>  <tt class="py-line"> </tt>
+<a name="L3276"></a><tt class="py-lineno">3276</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3101" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3059', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3228"></a><tt class="py-lineno">3228</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3060" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3101', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3277"></a><tt class="py-lineno">3277</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3102" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3060', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Foo"</tt> </tt>
-<a name="L3229"></a><tt class="py-lineno">3229</tt>  <tt class="py-line">        <tt class="py-name">atree</tt> <tt class="py-op">=</tt> <tt id="link-3061" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3102', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"Foo"</tt> </tt>
+<a name="L3278"></a><tt class="py-lineno">3278</tt>  <tt class="py-line">        <tt class="py-name">atree</tt> <tt class="py-op">=</tt> <tt id="link-3103" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3061', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3230"></a><tt class="py-lineno">3230</tt>  <tt class="py-line"> </tt>
-<a name="L3231"></a><tt class="py-lineno">3231</tt>  <tt class="py-line">        <tt class="py-name">btree</tt> <tt class="py-op">=</tt> <tt id="link-3062" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3103', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3279"></a><tt class="py-lineno">3279</tt>  <tt class="py-line"> </tt>
+<a name="L3280"></a><tt class="py-lineno">3280</tt>  <tt class="py-line">        <tt class="py-name">btree</tt> <tt class="py-op">=</tt> <tt id="link-3104" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3062', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
-<a name="L3232"></a><tt class="py-lineno">3232</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Foo"</tt><tt class="py-op">,</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3063" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3063', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3064" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3104', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
+<a name="L3281"></a><tt class="py-lineno">3281</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Foo"</tt><tt class="py-op">,</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3105" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3105', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3106" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3064', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3233"></a><tt class="py-lineno">3233</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Foo"</tt><tt class="py-op">,</tt> <tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3065" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3065', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3066" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3106', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3282"></a><tt class="py-lineno">3282</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"Foo"</tt><tt class="py-op">,</tt> <tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3107" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3107', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3108" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3066', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3234"></a><tt class="py-lineno">3234</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
-<a name="L3235"></a><tt class="py-lineno">3235</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3067" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3067', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3068" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3068', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3236"></a><tt class="py-lineno">3236</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy"></a><div id="_ETreeTestCaseBase.test_deepcopy-def"><a name="L3237"></a><tt class="py-lineno">3237</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy-expanded"><a name="L3238"></a><tt class="py-lineno">3238</tt>  <tt class="py-line">        <tt id="link-3069" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3108', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3283"></a><tt class="py-lineno">3283</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
+<a name="L3284"></a><tt class="py-lineno">3284</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3109" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3109', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3110" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3110', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3285"></a><tt class="py-lineno">3285</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy"></a><div id="_ETreeTestCaseBase.test_deepcopy-def"><a name="L3286"></a><tt class="py-lineno">3286</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy">test_deepcopy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy-expanded"><a name="L3287"></a><tt class="py-lineno">3287</tt>  <tt class="py-line">        <tt id="link-3111" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3069', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3070" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3111', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3112" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3070', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3071" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3112', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3113" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3071', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3239"></a><tt class="py-lineno">3239</tt>  <tt class="py-line">         </tt>
-<a name="L3240"></a><tt class="py-lineno">3240</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3072" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3113', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3288"></a><tt class="py-lineno">3288</tt>  <tt class="py-line">         </tt>
+<a name="L3289"></a><tt class="py-lineno">3289</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3114" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3072', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3241"></a><tt class="py-lineno">3241</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3073" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3114', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3290"></a><tt class="py-lineno">3290</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3115" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3073', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
-<a name="L3242"></a><tt class="py-lineno">3242</tt>  <tt class="py-line"> </tt>
-<a name="L3243"></a><tt class="py-lineno">3243</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3074" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3115', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
+<a name="L3291"></a><tt class="py-lineno">3291</tt>  <tt class="py-line"> </tt>
+<a name="L3292"></a><tt class="py-lineno">3292</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3116" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3074', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3244"></a><tt class="py-lineno">3244</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3075" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3116', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3293"></a><tt class="py-lineno">3293</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3117" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3075', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3245"></a><tt class="py-lineno">3245</tt>  <tt class="py-line">         </tt>
-<a name="L3246"></a><tt class="py-lineno">3246</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3076" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3117', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3294"></a><tt class="py-lineno">3294</tt>  <tt class="py-line">         </tt>
+<a name="L3295"></a><tt class="py-lineno">3295</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3118" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3076', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
-<a name="L3247"></a><tt class="py-lineno">3247</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3077" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3118', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
+<a name="L3296"></a><tt class="py-lineno">3296</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3119" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3077', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3248"></a><tt class="py-lineno">3248</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3078" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3119', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3297"></a><tt class="py-lineno">3297</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3120" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3078', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3249"></a><tt class="py-lineno">3249</tt>  <tt class="py-line"> </tt>
-<a name="L3250"></a><tt class="py-lineno">3250</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
-<a name="L3251"></a><tt class="py-lineno">3251</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3079" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3120', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3298"></a><tt class="py-lineno">3298</tt>  <tt class="py-line"> </tt>
+<a name="L3299"></a><tt class="py-lineno">3299</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
+<a name="L3300"></a><tt class="py-lineno">3300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3121" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3079', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3252"></a><tt class="py-lineno">3252</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_tail"></a><div id="_ETreeTestCaseBase.test_deepcopy_tail-def"><a name="L3253"></a><tt class="py-lineno">3253</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_tail-expanded"><a name="L3254"></a><tt class="py-lineno">3254</tt>  <tt class="py-line">        <tt id="link-3080" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3121', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3301"></a><tt class="py-lineno">3301</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_tail"></a><div id="_ETreeTestCaseBase.test_deepcopy_tail-def"><a name="L3302"></a><tt class="py-lineno">3302</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_tail-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_tail');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_tail">test_deepcopy_tail</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_tail-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_tail-expanded"><a name="L3303"></a><tt class="py-lineno">3303</tt>  <tt class="py-line">        <tt id="link-3122" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3080', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3081" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3122', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3123" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3081', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3082" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3123', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3124" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3082', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3255"></a><tt class="py-lineno">3255</tt>  <tt class="py-line">         </tt>
-<a name="L3256"></a><tt class="py-lineno">3256</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3083" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3124', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3304"></a><tt class="py-lineno">3304</tt>  <tt class="py-line">         </tt>
+<a name="L3305"></a><tt class="py-lineno">3305</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3125" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3083', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3257"></a><tt class="py-lineno">3257</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3084" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3084', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
-<a name="L3258"></a><tt class="py-lineno">3258</tt>  <tt class="py-line"> </tt>
-<a name="L3259"></a><tt class="py-lineno">3259</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3085" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3125', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3306"></a><tt class="py-lineno">3306</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3126" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3126', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
+<a name="L3307"></a><tt class="py-lineno">3307</tt>  <tt class="py-line"> </tt>
+<a name="L3308"></a><tt class="py-lineno">3308</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3127" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3085', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3260"></a><tt class="py-lineno">3260</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3086" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3086', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3261"></a><tt class="py-lineno">3261</tt>  <tt class="py-line">         </tt>
-<a name="L3262"></a><tt class="py-lineno">3262</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3087" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3087', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
-<a name="L3263"></a><tt class="py-lineno">3263</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3088" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3088', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3264"></a><tt class="py-lineno">3264</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3089" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3089', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3265"></a><tt class="py-lineno">3265</tt>  <tt class="py-line"> </tt>
-<a name="L3266"></a><tt class="py-lineno">3266</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
-<a name="L3267"></a><tt class="py-lineno">3267</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3090" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3090', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3268"></a><tt class="py-lineno">3268</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_subelement"></a><div id="_ETreeTestCaseBase.test_deepcopy_subelement-def"><a name="L3269"></a><tt class="py-lineno">3269</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_subelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_subelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_subelement">test_deepcopy_subelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_subelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_subelement-expanded"><a name="L3270"></a><tt class="py-lineno">3270</tt>  <tt class="py-line">        <tt id="link-3091" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3127', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3309"></a><tt class="py-lineno">3309</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3128" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3128', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3310"></a><tt class="py-lineno">3310</tt>  <tt class="py-line">         </tt>
+<a name="L3311"></a><tt class="py-lineno">3311</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3129" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3129', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
+<a name="L3312"></a><tt class="py-lineno">3312</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3130" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3130', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3313"></a><tt class="py-lineno">3313</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3131" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3131', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3314"></a><tt class="py-lineno">3314</tt>  <tt class="py-line"> </tt>
+<a name="L3315"></a><tt class="py-lineno">3315</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
+<a name="L3316"></a><tt class="py-lineno">3316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3132" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3132', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3317"></a><tt class="py-lineno">3317</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_subelement"></a><div id="_ETreeTestCaseBase.test_deepcopy_subelement-def"><a name="L3318"></a><tt class="py-lineno">3318</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_subelement-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_subelement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_subelement">test_deepcopy_subelement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_subelement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_subelement-expanded"><a name="L3319"></a><tt class="py-lineno">3319</tt>  <tt class="py-line">        <tt id="link-3133" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3091', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3092" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3133', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3134" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3092', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3093" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3134', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3135" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3093', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3271"></a><tt class="py-lineno">3271</tt>  <tt class="py-line">        <tt id="link-3094" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3094', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3095" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3135', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3320"></a><tt class="py-lineno">3320</tt>  <tt class="py-line">        <tt id="link-3136" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3136', 'SubElement', 'link-94');">SubElement</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3137" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3095', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3096" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3096', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
-<a name="L3272"></a><tt class="py-lineno">3272</tt>  <tt class="py-line"> </tt>
-<a name="L3273"></a><tt class="py-lineno">3273</tt>  <tt class="py-line">        <tt id="link-3097" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3097', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3098" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3137', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3138" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3138', 'SubElement', 'link-94');">SubElement</a></tt> </tt>
+<a name="L3321"></a><tt class="py-lineno">3321</tt>  <tt class="py-line"> </tt>
+<a name="L3322"></a><tt class="py-lineno">3322</tt>  <tt class="py-line">        <tt id="link-3139" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3139', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3140" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3098', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3274"></a><tt class="py-lineno">3274</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3099" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3099', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-3100" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3100', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3275"></a><tt class="py-lineno">3275</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3101" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3140', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3323"></a><tt class="py-lineno">3323</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3141" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3141', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt id="link-3142" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3142', 'root', 'link-50');">root</a></tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3324"></a><tt class="py-lineno">3324</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3143" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3101', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'FooText'</tt> </tt>
-<a name="L3276"></a><tt class="py-lineno">3276</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3102" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3102', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'FooTail'</tt> </tt>
-<a name="L3277"></a><tt class="py-lineno">3277</tt>  <tt class="py-line"> </tt>
-<a name="L3278"></a><tt class="py-lineno">3278</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3103" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3143', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'FooText'</tt> </tt>
+<a name="L3325"></a><tt class="py-lineno">3325</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3144" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3144', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'FooTail'</tt> </tt>
+<a name="L3326"></a><tt class="py-lineno">3326</tt>  <tt class="py-line"> </tt>
+<a name="L3327"></a><tt class="py-lineno">3327</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3145" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3103', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3279"></a><tt class="py-lineno">3279</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3104" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3145', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3328"></a><tt class="py-lineno">3328</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3146" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3104', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3280"></a><tt class="py-lineno">3280</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3105" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3105', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3281"></a><tt class="py-lineno">3281</tt>  <tt class="py-line">         </tt>
-<a name="L3282"></a><tt class="py-lineno">3282</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3106" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3146', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3329"></a><tt class="py-lineno">3329</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3147" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3147', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3330"></a><tt class="py-lineno">3330</tt>  <tt class="py-line">         </tt>
+<a name="L3331"></a><tt class="py-lineno">3331</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3148" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3106', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'BarText'</tt> </tt>
-<a name="L3283"></a><tt class="py-lineno">3283</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3107" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3107', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'BarTail'</tt> </tt>
-<a name="L3284"></a><tt class="py-lineno">3284</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3108" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3108', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3285"></a><tt class="py-lineno">3285</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooTail'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3109" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3109', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3286"></a><tt class="py-lineno">3286</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3110" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3148', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'BarText'</tt> </tt>
+<a name="L3332"></a><tt class="py-lineno">3332</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3149" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3149', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'BarTail'</tt> </tt>
+<a name="L3333"></a><tt class="py-lineno">3333</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3150" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3150', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3334"></a><tt class="py-lineno">3334</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooTail'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3151" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3151', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3335"></a><tt class="py-lineno">3335</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3152" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3110', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3287"></a><tt class="py-lineno">3287</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooText'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3111" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3152', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3336"></a><tt class="py-lineno">3336</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'FooText'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3153" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3111', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3288"></a><tt class="py-lineno">3288</tt>  <tt class="py-line"> </tt>
-<a name="L3289"></a><tt class="py-lineno">3289</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
-<a name="L3290"></a><tt class="py-lineno">3290</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3112" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3112', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3291"></a><tt class="py-lineno">3291</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3113" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3153', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3337"></a><tt class="py-lineno">3337</tt>  <tt class="py-line"> </tt>
+<a name="L3338"></a><tt class="py-lineno">3338</tt>  <tt class="py-line">        <tt class="py-keyword">del</tt> <tt class="py-name">a</tt> </tt>
+<a name="L3339"></a><tt class="py-lineno">3339</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarTail'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3154" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3154', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3340"></a><tt class="py-lineno">3340</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'BarText'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3155" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3113', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3292"></a><tt class="py-lineno">3292</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_namespaces"></a><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-def"><a name="L3293"></a><tt class="py-lineno">3293</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_namespaces-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_namespaces');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-expanded"><a name="L3294"></a><tt class="py-lineno">3294</tt>  <tt class="py-line">        <tt id="link-3114" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3114', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3115" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3155', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3341"></a><tt class="py-lineno">3341</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_namespaces"></a><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-def"><a name="L3342"></a><tt class="py-lineno">3342</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_namespaces-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_namespaces');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_namespaces">test_deepcopy_namespaces</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_namespaces-expanded"><a name="L3343"></a><tt class="py-lineno">3343</tt>  <tt class="py-line">        <tt id="link-3156" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3156', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3157" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3115', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3116" class="py-name"><a title="lxml.etree.XML
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3157', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3158" class="py-name"><a title="lxml.etree.XML
 lxml.objectify.XML
 lxml.tests.test_objectify.ObjectifyTestCase.XML
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3116', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-3117" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3117', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''&lt;doc xmlns="dns" xmlns:t="tns"&gt;</tt> </tt>
-<a name="L3295"></a><tt class="py-lineno">3295</tt>  <tt class="py-line"><tt class="py-string">        &lt;parent&gt;&lt;node t:foo="bar" /&gt;&lt;/parent&gt;</tt> </tt>
-<a name="L3296"></a><tt class="py-lineno">3296</tt>  <tt class="py-line"><tt class="py-string">        &lt;/doc&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3297"></a><tt class="py-lineno">3297</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L3298"></a><tt class="py-lineno">3298</tt>  <tt class="py-line">            <tt id="link-3118" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3118', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3119" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.XML" class="py-name" href="#" onclick="return doclink('link-3158', 'XML', 'link-259');">XML</a></tt><tt class="py-op">(</tt><tt id="link-3159" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3159', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'''&lt;doc xmlns="dns" xmlns:t="tns"&gt;</tt> </tt>
+<a name="L3344"></a><tt class="py-lineno">3344</tt>  <tt class="py-line"><tt class="py-string">        &lt;parent&gt;&lt;node t:foo="bar" /&gt;&lt;/parent&gt;</tt> </tt>
+<a name="L3345"></a><tt class="py-lineno">3345</tt>  <tt class="py-line"><tt class="py-string">        &lt;/doc&gt;'''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3346"></a><tt class="py-lineno">3346</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L3347"></a><tt class="py-lineno">3347</tt>  <tt class="py-line">            <tt id="link-3160" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3160', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3161" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3119', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3299"></a><tt class="py-lineno">3299</tt>  <tt class="py-line">            <tt id="link-3120" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3161', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3348"></a><tt class="py-lineno">3348</tt>  <tt class="py-line">            <tt id="link-3162" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3120', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-3121" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3121', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3122" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3162', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-3163" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3163', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3164" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3122', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-<a name="L3300"></a><tt class="py-lineno">3300</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L3301"></a><tt class="py-lineno">3301</tt>  <tt class="py-line">            <tt id="link-3123" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3123', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3124" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3164', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L3349"></a><tt class="py-lineno">3349</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L3350"></a><tt class="py-lineno">3350</tt>  <tt class="py-line">            <tt id="link-3165" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3165', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3166" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3124', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3302"></a><tt class="py-lineno">3302</tt>  <tt class="py-line">            <tt id="link-3125" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3166', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3351"></a><tt class="py-lineno">3351</tt>  <tt class="py-line">            <tt id="link-3167" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3125', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-3126" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3126', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3127" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3167', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt id="link-3168" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3168', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3169" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3127', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-</div><a name="L3303"></a><tt class="py-lineno">3303</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_append"></a><div id="_ETreeTestCaseBase.test_deepcopy_append-def"><a name="L3304"></a><tt class="py-lineno">3304</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_append-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_append-expanded"><a name="L3305"></a><tt class="py-lineno">3305</tt>  <tt class="py-line">        <tt class="py-comment"># previously caused a crash</tt> </tt>
-<a name="L3306"></a><tt class="py-lineno">3306</tt>  <tt class="py-line">        <tt id="link-3128" class="py-name"><a title="lxml.etree.Element
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3169', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">'{tns}foo'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+</div><a name="L3352"></a><tt class="py-lineno">3352</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_append"></a><div id="_ETreeTestCaseBase.test_deepcopy_append-def"><a name="L3353"></a><tt class="py-lineno">3353</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_append-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_append');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_append">test_deepcopy_append</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_append-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_append-expanded"><a name="L3354"></a><tt class="py-lineno">3354</tt>  <tt class="py-line">        <tt class="py-comment"># previously caused a crash</tt> </tt>
+<a name="L3355"></a><tt class="py-lineno">3355</tt>  <tt class="py-line">        <tt id="link-3170" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3128', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3129" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3170', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3171" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3129', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3130" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3171', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3172" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3130', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3307"></a><tt class="py-lineno">3307</tt>  <tt class="py-line">        <tt id="link-3131" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3131', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3132" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3172', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3356"></a><tt class="py-lineno">3356</tt>  <tt class="py-line">        <tt id="link-3173" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3173', 'tostring', 'link-216');">tostring</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3174" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3132', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3133" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3133', 'tostring', 'link-216');">tostring</a></tt> </tt>
-<a name="L3308"></a><tt class="py-lineno">3308</tt>  <tt class="py-line">         </tt>
-<a name="L3309"></a><tt class="py-lineno">3309</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3134" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3174', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3175" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3175', 'tostring', 'link-216');">tostring</a></tt> </tt>
+<a name="L3357"></a><tt class="py-lineno">3357</tt>  <tt class="py-line">         </tt>
+<a name="L3358"></a><tt class="py-lineno">3358</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3176" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3134', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3310"></a><tt class="py-lineno">3310</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3135" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3176', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3359"></a><tt class="py-lineno">3359</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3177" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3135', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3311"></a><tt class="py-lineno">3311</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3136" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3136', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt> <tt id="link-3137" class="py-name"><a title="lxml.etree.Element
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3177', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3360"></a><tt class="py-lineno">3360</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3178" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3178', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt> <tt id="link-3179" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3137', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-<a name="L3312"></a><tt class="py-lineno">3312</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3138" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3138', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt> <tt id="link-3139" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3179', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'C'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L3361"></a><tt class="py-lineno">3361</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3180" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3180', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt> <tt id="link-3181" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3139', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'X'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
-<a name="L3313"></a><tt class="py-lineno">3313</tt>  <tt class="py-line"> </tt>
-<a name="L3314"></a><tt class="py-lineno">3314</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3140" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3140', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;C/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3315"></a><tt class="py-lineno">3315</tt>  <tt class="py-line">                          <tt id="link-3141" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3141', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3142" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3142', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3143" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3143', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3144" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3144', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3316"></a><tt class="py-lineno">3316</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3145" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3145', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;X/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3317"></a><tt class="py-lineno">3317</tt>  <tt class="py-line">                          <tt id="link-3146" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3146', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3147" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3147', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3148" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3148', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3149" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3149', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3318"></a><tt class="py-lineno">3318</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_deepcopy_comment"></a><div id="_ETreeTestCaseBase.test_deepcopy_comment-def"><a name="L3319"></a><tt class="py-lineno">3319</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_deepcopy_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_comment-expanded"><a name="L3320"></a><tt class="py-lineno">3320</tt>  <tt class="py-line">        <tt class="py-comment"># previously caused a crash</tt> </tt>
-<a name="L3321"></a><tt class="py-lineno">3321</tt>  <tt class="py-line">        <tt class="py-comment"># not supported by ET &lt; 1.3!</tt> </tt>
-<a name="L3322"></a><tt class="py-lineno">3322</tt>  <tt class="py-line">        <tt id="link-3150" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3150', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3151" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3181', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'X'</tt><tt class="py-op">)</tt> <tt class="py-op">)</tt> </tt>
+<a name="L3362"></a><tt class="py-lineno">3362</tt>  <tt class="py-line"> </tt>
+<a name="L3363"></a><tt class="py-lineno">3363</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3182" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3182', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;C/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3364"></a><tt class="py-lineno">3364</tt>  <tt class="py-line">                          <tt id="link-3183" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3183', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3184" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3184', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3185" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3185', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3186" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3186', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3365"></a><tt class="py-lineno">3365</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3187" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3187', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;X/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3366"></a><tt class="py-lineno">3366</tt>  <tt class="py-line">                          <tt id="link-3188" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3188', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3189" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3189', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3190" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3190', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3191" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3191', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3367"></a><tt class="py-lineno">3367</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_deepcopy_comment"></a><div id="_ETreeTestCaseBase.test_deepcopy_comment-def"><a name="L3368"></a><tt class="py-lineno">3368</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_deepcopy_comment-toggle" onclick="return toggle('_ETreeTestCaseBase.test_deepcopy_comment');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_deepcopy_comment">test_deepcopy_comment</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_deepcopy_comment-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_deepcopy_comment-expanded"><a name="L3369"></a><tt class="py-lineno">3369</tt>  <tt class="py-line">        <tt class="py-comment"># previously caused a crash</tt> </tt>
+<a name="L3370"></a><tt class="py-lineno">3370</tt>  <tt class="py-line">        <tt class="py-comment"># not supported by ET &lt; 1.3!</tt> </tt>
+<a name="L3371"></a><tt class="py-lineno">3371</tt>  <tt class="py-line">        <tt id="link-3192" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3192', 'Comment', 'link-852');">Comment</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3193" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3151', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3152" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3152', 'Comment', 'link-852');">Comment</a></tt> </tt>
-<a name="L3323"></a><tt class="py-lineno">3323</tt>  <tt class="py-line">         </tt>
-<a name="L3324"></a><tt class="py-lineno">3324</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3153" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3153', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"ONE"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3325"></a><tt class="py-lineno">3325</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3154" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3193', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3194" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3194', 'Comment', 'link-852');">Comment</a></tt> </tt>
+<a name="L3372"></a><tt class="py-lineno">3372</tt>  <tt class="py-line">         </tt>
+<a name="L3373"></a><tt class="py-lineno">3373</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3195" class="py-name"><a title="lxml.etree.Comment" class="py-name" href="#" onclick="return doclink('link-3195', 'Comment', 'link-852');">Comment</a></tt><tt class="py-op">(</tt><tt class="py-string">"ONE"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3374"></a><tt class="py-lineno">3374</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3196" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3154', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3326"></a><tt class="py-lineno">3326</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3155" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3196', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt class="py-name">deepcopy</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3375"></a><tt class="py-lineno">3375</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3197" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3155', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"ANOTHER"</tt> </tt>
-<a name="L3327"></a><tt class="py-lineno">3327</tt>  <tt class="py-line"> </tt>
-<a name="L3328"></a><tt class="py-lineno">3328</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'ONE'</tt><tt class="py-op">,</tt>     <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3156" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3197', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">"ANOTHER"</tt> </tt>
+<a name="L3376"></a><tt class="py-lineno">3376</tt>  <tt class="py-line"> </tt>
+<a name="L3377"></a><tt class="py-lineno">3377</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'ONE'</tt><tt class="py-op">,</tt>     <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3198" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3156', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3329"></a><tt class="py-lineno">3329</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'ANOTHER'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3157" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3198', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3378"></a><tt class="py-lineno">3378</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'ANOTHER'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3199" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3157', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3330"></a><tt class="py-lineno">3330</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_shallowcopy"></a><div id="_ETreeTestCaseBase.test_shallowcopy-def"><a name="L3331"></a><tt class="py-lineno">3331</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_shallowcopy-toggle" onclick="return toggle('_ETreeTestCaseBase.test_shallowcopy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy">test_shallowcopy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_shallowcopy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_shallowcopy-expanded"><a name="L3332"></a><tt class="py-lineno">3332</tt>  <tt class="py-line">        <tt id="link-3158" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3199', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3379"></a><tt class="py-lineno">3379</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_shallowcopy"></a><div id="_ETreeTestCaseBase.test_shallowcopy-def"><a name="L3380"></a><tt class="py-lineno">3380</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_shallowcopy-toggle" onclick="return toggle('_ETreeTestCaseBase.test_shallowcopy');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy">test_shallowcopy</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_shallowcopy-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_shallowcopy-expanded"><a name="L3381"></a><tt class="py-lineno">3381</tt>  <tt class="py-line">        <tt id="link-3200" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3158', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3159" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3200', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3201" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3159', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3160" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3201', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3202" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3160', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3333"></a><tt class="py-lineno">3333</tt>  <tt class="py-line">         </tt>
-<a name="L3334"></a><tt class="py-lineno">3334</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3161" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3202', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3382"></a><tt class="py-lineno">3382</tt>  <tt class="py-line">         </tt>
+<a name="L3383"></a><tt class="py-lineno">3383</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3203" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3161', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3335"></a><tt class="py-lineno">3335</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3162" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3203', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3384"></a><tt class="py-lineno">3384</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3204" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3162', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
-<a name="L3336"></a><tt class="py-lineno">3336</tt>  <tt class="py-line"> </tt>
-<a name="L3337"></a><tt class="py-lineno">3337</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3163" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3204', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
+<a name="L3385"></a><tt class="py-lineno">3385</tt>  <tt class="py-line"> </tt>
+<a name="L3386"></a><tt class="py-lineno">3386</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3205" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3163', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt id="link-3164" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3205', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt id="link-3206" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3164', 'copy', 'link-0');">copy</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3338"></a><tt class="py-lineno">3338</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3165" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3206', 'copy', 'link-0');">copy</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3387"></a><tt class="py-lineno">3387</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3207" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3165', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3339"></a><tt class="py-lineno">3339</tt>  <tt class="py-line">         </tt>
-<a name="L3340"></a><tt class="py-lineno">3340</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3166" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3207', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3388"></a><tt class="py-lineno">3388</tt>  <tt class="py-line">         </tt>
+<a name="L3389"></a><tt class="py-lineno">3389</tt>  <tt class="py-line">        <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3208" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3166', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
-<a name="L3341"></a><tt class="py-lineno">3341</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3167" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3208', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Bar'</tt> </tt>
+<a name="L3390"></a><tt class="py-lineno">3390</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Bar'</tt><tt class="py-op">,</tt> <tt class="py-name">b</tt><tt class="py-op">.</tt><tt id="link-3209" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3167', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3342"></a><tt class="py-lineno">3342</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3168" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3209', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3391"></a><tt class="py-lineno">3391</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3210" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3168', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3343"></a><tt class="py-lineno">3343</tt>  <tt class="py-line">        <tt class="py-comment"># XXX ElementTree will share nodes, but lxml.etree won't..</tt> </tt>
-<a name="L3344"></a><tt class="py-lineno">3344</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_shallowcopy_elementtree"></a><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-def"><a name="L3345"></a><tt class="py-lineno">3345</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_shallowcopy_elementtree-toggle" onclick="return toggle('_ETreeTestCaseBase.test_shallowcopy_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy_elementtree">test_shallowcopy_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-expanded"><a name="L3346"></a><tt class="py-lineno">3346</tt>  <tt class="py-line">        <tt id="link-3169" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3210', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3392"></a><tt class="py-lineno">3392</tt>  <tt class="py-line">        <tt class="py-comment"># XXX ElementTree will share nodes, but lxml.etree won't..</tt> </tt>
+<a name="L3393"></a><tt class="py-lineno">3393</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_shallowcopy_elementtree"></a><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-def"><a name="L3394"></a><tt class="py-lineno">3394</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_shallowcopy_elementtree-toggle" onclick="return toggle('_ETreeTestCaseBase.test_shallowcopy_elementtree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_shallowcopy_elementtree">test_shallowcopy_elementtree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_shallowcopy_elementtree-expanded"><a name="L3395"></a><tt class="py-lineno">3395</tt>  <tt class="py-line">        <tt id="link-3211" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3169', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3170" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3211', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3212" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3170', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3171" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3212', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3213" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3171', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3347"></a><tt class="py-lineno">3347</tt>  <tt class="py-line">        <tt id="link-3172" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3213', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3396"></a><tt class="py-lineno">3396</tt>  <tt class="py-line">        <tt id="link-3214" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3172', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3173" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3214', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3215" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3173', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3174" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3215', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3216" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3174', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3348"></a><tt class="py-lineno">3348</tt>  <tt class="py-line">         </tt>
-<a name="L3349"></a><tt class="py-lineno">3349</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3175" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3216', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3397"></a><tt class="py-lineno">3397</tt>  <tt class="py-line">         </tt>
+<a name="L3398"></a><tt class="py-lineno">3398</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3217" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3175', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3350"></a><tt class="py-lineno">3350</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3176" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3217', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3399"></a><tt class="py-lineno">3399</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3218" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3176', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
-<a name="L3351"></a><tt class="py-lineno">3351</tt>  <tt class="py-line">        <tt class="py-name">atree</tt> <tt class="py-op">=</tt> <tt id="link-3177" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3218', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'Foo'</tt> </tt>
+<a name="L3400"></a><tt class="py-lineno">3400</tt>  <tt class="py-line">        <tt class="py-name">atree</tt> <tt class="py-op">=</tt> <tt id="link-3219" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3177', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3352"></a><tt class="py-lineno">3352</tt>  <tt class="py-line"> </tt>
-<a name="L3353"></a><tt class="py-lineno">3353</tt>  <tt class="py-line">        <tt class="py-name">btree</tt> <tt class="py-op">=</tt> <tt id="link-3178" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3219', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3401"></a><tt class="py-lineno">3401</tt>  <tt class="py-line"> </tt>
+<a name="L3402"></a><tt class="py-lineno">3402</tt>  <tt class="py-line">        <tt class="py-name">btree</tt> <tt class="py-op">=</tt> <tt id="link-3220" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3178', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt id="link-3179" class="py-name"><a title="lxml.etree.PyErrorLog.copy
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3220', 'copy', 'link-0');">copy</a></tt><tt class="py-op">.</tt><tt id="link-3221" class="py-name"><a title="lxml.etree.PyErrorLog.copy
 lxml.etree._BaseErrorLog.copy
 lxml.etree._ErrorLog.copy
 lxml.etree._IDDict.copy
 lxml.etree._ListErrorLog.copy
-lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3179', 'copy', 'link-0');">copy</a></tt><tt class="py-op">(</tt><tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
-<a name="L3354"></a><tt class="py-lineno">3354</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
-<a name="L3355"></a><tt class="py-lineno">3355</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3180" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3180', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3181" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3181', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3356"></a><tt class="py-lineno">3356</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3182" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3182', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3183" class="py-name"><a title="lxml.etree.QName.text
+lxml.tests.selftest2.copy" class="py-name" href="#" onclick="return doclink('link-3221', 'copy', 'link-0');">copy</a></tt><tt class="py-op">(</tt><tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
+<a name="L3403"></a><tt class="py-lineno">3403</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">)</tt> </tt>
+<a name="L3404"></a><tt class="py-lineno">3404</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">btree</tt><tt class="py-op">.</tt><tt id="link-3222" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3222', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">is</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3223" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3223', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3405"></a><tt class="py-lineno">3405</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">'Foo'</tt><tt class="py-op">,</tt> <tt class="py-name">atree</tt><tt class="py-op">.</tt><tt id="link-3224" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3224', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3225" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3183', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3357"></a><tt class="py-lineno">3357</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._test_element_boolean"></a><div id="_ETreeTestCaseBase._test_element_boolean-def"><a name="L3358"></a><tt class="py-lineno">3358</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._test_element_boolean-toggle" onclick="return toggle('_ETreeTestCaseBase._test_element_boolean');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_element_boolean">_test_element_boolean</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._test_element_boolean-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._test_element_boolean-expanded"><a name="L3359"></a><tt class="py-lineno">3359</tt>  <tt class="py-line">        <tt class="py-comment"># deprecated as of ET 1.3/lxml 2.0</tt> </tt>
-<a name="L3360"></a><tt class="py-lineno">3360</tt>  <tt class="py-line">        <tt id="link-3184" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3225', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3406"></a><tt class="py-lineno">3406</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._test_element_boolean"></a><div id="_ETreeTestCaseBase._test_element_boolean-def"><a name="L3407"></a><tt class="py-lineno">3407</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._test_element_boolean-toggle" onclick="return toggle('_ETreeTestCaseBase._test_element_boolean');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_element_boolean">_test_element_boolean</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._test_element_boolean-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._test_element_boolean-expanded"><a name="L3408"></a><tt class="py-lineno">3408</tt>  <tt class="py-line">        <tt class="py-comment"># deprecated as of ET 1.3/lxml 2.0</tt> </tt>
+<a name="L3409"></a><tt class="py-lineno">3409</tt>  <tt class="py-line">        <tt id="link-3226" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3184', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3185" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3226', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3227" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3185', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3361"></a><tt class="py-lineno">3361</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3186" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3227', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3410"></a><tt class="py-lineno">3410</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3228" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3186', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3187" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3228', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3229" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3187', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3362"></a><tt class="py-lineno">3362</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3363"></a><tt class="py-lineno">3363</tt>  <tt class="py-line">        <tt id="link-3188" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3229', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3411"></a><tt class="py-lineno">3411</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3412"></a><tt class="py-lineno">3412</tt>  <tt class="py-line">        <tt id="link-3230" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3188', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3189" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3189', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3364"></a><tt class="py-lineno">3364</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3365"></a><tt class="py-lineno">3365</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3190" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3230', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3231" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3231', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">,</tt> <tt class="py-string">'bar'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3413"></a><tt class="py-lineno">3413</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3414"></a><tt class="py-lineno">3414</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3232" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3190', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3191" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3232', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3233" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3191', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3366"></a><tt class="py-lineno">3366</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3192" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3233', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3415"></a><tt class="py-lineno">3415</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3234" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3192', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hey'</tt> </tt>
-<a name="L3367"></a><tt class="py-lineno">3367</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3368"></a><tt class="py-lineno">3368</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3193" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3234', 'text', 'link-45');">text</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'hey'</tt> </tt>
+<a name="L3416"></a><tt class="py-lineno">3416</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3417"></a><tt class="py-lineno">3417</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3235" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3193', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3194" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3235', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3236" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3194', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3369"></a><tt class="py-lineno">3369</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3195" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3195', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
-<a name="L3370"></a><tt class="py-lineno">3370</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3371"></a><tt class="py-lineno">3371</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3196" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3236', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3418"></a><tt class="py-lineno">3418</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3237" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3237', 'tail', 'link-46');">tail</a></tt> <tt class="py-op">=</tt> <tt class="py-string">'bar'</tt> </tt>
+<a name="L3419"></a><tt class="py-lineno">3419</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3420"></a><tt class="py-lineno">3420</tt>  <tt class="py-line">        <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt id="link-3238" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3196', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3197" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3238', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3239" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3197', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3372"></a><tt class="py-lineno">3372</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3198" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3239', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'foo'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3421"></a><tt class="py-lineno">3421</tt>  <tt class="py-line">        <tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3240" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3198', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3373"></a><tt class="py-lineno">3373</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3374"></a><tt class="py-lineno">3374</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_multiple_elementrees"></a><div id="_ETreeTestCaseBase.test_multiple_elementrees-def"><a name="L3375"></a><tt class="py-lineno">3375</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_multiple_elementrees-toggle" onclick="return toggle('_ETreeTestCaseBase.test_multiple_elementrees');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_multiple_elementrees">test_multiple_elementrees</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_multiple_elementrees-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_multiple_elementrees-expanded"><a name="L3376"></a><tt class="py-lineno">3376</tt>  <tt class="py-line">        <tt id="link-3199" class="py-name"><a title="lxml.etree
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3240', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'bar'</tt><tt class="py-op">,</tt> <tt class="py-string">'Bar'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3422"></a><tt class="py-lineno">3422</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-name">bool</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3423"></a><tt class="py-lineno">3423</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_multiple_elementrees"></a><div id="_ETreeTestCaseBase.test_multiple_elementrees-def"><a name="L3424"></a><tt class="py-lineno">3424</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_multiple_elementrees-toggle" onclick="return toggle('_ETreeTestCaseBase.test_multiple_elementrees');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_multiple_elementrees">test_multiple_elementrees</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_multiple_elementrees-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_multiple_elementrees-expanded"><a name="L3425"></a><tt class="py-lineno">3425</tt>  <tt class="py-line">        <tt id="link-3241" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3199', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3200" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3241', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3242" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3200', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3377"></a><tt class="py-lineno">3377</tt>  <tt class="py-line"> </tt>
-<a name="L3378"></a><tt class="py-lineno">3378</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3201" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3242', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3426"></a><tt class="py-lineno">3426</tt>  <tt class="py-line"> </tt>
+<a name="L3427"></a><tt class="py-lineno">3427</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3243" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3201', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3202" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3243', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3244" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3202', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3379"></a><tt class="py-lineno">3379</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3203" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3244', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3428"></a><tt class="py-lineno">3428</tt>  <tt class="py-line">        <tt class="py-name">b</tt> <tt class="py-op">=</tt> <tt id="link-3245" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3203', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3204" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3204', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3380"></a><tt class="py-lineno">3380</tt>  <tt class="py-line"> </tt>
-<a name="L3381"></a><tt class="py-lineno">3381</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-3205" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3245', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3246" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3246', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3429"></a><tt class="py-lineno">3429</tt>  <tt class="py-line"> </tt>
+<a name="L3430"></a><tt class="py-lineno">3430</tt>  <tt class="py-line">        <tt class="py-name">t</tt> <tt class="py-op">=</tt> <tt id="link-3247" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3205', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3206" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3247', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3248" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3206', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3382"></a><tt class="py-lineno">3382</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3207" class="py-name" targets="Method lxml.tests.common_imports.HelperTestCase._rootstring()=lxml.tests.common_imports.HelperTestCase-class.html#_rootstring,Method lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3207', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3208" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3208', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3383"></a><tt class="py-lineno">3383</tt>  <tt class="py-line"> </tt>
-<a name="L3384"></a><tt class="py-lineno">3384</tt>  <tt class="py-line">        <tt class="py-name">t1</tt> <tt class="py-op">=</tt> <tt id="link-3209" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3248', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3431"></a><tt class="py-lineno">3431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3249" class="py-name" targets="Method lxml.tests.common_imports.HelperTestCase._rootstring()=lxml.tests.common_imports.HelperTestCase-class.html#_rootstring,Method lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3249', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3250" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3250', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3432"></a><tt class="py-lineno">3432</tt>  <tt class="py-line"> </tt>
+<a name="L3433"></a><tt class="py-lineno">3433</tt>  <tt class="py-line">        <tt class="py-name">t1</tt> <tt class="py-op">=</tt> <tt id="link-3251" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3209', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3210" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3251', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3252" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3210', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-<a name="L3385"></a><tt class="py-lineno">3385</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3211" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3211', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3212" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3212', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3386"></a><tt class="py-lineno">3386</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3213" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3213', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  <tt id="link-3214" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3214', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3387"></a><tt class="py-lineno">3387</tt>  <tt class="py-line"> </tt>
-<a name="L3388"></a><tt class="py-lineno">3388</tt>  <tt class="py-line">        <tt class="py-name">t2</tt> <tt class="py-op">=</tt> <tt id="link-3215" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3252', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+<a name="L3434"></a><tt class="py-lineno">3434</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3253" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3253', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3254" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3254', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3435"></a><tt class="py-lineno">3435</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3255" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3255', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  <tt id="link-3256" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3256', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3436"></a><tt class="py-lineno">3436</tt>  <tt class="py-line"> </tt>
+<a name="L3437"></a><tt class="py-lineno">3437</tt>  <tt class="py-line">        <tt class="py-name">t2</tt> <tt class="py-op">=</tt> <tt id="link-3257" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3215', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3216" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3257', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3258" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3216', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
-<a name="L3389"></a><tt class="py-lineno">3389</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3217" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3217', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3218" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3218', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3390"></a><tt class="py-lineno">3390</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3219" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3219', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3220" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3220', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3391"></a><tt class="py-lineno">3391</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3221" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
-lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3221', '_rootstring', 'link-3207');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  <tt id="link-3222" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3222', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3392"></a><tt class="py-lineno">3392</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname"></a><div id="_ETreeTestCaseBase.test_qname-def"><a name="L3393"></a><tt class="py-lineno">3393</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname">test_qname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname-expanded"><a name="L3394"></a><tt class="py-lineno">3394</tt>  <tt class="py-line">        <tt id="link-3223" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3258', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-name">b</tt><tt class="py-op">)</tt> </tt>
+<a name="L3438"></a><tt class="py-lineno">3438</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3259" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3259', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t2</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3260" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3260', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;b/&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3439"></a><tt class="py-lineno">3439</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3261" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3261', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t1</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3262" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3262', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3440"></a><tt class="py-lineno">3440</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3263" class="py-name"><a title="lxml.tests.common_imports.HelperTestCase._rootstring
+lxml.tests.test_elementtree._ETreeTestCaseBase._rootstring" class="py-name" href="#" onclick="return doclink('link-3263', '_rootstring', 'link-3249');">_rootstring</a></tt><tt class="py-op">(</tt><tt class="py-name">t</tt><tt class="py-op">)</tt><tt class="py-op">,</tt>  <tt id="link-3264" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3264', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a&gt;&lt;b/&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3441"></a><tt class="py-lineno">3441</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname"></a><div id="_ETreeTestCaseBase.test_qname-def"><a name="L3442"></a><tt class="py-lineno">3442</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname">test_qname</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname-expanded"><a name="L3443"></a><tt class="py-lineno">3443</tt>  <tt class="py-line">        <tt id="link-3265" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3223', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3224" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3265', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3266" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3224', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3395"></a><tt class="py-lineno">3395</tt>  <tt class="py-line">        <tt id="link-3225" class="py-name" targets="Function lxml.tests.selftest.qname()=lxml.tests.selftest-module.html#qname,Function lxml.tests.selftest2.qname()=lxml.tests.selftest2-module.html#qname"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3225', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3226" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3266', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3444"></a><tt class="py-lineno">3444</tt>  <tt class="py-line">        <tt id="link-3267" class="py-name" targets="Function lxml.tests.selftest.qname()=lxml.tests.selftest-module.html#qname,Function lxml.tests.selftest2.qname()=lxml.tests.selftest2-module.html#qname"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3267', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3268" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3226', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3227" class="py-name" targets="Class lxml.etree.QName=lxml.etree.QName-class.html,Class xml.etree.ElementTree.QName=xml.etree.ElementTree.QName-class.html"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3227', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3396"></a><tt class="py-lineno">3396</tt>  <tt class="py-line">        <tt class="py-name">a1</tt> <tt class="py-op">=</tt> <tt id="link-3228" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3268', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3269" class="py-name" targets="Class lxml.etree.QName=lxml.etree.QName-class.html,Class xml.etree.ElementTree.QName=xml.etree.ElementTree.QName-class.html"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3269', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3445"></a><tt class="py-lineno">3445</tt>  <tt class="py-line">        <tt class="py-name">a1</tt> <tt class="py-op">=</tt> <tt id="link-3270" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3228', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3229" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3270', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3271" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3229', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3230" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3230', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3397"></a><tt class="py-lineno">3397</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-3231" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3271', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3272" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3272', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3446"></a><tt class="py-lineno">3446</tt>  <tt class="py-line">        <tt class="py-name">a2</tt> <tt class="py-op">=</tt> <tt id="link-3273" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3231', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3232" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3232', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a1</tt><tt class="py-op">,</tt> <tt id="link-3233" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3233', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3398"></a><tt class="py-lineno">3398</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a1</tt><tt class="py-op">.</tt><tt id="link-3234" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3273', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3274" class="py-name"><a title="lxml.etree.SubElement" class="py-name" href="#" onclick="return doclink('link-3274', 'SubElement', 'link-94');">SubElement</a></tt><tt class="py-op">(</tt><tt class="py-name">a1</tt><tt class="py-op">,</tt> <tt id="link-3275" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3275', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3447"></a><tt class="py-lineno">3447</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a1</tt><tt class="py-op">.</tt><tt id="link-3276" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3234', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3399"></a><tt class="py-lineno">3399</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a2</tt><tt class="py-op">.</tt><tt id="link-3235" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3276', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3448"></a><tt class="py-lineno">3448</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a2</tt><tt class="py-op">.</tt><tt id="link-3277" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3235', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3400"></a><tt class="py-lineno">3400</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_cmp"></a><div id="_ETreeTestCaseBase.test_qname_cmp-def"><a name="L3401"></a><tt class="py-lineno">3401</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_cmp-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_cmp">test_qname_cmp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_cmp-expanded"><a name="L3402"></a><tt class="py-lineno">3402</tt>  <tt class="py-line">        <tt id="link-3236" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3277', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3449"></a><tt class="py-lineno">3449</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_cmp"></a><div id="_ETreeTestCaseBase.test_qname_cmp-def"><a name="L3450"></a><tt class="py-lineno">3450</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_cmp-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_cmp');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_cmp">test_qname_cmp</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_cmp-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_cmp-expanded"><a name="L3451"></a><tt class="py-lineno">3451</tt>  <tt class="py-line">        <tt id="link-3278" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3236', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3237" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3278', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3279" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3237', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3403"></a><tt class="py-lineno">3403</tt>  <tt class="py-line">        <tt class="py-name">qname1</tt> <tt class="py-op">=</tt> <tt id="link-3238" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3279', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3452"></a><tt class="py-lineno">3452</tt>  <tt class="py-line">        <tt class="py-name">qname1</tt> <tt class="py-op">=</tt> <tt id="link-3280" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3238', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3239" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3239', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3404"></a><tt class="py-lineno">3404</tt>  <tt class="py-line">        <tt class="py-name">qname2</tt> <tt class="py-op">=</tt> <tt id="link-3240" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3280', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3281" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3281', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3453"></a><tt class="py-lineno">3453</tt>  <tt class="py-line">        <tt class="py-name">qname2</tt> <tt class="py-op">=</tt> <tt id="link-3282" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3240', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3241" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3241', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3405"></a><tt class="py-lineno">3405</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3406"></a><tt class="py-lineno">3406</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">,</tt> <tt class="py-name">qname2</tt><tt class="py-op">)</tt> </tt>
-<a name="L3407"></a><tt class="py-lineno">3407</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-name">qname1</tt><tt class="py-op">)</tt> </tt>
-<a name="L3408"></a><tt class="py-lineno">3408</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-name">qname2</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3409"></a><tt class="py-lineno">3409</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_attribute_getset"></a><div id="_ETreeTestCaseBase.test_qname_attribute_getset-def"><a name="L3410"></a><tt class="py-lineno">3410</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_getset-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_getset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_getset">test_qname_attribute_getset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_attribute_getset-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_getset-expanded"><a name="L3411"></a><tt class="py-lineno">3411</tt>  <tt class="py-line">        <tt id="link-3242" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3282', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3283" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3283', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3454"></a><tt class="py-lineno">3454</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3455"></a><tt class="py-lineno">3455</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">,</tt> <tt class="py-name">qname2</tt><tt class="py-op">)</tt> </tt>
+<a name="L3456"></a><tt class="py-lineno">3456</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-name">qname1</tt><tt class="py-op">)</tt> </tt>
+<a name="L3457"></a><tt class="py-lineno">3457</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">qname1</tt><tt class="py-op">,</tt> <tt class="py-name">qname2</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3458"></a><tt class="py-lineno">3458</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_attribute_getset"></a><div id="_ETreeTestCaseBase.test_qname_attribute_getset-def"><a name="L3459"></a><tt class="py-lineno">3459</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_getset-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_getset');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_getset">test_qname_attribute_getset</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_attribute_getset-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_getset-expanded"><a name="L3460"></a><tt class="py-lineno">3460</tt>  <tt class="py-line">        <tt id="link-3284" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3242', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3243" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3284', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3285" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3243', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3412"></a><tt class="py-lineno">3412</tt>  <tt class="py-line">        <tt id="link-3244" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3244', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3245" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3285', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3461"></a><tt class="py-lineno">3461</tt>  <tt class="py-line">        <tt id="link-3286" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3286', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3287" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3245', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3246" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3246', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3413"></a><tt class="py-lineno">3413</tt>  <tt class="py-line"> </tt>
-<a name="L3414"></a><tt class="py-lineno">3414</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3247" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3287', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3288" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3288', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3462"></a><tt class="py-lineno">3462</tt>  <tt class="py-line"> </tt>
+<a name="L3463"></a><tt class="py-lineno">3463</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3289" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3247', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3248" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3289', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3290" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3248', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3249" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3249', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3415"></a><tt class="py-lineno">3415</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3250" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3290', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3291" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3291', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3464"></a><tt class="py-lineno">3464</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3292" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3250', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt id="link-3251" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3251', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3416"></a><tt class="py-lineno">3416</tt>  <tt class="py-line"> </tt>
-<a name="L3417"></a><tt class="py-lineno">3417</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3252" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3292', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt id="link-3293" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3293', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3465"></a><tt class="py-lineno">3465</tt>  <tt class="py-line"> </tt>
+<a name="L3466"></a><tt class="py-lineno">3466</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3294" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3252', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt id="link-3253" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3253', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3418"></a><tt class="py-lineno">3418</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3254" class="py-name"><a title="lxml.etree._Attrib.get
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3294', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt id="link-3295" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3295', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3467"></a><tt class="py-lineno">3467</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3296" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3254', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3419"></a><tt class="py-lineno">3419</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_attrib"></a><div id="_ETreeTestCaseBase.test_qname_attrib-def"><a name="L3420"></a><tt class="py-lineno">3420</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attrib-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib">test_qname_attrib</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attrib-expanded"><a name="L3421"></a><tt class="py-lineno">3421</tt>  <tt class="py-line">        <tt id="link-3255" class="py-name"><a title="lxml.etree
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3296', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3468"></a><tt class="py-lineno">3468</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_attrib"></a><div id="_ETreeTestCaseBase.test_qname_attrib-def"><a name="L3469"></a><tt class="py-lineno">3469</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attrib-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib">test_qname_attrib</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attrib-expanded"><a name="L3470"></a><tt class="py-lineno">3470</tt>  <tt class="py-line">        <tt id="link-3297" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3255', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3256" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3297', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3298" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3256', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3422"></a><tt class="py-lineno">3422</tt>  <tt class="py-line">        <tt id="link-3257" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3257', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3258" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3298', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3471"></a><tt class="py-lineno">3471</tt>  <tt class="py-line">        <tt id="link-3299" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3299', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3300" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3258', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3259" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3259', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3423"></a><tt class="py-lineno">3423</tt>  <tt class="py-line"> </tt>
-<a name="L3424"></a><tt class="py-lineno">3424</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3260" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3300', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3301" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3301', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3472"></a><tt class="py-lineno">3472</tt>  <tt class="py-line"> </tt>
+<a name="L3473"></a><tt class="py-lineno">3473</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3302" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3260', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3261" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3302', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3303" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3261', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3262" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3262', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3425"></a><tt class="py-lineno">3425</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3263" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3303', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3304" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3304', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3474"></a><tt class="py-lineno">3474</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3305" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3263', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3264" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3264', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"value"</tt> </tt>
-<a name="L3426"></a><tt class="py-lineno">3426</tt>  <tt class="py-line"> </tt>
-<a name="L3427"></a><tt class="py-lineno">3427</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3265" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3305', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3306" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3306', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"value"</tt> </tt>
+<a name="L3475"></a><tt class="py-lineno">3475</tt>  <tt class="py-line"> </tt>
+<a name="L3476"></a><tt class="py-lineno">3476</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3307" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3265', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3266" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3266', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3428"></a><tt class="py-lineno">3428</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3267" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3307', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3308" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3308', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3477"></a><tt class="py-lineno">3477</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3309" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3267', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3268" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3309', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3310" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3268', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt id="link-3269" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3269', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3429"></a><tt class="py-lineno">3429</tt>  <tt class="py-line"> </tt>
-<a name="L3430"></a><tt class="py-lineno">3430</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3270" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3310', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt id="link-3311" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3311', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3478"></a><tt class="py-lineno">3478</tt>  <tt class="py-line"> </tt>
+<a name="L3479"></a><tt class="py-lineno">3479</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3312" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3270', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3431"></a><tt class="py-lineno">3431</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3271" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3312', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3480"></a><tt class="py-lineno">3480</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3313" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3271', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3272" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3313', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3314" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3272', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3432"></a><tt class="py-lineno">3432</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_attribute_resolve"></a><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-def"><a name="L3433"></a><tt class="py-lineno">3433</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_resolve-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_resolve');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve">test_qname_attribute_resolve</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-expanded"><a name="L3434"></a><tt class="py-lineno">3434</tt>  <tt class="py-line">        <tt id="link-3273" class="py-name"><a title="lxml.etree
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3314', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"{myns}a"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"value"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3481"></a><tt class="py-lineno">3481</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_attribute_resolve"></a><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-def"><a name="L3482"></a><tt class="py-lineno">3482</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_resolve-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_resolve');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve">test_qname_attribute_resolve</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve-expanded"><a name="L3483"></a><tt class="py-lineno">3483</tt>  <tt class="py-line">        <tt id="link-3315" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3273', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3274" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3315', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3316" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3274', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3435"></a><tt class="py-lineno">3435</tt>  <tt class="py-line">        <tt id="link-3275" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3275', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3276" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3316', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3484"></a><tt class="py-lineno">3484</tt>  <tt class="py-line">        <tt id="link-3317" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3317', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3318" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3276', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3277" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3277', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3436"></a><tt class="py-lineno">3436</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3278" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3318', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3319" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3319', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3485"></a><tt class="py-lineno">3485</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3320" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3278', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3279" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3320', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3321" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3279', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3280" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3280', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3437"></a><tt class="py-lineno">3437</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3281" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3321', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3322" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3322', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3486"></a><tt class="py-lineno">3486</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3323" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3281', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt id="link-3282" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3282', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">,</tt> <tt id="link-3283" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3283', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3438"></a><tt class="py-lineno">3438</tt>  <tt class="py-line"> </tt>
-<a name="L3439"></a><tt class="py-lineno">3439</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3284" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3284', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3440"></a><tt class="py-lineno">3440</tt>  <tt class="py-line">            <tt id="link-3285" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3285', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://myns" ns0:a="ns0:a"&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3441"></a><tt class="py-lineno">3441</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3442"></a><tt class="py-lineno">3442</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_attribute_resolve_new"></a><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-def"><a name="L3443"></a><tt class="py-lineno">3443</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_resolve_new');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-expanded"><a name="L3444"></a><tt class="py-lineno">3444</tt>  <tt class="py-line">        <tt id="link-3286" class="py-name"><a title="lxml.etree
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3323', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt id="link-3324" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3324', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">,</tt> <tt id="link-3325" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3325', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3487"></a><tt class="py-lineno">3487</tt>  <tt class="py-line"> </tt>
+<a name="L3488"></a><tt class="py-lineno">3488</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3326" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3326', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3489"></a><tt class="py-lineno">3489</tt>  <tt class="py-line">            <tt id="link-3327" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3327', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://myns" ns0:a="ns0:a"&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3490"></a><tt class="py-lineno">3490</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3491"></a><tt class="py-lineno">3491</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_attribute_resolve_new"></a><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-def"><a name="L3492"></a><tt class="py-lineno">3492</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attribute_resolve_new');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attribute_resolve_new">test_qname_attribute_resolve_new</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attribute_resolve_new-expanded"><a name="L3493"></a><tt class="py-lineno">3493</tt>  <tt class="py-line">        <tt id="link-3328" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3286', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3287" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3328', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3329" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3287', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3445"></a><tt class="py-lineno">3445</tt>  <tt class="py-line">        <tt id="link-3288" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3288', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3289" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3329', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3494"></a><tt class="py-lineno">3494</tt>  <tt class="py-line">        <tt id="link-3330" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3330', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3331" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3289', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3290" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3290', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3446"></a><tt class="py-lineno">3446</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3291" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3331', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3332" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3332', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3495"></a><tt class="py-lineno">3495</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3333" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3291', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3292" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3333', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3334" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3292', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3447"></a><tt class="py-lineno">3447</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3293" class="py-name"><a title="lxml.etree._Element.set
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3334', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3496"></a><tt class="py-lineno">3496</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3335" class="py-name"><a title="lxml.etree._Element.set
 lxml.etree._XSLTProcessingInstruction.set
 lxml.html.HtmlElement.set
-lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3293', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt id="link-3294" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3294', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3448"></a><tt class="py-lineno">3448</tt>  <tt class="py-line"> </tt>
-<a name="L3449"></a><tt class="py-lineno">3449</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3295" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3295', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3450"></a><tt class="py-lineno">3450</tt>  <tt class="py-line">            <tt id="link-3296" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3296', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="http://myns" a="ns0:a"&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3451"></a><tt class="py-lineno">3451</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3452"></a><tt class="py-lineno">3452</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_qname_attrib_resolve"></a><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-def"><a name="L3453"></a><tt class="py-lineno">3453</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attrib_resolve-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attrib_resolve');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib_resolve">test_qname_attrib_resolve</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-expanded"><a name="L3454"></a><tt class="py-lineno">3454</tt>  <tt class="py-line">        <tt id="link-3297" class="py-name"><a title="lxml.etree
+lxml.html.HtmlMixin.set" class="py-name" href="#" onclick="return doclink('link-3335', 'set', 'link-416');">set</a></tt><tt class="py-op">(</tt><tt class="py-string">'a'</tt><tt class="py-op">,</tt> <tt id="link-3336" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3336', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3497"></a><tt class="py-lineno">3497</tt>  <tt class="py-line"> </tt>
+<a name="L3498"></a><tt class="py-lineno">3498</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3337" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3337', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3499"></a><tt class="py-lineno">3499</tt>  <tt class="py-line">            <tt id="link-3338" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3338', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;a xmlns:ns0="http://myns" a="ns0:a"&gt;&lt;/a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3500"></a><tt class="py-lineno">3500</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3501"></a><tt class="py-lineno">3501</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_qname_attrib_resolve"></a><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-def"><a name="L3502"></a><tt class="py-lineno">3502</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_qname_attrib_resolve-toggle" onclick="return toggle('_ETreeTestCaseBase.test_qname_attrib_resolve');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_qname_attrib_resolve">test_qname_attrib_resolve</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_qname_attrib_resolve-expanded"><a name="L3503"></a><tt class="py-lineno">3503</tt>  <tt class="py-line">        <tt id="link-3339" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3297', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3298" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3339', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3340" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3298', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3455"></a><tt class="py-lineno">3455</tt>  <tt class="py-line">        <tt id="link-3299" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3299', 'qname', 'link-3225');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3300" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3340', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3504"></a><tt class="py-lineno">3504</tt>  <tt class="py-line">        <tt id="link-3341" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3341', 'qname', 'link-3267');">qname</a></tt> <tt class="py-op">=</tt> <tt id="link-3342" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3300', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3301" class="py-name"><a title="lxml.etree.QName
-xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3301', 'QName', 'link-3227');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3456"></a><tt class="py-lineno">3456</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3302" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3342', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3343" class="py-name"><a title="lxml.etree.QName
+xml.etree.ElementTree.QName" class="py-name" href="#" onclick="return doclink('link-3343', 'QName', 'link-3269');">QName</a></tt><tt class="py-op">(</tt><tt class="py-string">'http://myns'</tt><tt class="py-op">,</tt> <tt class="py-string">'a'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3505"></a><tt class="py-lineno">3505</tt>  <tt class="py-line">        <tt class="py-name">a</tt> <tt class="py-op">=</tt> <tt id="link-3344" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3302', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3303" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3344', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3345" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3303', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3304" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3304', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3457"></a><tt class="py-lineno">3457</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3305" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3345', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt id="link-3346" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3346', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3506"></a><tt class="py-lineno">3506</tt>  <tt class="py-line">        <tt class="py-name">a</tt><tt class="py-op">.</tt><tt id="link-3347" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3305', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3306" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3306', 'qname', 'link-3225');">qname</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-3307" class="py-name"><a title="lxml.tests.selftest.qname
-lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3307', 'qname', 'link-3225');">qname</a></tt> </tt>
-<a name="L3458"></a><tt class="py-lineno">3458</tt>  <tt class="py-line"> </tt>
-<a name="L3459"></a><tt class="py-lineno">3459</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3308" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3308', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3460"></a><tt class="py-lineno">3460</tt>  <tt class="py-line">            <tt id="link-3309" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3309', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://myns" ns0:a="ns0:a"&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3461"></a><tt class="py-lineno">3461</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3462"></a><tt class="py-lineno">3462</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_version"></a><div id="_ETreeTestCaseBase.test_parser_version-def"><a name="L3463"></a><tt class="py-lineno">3463</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_version-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_version');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_version">test_parser_version</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_version-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_version-expanded"><a name="L3464"></a><tt class="py-lineno">3464</tt>  <tt class="py-line">        <tt id="link-3310" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3347', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">[</tt><tt id="link-3348" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3348', 'qname', 'link-3267');">qname</a></tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt id="link-3349" class="py-name"><a title="lxml.tests.selftest.qname
+lxml.tests.selftest2.qname" class="py-name" href="#" onclick="return doclink('link-3349', 'qname', 'link-3267');">qname</a></tt> </tt>
+<a name="L3507"></a><tt class="py-lineno">3507</tt>  <tt class="py-line"> </tt>
+<a name="L3508"></a><tt class="py-lineno">3508</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3350" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.assertXML" class="py-name" href="#" onclick="return doclink('link-3350', 'assertXML', 'link-214');">assertXML</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3509"></a><tt class="py-lineno">3509</tt>  <tt class="py-line">            <tt id="link-3351" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3351', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ns0:a xmlns:ns0="http://myns" ns0:a="ns0:a"&gt;&lt;/ns0:a&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L3510"></a><tt class="py-lineno">3510</tt>  <tt class="py-line">            <tt class="py-name">a</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3511"></a><tt class="py-lineno">3511</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_version"></a><div id="_ETreeTestCaseBase.test_parser_version-def"><a name="L3512"></a><tt class="py-lineno">3512</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_version-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_version');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_version">test_parser_version</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_version-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_version-expanded"><a name="L3513"></a><tt class="py-lineno">3513</tt>  <tt class="py-line">        <tt id="link-3352" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3310', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3311" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3352', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3353" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3311', 'etree', 'link-9');">etree</a></tt> </tt>
-<a name="L3465"></a><tt class="py-lineno">3465</tt>  <tt class="py-line">        <tt id="link-3312" class="py-name" targets="Variable lxml.etree._ElementTree.parser=lxml.etree._ElementTree-class.html#parser,Variable lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3312', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-3313" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3353', 'etree', 'link-9');">etree</a></tt> </tt>
+<a name="L3514"></a><tt class="py-lineno">3514</tt>  <tt class="py-line">        <tt id="link-3354" class="py-name" targets="Variable lxml.etree._ElementTree.parser=lxml.etree._ElementTree-class.html#parser,Variable lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser=lxml.tests.test_pyclasslookup.PyClassLookupTestCase-class.html#parser"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3354', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt id="link-3355" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3313', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3314" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3355', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3356" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3314', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3466"></a><tt class="py-lineno">3466</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3315" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3315', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3316" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3316', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"version"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3467"></a><tt class="py-lineno">3467</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree 1.3+, cET</tt> </tt>
-<a name="L3468"></a><tt class="py-lineno">3468</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">"[^ ]+ [0-9.]+"</tt><tt class="py-op">,</tt> <tt id="link-3317" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3317', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3318" class="py-name" targets="Variable lxml.etree.iterparse.version=lxml.etree.iterparse-class.html#version"><a title="lxml.etree.iterparse.version" class="py-name" href="#" onclick="return doclink('link-3318', 'version', 'link-3318');">version</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3469"></a><tt class="py-lineno">3469</tt>  <tt class="py-line"> </tt>
-<a name="L3470"></a><tt class="py-lineno">3470</tt>  <tt class="py-line">    <tt class="py-comment"># feed parser interface</tt> </tt>
-<a name="L3471"></a><tt class="py-lineno">3471</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_bytes"></a><div id="_ETreeTestCaseBase.test_feed_parser_bytes-def"><a name="L3472"></a><tt class="py-lineno">3472</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_bytes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_bytes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_bytes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_bytes-expanded"><a name="L3473"></a><tt class="py-lineno">3473</tt>  <tt class="py-line">        <tt id="link-3319" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3319', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3320" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3356', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3515"></a><tt class="py-lineno">3515</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3357" class="py-name" targets="Method lxml.objectify.ObjectPath.hasattr()=lxml.objectify.ObjectPath-class.html#hasattr"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3357', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3358" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3358', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"version"</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3516"></a><tt class="py-lineno">3516</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree 1.3+, cET</tt> </tt>
+<a name="L3517"></a><tt class="py-lineno">3517</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">match</tt><tt class="py-op">(</tt><tt class="py-string">"[^ ]+ [0-9.]+"</tt><tt class="py-op">,</tt> <tt id="link-3359" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3359', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3360" class="py-name" targets="Variable lxml.etree.iterparse.version=lxml.etree.iterparse-class.html#version"><a title="lxml.etree.iterparse.version" class="py-name" href="#" onclick="return doclink('link-3360', 'version', 'link-3360');">version</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3518"></a><tt class="py-lineno">3518</tt>  <tt class="py-line"> </tt>
+<a name="L3519"></a><tt class="py-lineno">3519</tt>  <tt class="py-line">    <tt class="py-comment"># feed parser interface</tt> </tt>
+<a name="L3520"></a><tt class="py-lineno">3520</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_bytes"></a><div id="_ETreeTestCaseBase.test_feed_parser_bytes-def"><a name="L3521"></a><tt class="py-lineno">3521</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_bytes-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_bytes');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_bytes">test_feed_parser_bytes</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_bytes-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_bytes-expanded"><a name="L3522"></a><tt class="py-lineno">3522</tt>  <tt class="py-line">        <tt id="link-3361" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3361', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3362" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3320', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3474"></a><tt class="py-lineno">3474</tt>  <tt class="py-line"> </tt>
-<a name="L3475"></a><tt class="py-lineno">3475</tt>  <tt class="py-line">        <tt id="link-3321" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3321', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3322" class="py-name" targets="Method lxml.etree._FeedParser.feed()=lxml.etree._FeedParser-class.html#feed"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3322', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3323" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3323', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3476"></a><tt class="py-lineno">3476</tt>  <tt class="py-line">        <tt id="link-3324" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3324', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3325" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3325', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3326" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3326', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3477"></a><tt class="py-lineno">3477</tt>  <tt class="py-line">        <tt id="link-3327" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3327', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3328" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3328', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3329" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3329', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ot&gt;&lt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3478"></a><tt class="py-lineno">3478</tt>  <tt class="py-line">        <tt id="link-3330" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3330', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3331" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3331', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3332" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3332', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'a test="works"/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3479"></a><tt class="py-lineno">3479</tt>  <tt class="py-line">        <tt id="link-3333" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3333', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3334" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3334', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3335" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3335', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;&lt;/root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3480"></a><tt class="py-lineno">3480</tt>  <tt class="py-line">        <tt id="link-3336" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3336', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3337" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3337', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3338" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3338', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3481"></a><tt class="py-lineno">3481</tt>  <tt class="py-line"> </tt>
-<a name="L3482"></a><tt class="py-lineno">3482</tt>  <tt class="py-line">        <tt id="link-3339" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3339', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3340" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3340', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3341" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3362', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3523"></a><tt class="py-lineno">3523</tt>  <tt class="py-line"> </tt>
+<a name="L3524"></a><tt class="py-lineno">3524</tt>  <tt class="py-line">        <tt id="link-3363" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3363', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3364" class="py-name" targets="Method lxml.etree._FeedParser.feed()=lxml.etree._FeedParser-class.html#feed"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3364', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3365" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3365', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3525"></a><tt class="py-lineno">3525</tt>  <tt class="py-line">        <tt id="link-3366" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3366', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3367" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3367', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3368" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3368', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3526"></a><tt class="py-lineno">3526</tt>  <tt class="py-line">        <tt id="link-3369" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3369', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3370" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3370', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3371" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3371', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'ot&gt;&lt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3527"></a><tt class="py-lineno">3527</tt>  <tt class="py-line">        <tt id="link-3372" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3372', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3373" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3373', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3374" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3374', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'a test="works"/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3528"></a><tt class="py-lineno">3528</tt>  <tt class="py-line">        <tt id="link-3375" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3375', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3376" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3376', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3377" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3377', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;&lt;/root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3529"></a><tt class="py-lineno">3529</tt>  <tt class="py-line">        <tt id="link-3378" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3378', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3379" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3379', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3380" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3380', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3530"></a><tt class="py-lineno">3530</tt>  <tt class="py-line"> </tt>
+<a name="L3531"></a><tt class="py-lineno">3531</tt>  <tt class="py-line">        <tt id="link-3381" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3381', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3382" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3382', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3383" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3341', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3483"></a><tt class="py-lineno">3483</tt>  <tt class="py-line"> </tt>
-<a name="L3484"></a><tt class="py-lineno">3484</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3342" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3342', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3343" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3383', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3532"></a><tt class="py-lineno">3532</tt>  <tt class="py-line"> </tt>
+<a name="L3533"></a><tt class="py-lineno">3533</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3384" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3384', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3385" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3343', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3485"></a><tt class="py-lineno">3485</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3344" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3344', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3345" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3385', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3534"></a><tt class="py-lineno">3534</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3386" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3386', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3387" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3345', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3486"></a><tt class="py-lineno">3486</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3346" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3346', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3347" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3387', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3535"></a><tt class="py-lineno">3535</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3388" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3388', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3389" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3347', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"works"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3487"></a><tt class="py-lineno">3487</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_unicode"></a><div id="_ETreeTestCaseBase.test_feed_parser_unicode-def"><a name="L3488"></a><tt class="py-lineno">3488</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_unicode-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_unicode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_unicode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_unicode-expanded"><a name="L3489"></a><tt class="py-lineno">3489</tt>  <tt class="py-line">        <tt id="link-3348" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3348', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3349" class="py-name"><a title="lxml.etree.XMLParser
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3389', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"works"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3536"></a><tt class="py-lineno">3536</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_unicode"></a><div id="_ETreeTestCaseBase.test_feed_parser_unicode-def"><a name="L3537"></a><tt class="py-lineno">3537</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_unicode-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_unicode');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_unicode">test_feed_parser_unicode</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_unicode-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_unicode-expanded"><a name="L3538"></a><tt class="py-lineno">3538</tt>  <tt class="py-line">        <tt id="link-3390" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3390', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3391" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3349', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3490"></a><tt class="py-lineno">3490</tt>  <tt class="py-line"> </tt>
-<a name="L3491"></a><tt class="py-lineno">3491</tt>  <tt class="py-line">        <tt id="link-3350" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3350', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3351" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3351', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3352" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3352', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ro'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3492"></a><tt class="py-lineno">3492</tt>  <tt class="py-line">        <tt id="link-3353" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3353', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3354" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3354', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3355" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3355', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'ot&gt;&lt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3493"></a><tt class="py-lineno">3493</tt>  <tt class="py-line">        <tt id="link-3356" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3356', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3357" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3357', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3358" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3358', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'a test="works"/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3494"></a><tt class="py-lineno">3494</tt>  <tt class="py-line">        <tt id="link-3359" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3359', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3360" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3360', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3361" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3361', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;&lt;/root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3495"></a><tt class="py-lineno">3495</tt>  <tt class="py-line">        <tt id="link-3362" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3362', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3363" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3363', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3364" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3364', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3496"></a><tt class="py-lineno">3496</tt>  <tt class="py-line"> </tt>
-<a name="L3497"></a><tt class="py-lineno">3497</tt>  <tt class="py-line">        <tt id="link-3365" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3365', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3366" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3366', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3367" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3391', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3539"></a><tt class="py-lineno">3539</tt>  <tt class="py-line"> </tt>
+<a name="L3540"></a><tt class="py-lineno">3540</tt>  <tt class="py-line">        <tt id="link-3392" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3392', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3393" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3393', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3394" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3394', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;ro'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3541"></a><tt class="py-lineno">3541</tt>  <tt class="py-line">        <tt id="link-3395" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3395', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3396" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3396', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3397" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3397', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'ot&gt;&lt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3542"></a><tt class="py-lineno">3542</tt>  <tt class="py-line">        <tt id="link-3398" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3398', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3399" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3399', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3400" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3400', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'a test="works"/'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3543"></a><tt class="py-lineno">3543</tt>  <tt class="py-line">        <tt id="link-3401" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3401', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3402" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3402', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3403" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3403', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;&lt;/root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3544"></a><tt class="py-lineno">3544</tt>  <tt class="py-line">        <tt id="link-3404" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3404', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3405" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3405', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3406" class="py-name"><a title="lxml.tests.common_imports._str" class="py-name" href="#" onclick="return doclink('link-3406', '_str', 'link-21');">_str</a></tt><tt class="py-op">(</tt><tt class="py-string">'&gt;'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3545"></a><tt class="py-lineno">3545</tt>  <tt class="py-line"> </tt>
+<a name="L3546"></a><tt class="py-lineno">3546</tt>  <tt class="py-line">        <tt id="link-3407" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3407', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3408" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3408', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3409" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3367', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3498"></a><tt class="py-lineno">3498</tt>  <tt class="py-line"> </tt>
-<a name="L3499"></a><tt class="py-lineno">3499</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3368" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3368', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3369" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3409', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3547"></a><tt class="py-lineno">3547</tt>  <tt class="py-line"> </tt>
+<a name="L3548"></a><tt class="py-lineno">3548</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3410" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3410', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3411" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3369', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3500"></a><tt class="py-lineno">3500</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3370" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3370', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3371" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3411', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3549"></a><tt class="py-lineno">3549</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3412" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3412', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3413" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3371', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3501"></a><tt class="py-lineno">3501</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3372" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3372', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3373" class="py-name"><a title="lxml.etree._Attrib.get
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3413', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">"a"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3550"></a><tt class="py-lineno">3550</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3414" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3414', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3415" class="py-name"><a title="lxml.etree._Attrib.get
 lxml.etree._Element.get
 lxml.etree._IDDict.get
-lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3373', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"works"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3502"></a><tt class="py-lineno">3502</tt>  <tt class="py-line"> </tt>
-<a name="L3503"></a><tt class="py-lineno">3503</tt>  <tt class="py-line">    <tt id="link-3374" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3374', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_close_empty'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_error_close_empty"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-def"><a name="L3504"></a><tt class="py-lineno">3504</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_close_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-expanded"><a name="L3505"></a><tt class="py-lineno">3505</tt>  <tt class="py-line">        <tt id="link-3375" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3375', 'ParseError', 'link-2886');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3376" class="py-name"><a title="lxml.etree
+lxml.etree._ProcessingInstruction.get" class="py-name" href="#" onclick="return doclink('link-3415', 'get', 'link-330');">get</a></tt><tt class="py-op">(</tt><tt class="py-string">"test"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-string">"works"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3551"></a><tt class="py-lineno">3551</tt>  <tt class="py-line"> </tt>
+<a name="L3552"></a><tt class="py-lineno">3552</tt>  <tt class="py-line">    <tt id="link-3416" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3416', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_close_empty'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_error_close_empty"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-def"><a name="L3553"></a><tt class="py-lineno">3553</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_close_empty');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_empty">test_feed_parser_error_close_empty</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_empty-expanded"><a name="L3554"></a><tt class="py-lineno">3554</tt>  <tt class="py-line">        <tt id="link-3417" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3417', 'ParseError', 'link-2928');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3418" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3376', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3377" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3377', 'ParseError', 'link-2886');">ParseError</a></tt> </tt>
-<a name="L3506"></a><tt class="py-lineno">3506</tt>  <tt class="py-line">        <tt id="link-3378" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3378', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3379" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3418', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3419" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3419', 'ParseError', 'link-2928');">ParseError</a></tt> </tt>
+<a name="L3555"></a><tt class="py-lineno">3555</tt>  <tt class="py-line">        <tt id="link-3420" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3420', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3421" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3379', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3507"></a><tt class="py-lineno">3507</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3380" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3380', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3381" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3381', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3382" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3421', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3556"></a><tt class="py-lineno">3556</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3422" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3422', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3423" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3423', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3424" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3382', 'close', 'link-2771');">close</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3508"></a><tt class="py-lineno">3508</tt>  <tt class="py-line"> </tt>
-<a name="L3509"></a><tt class="py-lineno">3509</tt>  <tt class="py-line">    <tt id="link-3383" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3383', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_close_incomplete'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-def"><a name="L3510"></a><tt class="py-lineno">3510</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_close_incomplete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-expanded"><a name="L3511"></a><tt class="py-lineno">3511</tt>  <tt class="py-line">        <tt id="link-3384" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3384', 'ParseError', 'link-2886');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3385" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3424', 'close', 'link-2813');">close</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3557"></a><tt class="py-lineno">3557</tt>  <tt class="py-line"> </tt>
+<a name="L3558"></a><tt class="py-lineno">3558</tt>  <tt class="py-line">    <tt id="link-3425" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3425', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_close_incomplete'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-def"><a name="L3559"></a><tt class="py-lineno">3559</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_close_incomplete');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_close_incomplete">test_feed_parser_error_close_incomplete</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_close_incomplete-expanded"><a name="L3560"></a><tt class="py-lineno">3560</tt>  <tt class="py-line">        <tt id="link-3426" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3426', 'ParseError', 'link-2928');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3427" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3385', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3386" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3386', 'ParseError', 'link-2886');">ParseError</a></tt> </tt>
-<a name="L3512"></a><tt class="py-lineno">3512</tt>  <tt class="py-line">        <tt id="link-3387" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3387', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3388" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3427', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3428" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3428', 'ParseError', 'link-2928');">ParseError</a></tt> </tt>
+<a name="L3561"></a><tt class="py-lineno">3561</tt>  <tt class="py-line">        <tt id="link-3429" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3429', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3430" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3388', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3513"></a><tt class="py-lineno">3513</tt>  <tt class="py-line"> </tt>
-<a name="L3514"></a><tt class="py-lineno">3514</tt>  <tt class="py-line">        <tt id="link-3389" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3389', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3390" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3390', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt> </tt>
-<a name="L3515"></a><tt class="py-lineno">3515</tt>  <tt class="py-line">        <tt id="link-3391" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3391', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3392" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3392', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3516"></a><tt class="py-lineno">3516</tt>  <tt class="py-line"> </tt>
-<a name="L3517"></a><tt class="py-lineno">3517</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3393" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3393', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3394" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3394', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3395" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3430', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3562"></a><tt class="py-lineno">3562</tt>  <tt class="py-line"> </tt>
+<a name="L3563"></a><tt class="py-lineno">3563</tt>  <tt class="py-line">        <tt id="link-3431" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3431', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3432" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3432', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt> </tt>
+<a name="L3564"></a><tt class="py-lineno">3564</tt>  <tt class="py-line">        <tt id="link-3433" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3433', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3434" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3434', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3565"></a><tt class="py-lineno">3565</tt>  <tt class="py-line"> </tt>
+<a name="L3566"></a><tt class="py-lineno">3566</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3435" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3435', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3436" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3436', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3437" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3395', 'close', 'link-2771');">close</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3518"></a><tt class="py-lineno">3518</tt>  <tt class="py-line"> </tt>
-<a name="L3519"></a><tt class="py-lineno">3519</tt>  <tt class="py-line">    <tt id="link-3396" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3396', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_broken'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_error_broken"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-def"><a name="L3520"></a><tt class="py-lineno">3520</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_broken-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_broken');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-expanded"><a name="L3521"></a><tt class="py-lineno">3521</tt>  <tt class="py-line">        <tt id="link-3397" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3397', 'ParseError', 'link-2886');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3398" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3437', 'close', 'link-2813');">close</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3567"></a><tt class="py-lineno">3567</tt>  <tt class="py-line"> </tt>
+<a name="L3568"></a><tt class="py-lineno">3568</tt>  <tt class="py-line">    <tt id="link-3438" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3438', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_broken'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_error_broken"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-def"><a name="L3569"></a><tt class="py-lineno">3569</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_broken-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_broken');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_broken">test_feed_parser_error_broken</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_broken-expanded"><a name="L3570"></a><tt class="py-lineno">3570</tt>  <tt class="py-line">        <tt id="link-3439" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3439', 'ParseError', 'link-2928');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3440" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3398', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3399" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3399', 'ParseError', 'link-2886');">ParseError</a></tt> </tt>
-<a name="L3522"></a><tt class="py-lineno">3522</tt>  <tt class="py-line">        <tt id="link-3400" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3400', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3401" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3440', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3441" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3441', 'ParseError', 'link-2928');">ParseError</a></tt> </tt>
+<a name="L3571"></a><tt class="py-lineno">3571</tt>  <tt class="py-line">        <tt id="link-3442" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3442', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3443" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3401', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3523"></a><tt class="py-lineno">3523</tt>  <tt class="py-line"> </tt>
-<a name="L3524"></a><tt class="py-lineno">3524</tt>  <tt class="py-line">        <tt id="link-3402" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3402', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3403" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3403', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt> </tt>
-<a name="L3525"></a><tt class="py-lineno">3525</tt>  <tt class="py-line">        <tt id="link-3404" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3404', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3405" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3405', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3526"></a><tt class="py-lineno">3526</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3527"></a><tt class="py-lineno">3527</tt>  <tt class="py-line">            <tt id="link-3406" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3406', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3407" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3407', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3528"></a><tt class="py-lineno">3528</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-3408" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3408', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L3529"></a><tt class="py-lineno">3529</tt>  <tt class="py-line">            <tt class="py-comment"># can raise, but not required before close()</tt> </tt>
-<a name="L3530"></a><tt class="py-lineno">3530</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-<a name="L3531"></a><tt class="py-lineno">3531</tt>  <tt class="py-line"> </tt>
-<a name="L3532"></a><tt class="py-lineno">3532</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3409" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3409', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3410" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3410', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3411" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3443', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3572"></a><tt class="py-lineno">3572</tt>  <tt class="py-line"> </tt>
+<a name="L3573"></a><tt class="py-lineno">3573</tt>  <tt class="py-line">        <tt id="link-3444" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3444', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3445" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3445', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;?xml version='</tt><tt class="py-op">)</tt> </tt>
+<a name="L3574"></a><tt class="py-lineno">3574</tt>  <tt class="py-line">        <tt id="link-3446" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3446', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3447" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3447', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'"1.0"?&gt;&lt;ro'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3575"></a><tt class="py-lineno">3575</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3576"></a><tt class="py-lineno">3576</tt>  <tt class="py-line">            <tt id="link-3448" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3448', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3449" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3449', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;&gt;&lt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3577"></a><tt class="py-lineno">3577</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-3450" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3450', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L3578"></a><tt class="py-lineno">3578</tt>  <tt class="py-line">            <tt class="py-comment"># can raise, but not required before close()</tt> </tt>
+<a name="L3579"></a><tt class="py-lineno">3579</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+<a name="L3580"></a><tt class="py-lineno">3580</tt>  <tt class="py-line"> </tt>
+<a name="L3581"></a><tt class="py-lineno">3581</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt id="link-3451" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3451', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3452" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3452', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3453" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3411', 'close', 'link-2771');">close</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3533"></a><tt class="py-lineno">3533</tt>  <tt class="py-line"> </tt>
-<a name="L3534"></a><tt class="py-lineno">3534</tt>  <tt class="py-line">    <tt id="link-3412" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3412', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_position'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_feed_parser_error_position"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_position-def"><a name="L3535"></a><tt class="py-lineno">3535</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_position-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_position');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_feed_parser_error_position-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_position-expanded"><a name="L3536"></a><tt class="py-lineno">3536</tt>  <tt class="py-line">        <tt id="link-3413" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3413', 'ParseError', 'link-2886');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3414" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3453', 'close', 'link-2813');">close</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3582"></a><tt class="py-lineno">3582</tt>  <tt class="py-line"> </tt>
+<a name="L3583"></a><tt class="py-lineno">3583</tt>  <tt class="py-line">    <tt id="link-3454" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3454', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_feed_parser_error_position'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_feed_parser_error_position"></a><div id="_ETreeTestCaseBase.test_feed_parser_error_position-def"><a name="L3584"></a><tt class="py-lineno">3584</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_feed_parser_error_position-toggle" onclick="return toggle('_ETreeTestCaseBase.test_feed_parser_error_position');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_feed_parser_error_position">test_feed_parser_error_position</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_feed_parser_error_position-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_feed_parser_error_position-expanded"><a name="L3585"></a><tt class="py-lineno">3585</tt>  <tt class="py-line">        <tt id="link-3455" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3455', 'ParseError', 'link-2928');">ParseError</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3456" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3414', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3415" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3415', 'ParseError', 'link-2886');">ParseError</a></tt> </tt>
-<a name="L3537"></a><tt class="py-lineno">3537</tt>  <tt class="py-line">        <tt id="link-3416" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3416', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3417" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3456', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3457" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3457', 'ParseError', 'link-2928');">ParseError</a></tt> </tt>
+<a name="L3586"></a><tt class="py-lineno">3586</tt>  <tt class="py-line">        <tt id="link-3458" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3458', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3459" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3417', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3538"></a><tt class="py-lineno">3538</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3539"></a><tt class="py-lineno">3539</tt>  <tt class="py-line">            <tt id="link-3418" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3418', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3419" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3459', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3587"></a><tt class="py-lineno">3587</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3588"></a><tt class="py-lineno">3588</tt>  <tt class="py-line">            <tt id="link-3460" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3460', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3461" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3419', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3540"></a><tt class="py-lineno">3540</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-3420" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3420', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L3541"></a><tt class="py-lineno">3541</tt>  <tt class="py-line">            <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
-<a name="L3542"></a><tt class="py-lineno">3542</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> </tt>
-<a name="L3543"></a><tt class="py-lineno">3543</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> </tt>
-<a name="L3544"></a><tt class="py-lineno">3544</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3421" class="py-name" targets="Variable lxml.etree.ParseError.position=lxml.etree.ParseError-class.html#position"><a title="lxml.etree.ParseError.position" class="py-name" href="#" onclick="return doclink('link-3421', 'position', 'link-3421');">position</a></tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3545"></a><tt class="py-lineno">3545</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3422" class="py-name"><a title="lxml.etree.ParseError.position" class="py-name" href="#" onclick="return doclink('link-3422', 'position', 'link-3421');">position</a></tt> <tt class="py-op">&gt;=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3546"></a><tt class="py-lineno">3546</tt>  <tt class="py-line"> </tt>
-<a name="L3547"></a><tt class="py-lineno">3547</tt>  <tt class="py-line">    <tt class="py-comment"># parser target interface</tt> </tt>
-<a name="L3548"></a><tt class="py-lineno">3548</tt>  <tt class="py-line"> </tt>
-<a name="L3549"></a><tt class="py-lineno">3549</tt>  <tt class="py-line">    <tt id="link-3423" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3423', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parser_target_property'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_property"></a><div id="_ETreeTestCaseBase.test_parser_target_property-def"><a name="L3550"></a><tt class="py-lineno">3550</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_property-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_property');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_property">test_parser_target_property</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_property-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_property-expanded"><a name="L3551"></a><tt class="py-lineno">3551</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3552"></a><tt class="py-lineno">3552</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
-</div><a name="L3553"></a><tt class="py-lineno">3553</tt>  <tt class="py-line"> </tt>
-<a name="L3554"></a><tt class="py-lineno">3554</tt>  <tt class="py-line">        <tt id="link-3424" class="py-name" targets="Variable lxml.etree._ProcessingInstruction.target=lxml.etree._ProcessingInstruction-class.html#target"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3424', 'target', 'link-3424');">target</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3555"></a><tt class="py-lineno">3555</tt>  <tt class="py-line">        <tt id="link-3425" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3425', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3426" class="py-name"><a title="lxml.etree.XMLParser
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3461', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3589"></a><tt class="py-lineno">3589</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt id="link-3462" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3462', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L3590"></a><tt class="py-lineno">3590</tt>  <tt class="py-line">            <tt class="py-name">e</tt> <tt class="py-op">=</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt> </tt>
+<a name="L3591"></a><tt class="py-lineno">3591</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> </tt>
+<a name="L3592"></a><tt class="py-lineno">3592</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertNotEqual</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">e</tt><tt class="py-op">.</tt><tt class="py-name">code</tt><tt class="py-op">)</tt> </tt>
+<a name="L3593"></a><tt class="py-lineno">3593</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3463" class="py-name" targets="Variable lxml.etree.ParseError.position=lxml.etree.ParseError-class.html#position"><a title="lxml.etree.ParseError.position" class="py-name" href="#" onclick="return doclink('link-3463', 'position', 'link-3463');">position</a></tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3594"></a><tt class="py-lineno">3594</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">e</tt><tt class="py-op">.</tt><tt id="link-3464" class="py-name"><a title="lxml.etree.ParseError.position" class="py-name" href="#" onclick="return doclink('link-3464', 'position', 'link-3463');">position</a></tt> <tt class="py-op">&gt;=</tt> <tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3595"></a><tt class="py-lineno">3595</tt>  <tt class="py-line"> </tt>
+<a name="L3596"></a><tt class="py-lineno">3596</tt>  <tt class="py-line">    <tt class="py-comment"># parser target interface</tt> </tt>
+<a name="L3597"></a><tt class="py-lineno">3597</tt>  <tt class="py-line"> </tt>
+<a name="L3598"></a><tt class="py-lineno">3598</tt>  <tt class="py-line">    <tt id="link-3465" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3465', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parser_target_property'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_property"></a><div id="_ETreeTestCaseBase.test_parser_target_property-def"><a name="L3599"></a><tt class="py-lineno">3599</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_property-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_property');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_property">test_parser_target_property</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_property-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_property-expanded"><a name="L3600"></a><tt class="py-lineno">3600</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3601"></a><tt class="py-lineno">3601</tt>  <tt class="py-line">            <tt class="py-keyword">pass</tt> </tt>
+</div><a name="L3602"></a><tt class="py-lineno">3602</tt>  <tt class="py-line"> </tt>
+<a name="L3603"></a><tt class="py-lineno">3603</tt>  <tt class="py-line">        <tt id="link-3466" class="py-name" targets="Variable lxml.etree._ProcessingInstruction.target=lxml.etree._ProcessingInstruction-class.html#target"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3466', 'target', 'link-3466');">target</a></tt> <tt class="py-op">=</tt> <tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3604"></a><tt class="py-lineno">3604</tt>  <tt class="py-line">        <tt id="link-3467" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3467', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3468" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3426', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3427" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3427', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt id="link-3428" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3428', 'target', 'link-3424');">target</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3556"></a><tt class="py-lineno">3556</tt>  <tt class="py-line"> </tt>
-<a name="L3557"></a><tt class="py-lineno">3557</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3429" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3429', 'target', 'link-3424');">target</a></tt><tt class="py-op">,</tt> <tt id="link-3430" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3430', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3431" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3431', 'target', 'link-3424');">target</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3558"></a><tt class="py-lineno">3558</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_tag"></a><div id="_ETreeTestCaseBase.test_parser_target_tag-def"><a name="L3559"></a><tt class="py-lineno">3559</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_tag-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_tag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_tag">test_parser_target_tag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_tag-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_tag-expanded"><a name="L3560"></a><tt class="py-lineno">3560</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3561"></a><tt class="py-lineno">3561</tt>  <tt class="py-line">        <tt class="py-name">assertFalse</tt>  <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt> </tt>
-<a name="L3562"></a><tt class="py-lineno">3562</tt>  <tt class="py-line"> </tt>
-<a name="L3563"></a><tt class="py-lineno">3563</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3564"></a><tt class="py-lineno">3564</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3565"></a><tt class="py-lineno">3565</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3566"></a><tt class="py-lineno">3566</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3432" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3432', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3567"></a><tt class="py-lineno">3567</tt>  <tt class="py-line">                <tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt id="link-3433" class="py-name"><a title="lxml.etree._Element.attrib
-lxml.etree._ProcessingInstruction.attrib
-lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3433', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3568"></a><tt class="py-lineno">3568</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3434" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3468', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3469" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3469', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt id="link-3470" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3470', 'target', 'link-3466');">target</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3605"></a><tt class="py-lineno">3605</tt>  <tt class="py-line"> </tt>
+<a name="L3606"></a><tt class="py-lineno">3606</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3471" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3471', 'target', 'link-3466');">target</a></tt><tt class="py-op">,</tt> <tt id="link-3472" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3472', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3473" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3473', 'target', 'link-3466');">target</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3607"></a><tt class="py-lineno">3607</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_tag"></a><div id="_ETreeTestCaseBase.test_parser_target_tag-def"><a name="L3608"></a><tt class="py-lineno">3608</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_tag-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_tag');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_tag">test_parser_target_tag</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_tag-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_tag-expanded"><a name="L3609"></a><tt class="py-lineno">3609</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3610"></a><tt class="py-lineno">3610</tt>  <tt class="py-line">        <tt class="py-name">assertFalse</tt>  <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt> </tt>
+<a name="L3611"></a><tt class="py-lineno">3611</tt>  <tt class="py-line"> </tt>
+<a name="L3612"></a><tt class="py-lineno">3612</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3613"></a><tt class="py-lineno">3613</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3614"></a><tt class="py-lineno">3614</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3615"></a><tt class="py-lineno">3615</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3474" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3474', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3616"></a><tt class="py-lineno">3616</tt>  <tt class="py-line">                <tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt id="link-3475" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.etree._ProcessingInstruction.attrib
+lxml.tests.selftest2.attrib
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3475', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3617"></a><tt class="py-lineno">3617</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3476" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3434', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3569"></a><tt class="py-lineno">3569</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3570"></a><tt class="py-lineno">3570</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3435" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3435', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3571"></a><tt class="py-lineno">3571</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3436" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3476', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3618"></a><tt class="py-lineno">3618</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3619"></a><tt class="py-lineno">3619</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3477" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3477', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3620"></a><tt class="py-lineno">3620</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3478" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3436', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3572"></a><tt class="py-lineno">3572</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3573"></a><tt class="py-lineno">3573</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3574"></a><tt class="py-lineno">3574</tt>  <tt class="py-line"> </tt>
-<a name="L3575"></a><tt class="py-lineno">3575</tt>  <tt class="py-line">        <tt id="link-3437" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3437', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3438" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3478', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3621"></a><tt class="py-lineno">3621</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3622"></a><tt class="py-lineno">3622</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3623"></a><tt class="py-lineno">3623</tt>  <tt class="py-line"> </tt>
+<a name="L3624"></a><tt class="py-lineno">3624</tt>  <tt class="py-line">        <tt id="link-3479" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3479', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3480" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3438', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3439" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3439', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3576"></a><tt class="py-lineno">3576</tt>  <tt class="py-line"> </tt>
-<a name="L3577"></a><tt class="py-lineno">3577</tt>  <tt class="py-line">        <tt id="link-3440" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3440', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3441" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3441', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3578"></a><tt class="py-lineno">3578</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3442" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3442', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3443" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3480', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3481" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3481', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3625"></a><tt class="py-lineno">3625</tt>  <tt class="py-line"> </tt>
+<a name="L3626"></a><tt class="py-lineno">3626</tt>  <tt class="py-line">        <tt id="link-3482" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3482', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3483" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3483', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3627"></a><tt class="py-lineno">3627</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3484" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3484', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3485" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3443', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3579"></a><tt class="py-lineno">3579</tt>  <tt class="py-line"> </tt>
-<a name="L3580"></a><tt class="py-lineno">3580</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
-<a name="L3581"></a><tt class="py-lineno">3581</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3582"></a><tt class="py-lineno">3582</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_error_in_start"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-def"><a name="L3583"></a><tt class="py-lineno">3583</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_start-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_start');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start">test_parser_target_error_in_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-expanded"><a name="L3584"></a><tt class="py-lineno">3584</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3585"></a><tt class="py-lineno">3585</tt>  <tt class="py-line"> </tt>
-<a name="L3586"></a><tt class="py-lineno">3586</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3587"></a><tt class="py-lineno">3587</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3588"></a><tt class="py-lineno">3588</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3589"></a><tt class="py-lineno">3589</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3444" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3444', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3590"></a><tt class="py-lineno">3590</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3445" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3485', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3628"></a><tt class="py-lineno">3628</tt>  <tt class="py-line"> </tt>
+<a name="L3629"></a><tt class="py-lineno">3629</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
+<a name="L3630"></a><tt class="py-lineno">3630</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3631"></a><tt class="py-lineno">3631</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_error_in_start"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-def"><a name="L3632"></a><tt class="py-lineno">3632</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_start-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_start');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start">test_parser_target_error_in_start</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start-expanded"><a name="L3633"></a><tt class="py-lineno">3633</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3634"></a><tt class="py-lineno">3634</tt>  <tt class="py-line"> </tt>
+<a name="L3635"></a><tt class="py-lineno">3635</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3636"></a><tt class="py-lineno">3636</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3637"></a><tt class="py-lineno">3637</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3638"></a><tt class="py-lineno">3638</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3486" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3486', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3639"></a><tt class="py-lineno">3639</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3487" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3445', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3591"></a><tt class="py-lineno">3591</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3592"></a><tt class="py-lineno">3592</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3593"></a><tt class="py-lineno">3593</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3446" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3446', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3594"></a><tt class="py-lineno">3594</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3447" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3487', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3640"></a><tt class="py-lineno">3640</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3641"></a><tt class="py-lineno">3641</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3642"></a><tt class="py-lineno">3642</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3488" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3488', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3643"></a><tt class="py-lineno">3643</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3489" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3447', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3595"></a><tt class="py-lineno">3595</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3596"></a><tt class="py-lineno">3596</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3597"></a><tt class="py-lineno">3597</tt>  <tt class="py-line"> </tt>
-<a name="L3598"></a><tt class="py-lineno">3598</tt>  <tt class="py-line">        <tt id="link-3448" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3448', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3449" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3489', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3644"></a><tt class="py-lineno">3644</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3645"></a><tt class="py-lineno">3645</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3646"></a><tt class="py-lineno">3646</tt>  <tt class="py-line"> </tt>
+<a name="L3647"></a><tt class="py-lineno">3647</tt>  <tt class="py-line">        <tt id="link-3490" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3490', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3491" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3449', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3450" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3450', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3599"></a><tt class="py-lineno">3599</tt>  <tt class="py-line"> </tt>
-<a name="L3600"></a><tt class="py-lineno">3600</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3601"></a><tt class="py-lineno">3601</tt>  <tt class="py-line">            <tt id="link-3451" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3451', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3452" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3452', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3602"></a><tt class="py-lineno">3602</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L3603"></a><tt class="py-lineno">3603</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3453" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3453', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3604"></a><tt class="py-lineno">3604</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3605"></a><tt class="py-lineno">3605</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L3606"></a><tt class="py-lineno">3606</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3454" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3454', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
-<a name="L3607"></a><tt class="py-lineno">3607</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-<a name="L3608"></a><tt class="py-lineno">3608</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3609"></a><tt class="py-lineno">3609</tt>  <tt class="py-line">            <tt class="py-comment"># cElementTree calls end() as well</tt> </tt>
-<a name="L3610"></a><tt class="py-lineno">3610</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3611"></a><tt class="py-lineno">3611</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_error_in_end"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-def"><a name="L3612"></a><tt class="py-lineno">3612</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_end">test_parser_target_error_in_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-expanded"><a name="L3613"></a><tt class="py-lineno">3613</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3614"></a><tt class="py-lineno">3614</tt>  <tt class="py-line"> </tt>
-<a name="L3615"></a><tt class="py-lineno">3615</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3616"></a><tt class="py-lineno">3616</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3617"></a><tt class="py-lineno">3617</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3618"></a><tt class="py-lineno">3618</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3455" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3455', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3619"></a><tt class="py-lineno">3619</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3456" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3491', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3492" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3492', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3648"></a><tt class="py-lineno">3648</tt>  <tt class="py-line"> </tt>
+<a name="L3649"></a><tt class="py-lineno">3649</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3650"></a><tt class="py-lineno">3650</tt>  <tt class="py-line">            <tt id="link-3493" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3493', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3494" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3494', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3651"></a><tt class="py-lineno">3651</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L3652"></a><tt class="py-lineno">3652</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3495" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3495', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3653"></a><tt class="py-lineno">3653</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3654"></a><tt class="py-lineno">3654</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L3655"></a><tt class="py-lineno">3655</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3496" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3496', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
+<a name="L3656"></a><tt class="py-lineno">3656</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+<a name="L3657"></a><tt class="py-lineno">3657</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3658"></a><tt class="py-lineno">3658</tt>  <tt class="py-line">            <tt class="py-comment"># cElementTree calls end() as well</tt> </tt>
+<a name="L3659"></a><tt class="py-lineno">3659</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3660"></a><tt class="py-lineno">3660</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_error_in_end"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-def"><a name="L3661"></a><tt class="py-lineno">3661</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_end-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_end');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_end">test_parser_target_error_in_end</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_end-expanded"><a name="L3662"></a><tt class="py-lineno">3662</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3663"></a><tt class="py-lineno">3663</tt>  <tt class="py-line"> </tt>
+<a name="L3664"></a><tt class="py-lineno">3664</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3665"></a><tt class="py-lineno">3665</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3666"></a><tt class="py-lineno">3666</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3667"></a><tt class="py-lineno">3667</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3497" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3497', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3668"></a><tt class="py-lineno">3668</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3498" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3456', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3620"></a><tt class="py-lineno">3620</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3621"></a><tt class="py-lineno">3621</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3457" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3457', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3622"></a><tt class="py-lineno">3622</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3458" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3498', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3669"></a><tt class="py-lineno">3669</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3670"></a><tt class="py-lineno">3670</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3499" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3499', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3671"></a><tt class="py-lineno">3671</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3500" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3458', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3623"></a><tt class="py-lineno">3623</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3624"></a><tt class="py-lineno">3624</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3625"></a><tt class="py-lineno">3625</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3626"></a><tt class="py-lineno">3626</tt>  <tt class="py-line"> </tt>
-<a name="L3627"></a><tt class="py-lineno">3627</tt>  <tt class="py-line">        <tt id="link-3459" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3459', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3460" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3500', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3672"></a><tt class="py-lineno">3672</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3673"></a><tt class="py-lineno">3673</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3674"></a><tt class="py-lineno">3674</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3675"></a><tt class="py-lineno">3675</tt>  <tt class="py-line"> </tt>
+<a name="L3676"></a><tt class="py-lineno">3676</tt>  <tt class="py-line">        <tt id="link-3501" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3501', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3502" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3460', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3461" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3461', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3628"></a><tt class="py-lineno">3628</tt>  <tt class="py-line"> </tt>
-<a name="L3629"></a><tt class="py-lineno">3629</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3630"></a><tt class="py-lineno">3630</tt>  <tt class="py-line">            <tt id="link-3462" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3462', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3463" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3463', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3631"></a><tt class="py-lineno">3631</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L3632"></a><tt class="py-lineno">3632</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3464" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3464', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3633"></a><tt class="py-lineno">3633</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3634"></a><tt class="py-lineno">3634</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L3635"></a><tt class="py-lineno">3635</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3636"></a><tt class="py-lineno">3636</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_error_in_close"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-def"><a name="L3637"></a><tt class="py-lineno">3637</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_close-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_close">test_parser_target_error_in_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-expanded"><a name="L3638"></a><tt class="py-lineno">3638</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3639"></a><tt class="py-lineno">3639</tt>  <tt class="py-line"> </tt>
-<a name="L3640"></a><tt class="py-lineno">3640</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3641"></a><tt class="py-lineno">3641</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3642"></a><tt class="py-lineno">3642</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3643"></a><tt class="py-lineno">3643</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3465" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3465', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3644"></a><tt class="py-lineno">3644</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3466" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3502', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3503" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3503', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3677"></a><tt class="py-lineno">3677</tt>  <tt class="py-line"> </tt>
+<a name="L3678"></a><tt class="py-lineno">3678</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3679"></a><tt class="py-lineno">3679</tt>  <tt class="py-line">            <tt id="link-3504" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3504', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3505" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3505', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3680"></a><tt class="py-lineno">3680</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L3681"></a><tt class="py-lineno">3681</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3506" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3506', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3682"></a><tt class="py-lineno">3682</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3683"></a><tt class="py-lineno">3683</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L3684"></a><tt class="py-lineno">3684</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3685"></a><tt class="py-lineno">3685</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_error_in_close"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-def"><a name="L3686"></a><tt class="py-lineno">3686</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_close-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_close">test_parser_target_error_in_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_close-expanded"><a name="L3687"></a><tt class="py-lineno">3687</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3688"></a><tt class="py-lineno">3688</tt>  <tt class="py-line"> </tt>
+<a name="L3689"></a><tt class="py-lineno">3689</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3690"></a><tt class="py-lineno">3690</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3691"></a><tt class="py-lineno">3691</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3692"></a><tt class="py-lineno">3692</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3507" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3507', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3693"></a><tt class="py-lineno">3693</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3508" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3466', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3645"></a><tt class="py-lineno">3645</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3646"></a><tt class="py-lineno">3646</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3467" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3467', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3647"></a><tt class="py-lineno">3647</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3468" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3508', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3694"></a><tt class="py-lineno">3694</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3695"></a><tt class="py-lineno">3695</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3509" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3509', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3696"></a><tt class="py-lineno">3696</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3510" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3468', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3648"></a><tt class="py-lineno">3648</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3649"></a><tt class="py-lineno">3649</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L3650"></a><tt class="py-lineno">3650</tt>  <tt class="py-line"> </tt>
-<a name="L3651"></a><tt class="py-lineno">3651</tt>  <tt class="py-line">        <tt id="link-3469" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3469', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3470" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3510', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3697"></a><tt class="py-lineno">3697</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3698"></a><tt class="py-lineno">3698</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L3699"></a><tt class="py-lineno">3699</tt>  <tt class="py-line"> </tt>
+<a name="L3700"></a><tt class="py-lineno">3700</tt>  <tt class="py-line">        <tt id="link-3511" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3511', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3512" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3470', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3471" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3471', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3652"></a><tt class="py-lineno">3652</tt>  <tt class="py-line"> </tt>
-<a name="L3653"></a><tt class="py-lineno">3653</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3654"></a><tt class="py-lineno">3654</tt>  <tt class="py-line">            <tt id="link-3472" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3472', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3473" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3473', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3655"></a><tt class="py-lineno">3655</tt>  <tt class="py-line">            <tt id="link-3474" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3474', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3475" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3512', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3513" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3513', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3701"></a><tt class="py-lineno">3701</tt>  <tt class="py-line"> </tt>
+<a name="L3702"></a><tt class="py-lineno">3702</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3703"></a><tt class="py-lineno">3703</tt>  <tt class="py-line">            <tt id="link-3514" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3514', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3515" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3515', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3704"></a><tt class="py-lineno">3704</tt>  <tt class="py-line">            <tt id="link-3516" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3516', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3517" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3475', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3656"></a><tt class="py-lineno">3656</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L3657"></a><tt class="py-lineno">3657</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3476" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3476', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3658"></a><tt class="py-lineno">3658</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3659"></a><tt class="py-lineno">3659</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L3660"></a><tt class="py-lineno">3660</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3661"></a><tt class="py-lineno">3661</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-def"><a name="L3662"></a><tt class="py-lineno">3662</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_start_and_close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start_and_close">test_parser_target_error_in_start_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-expanded"><a name="L3663"></a><tt class="py-lineno">3663</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3664"></a><tt class="py-lineno">3664</tt>  <tt class="py-line"> </tt>
-<a name="L3665"></a><tt class="py-lineno">3665</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3666"></a><tt class="py-lineno">3666</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3667"></a><tt class="py-lineno">3667</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3668"></a><tt class="py-lineno">3668</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3477" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3477', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3669"></a><tt class="py-lineno">3669</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3478" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3517', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3705"></a><tt class="py-lineno">3705</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L3706"></a><tt class="py-lineno">3706</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST'</tt> <tt class="py-keyword">in</tt> <tt id="link-3518" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3518', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3707"></a><tt class="py-lineno">3707</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3708"></a><tt class="py-lineno">3708</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L3709"></a><tt class="py-lineno">3709</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3710"></a><tt class="py-lineno">3710</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close"></a><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-def"><a name="L3711"></a><tt class="py-lineno">3711</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_error_in_start_and_close');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_error_in_start_and_close">test_parser_target_error_in_start_and_close</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_error_in_start_and_close-expanded"><a name="L3712"></a><tt class="py-lineno">3712</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3713"></a><tt class="py-lineno">3713</tt>  <tt class="py-line"> </tt>
+<a name="L3714"></a><tt class="py-lineno">3714</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3715"></a><tt class="py-lineno">3715</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3716"></a><tt class="py-lineno">3716</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3717"></a><tt class="py-lineno">3717</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3519" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3519', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3718"></a><tt class="py-lineno">3718</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3520" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3478', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3670"></a><tt class="py-lineno">3670</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">IndexError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST-IE"</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3671"></a><tt class="py-lineno">3671</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3672"></a><tt class="py-lineno">3672</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3479" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3479', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3673"></a><tt class="py-lineno">3673</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3480" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3520', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3719"></a><tt class="py-lineno">3719</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">IndexError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST-IE"</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3720"></a><tt class="py-lineno">3720</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3721"></a><tt class="py-lineno">3721</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3521" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3521', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3722"></a><tt class="py-lineno">3722</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3522" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3480', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3674"></a><tt class="py-lineno">3674</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3675"></a><tt class="py-lineno">3675</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST-VE"</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L3676"></a><tt class="py-lineno">3676</tt>  <tt class="py-line"> </tt>
-<a name="L3677"></a><tt class="py-lineno">3677</tt>  <tt class="py-line">        <tt id="link-3481" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3481', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3482" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3522', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3723"></a><tt class="py-lineno">3723</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3724"></a><tt class="py-lineno">3724</tt>  <tt class="py-line">                <tt class="py-keyword">raise</tt> <tt class="py-name">ValueError</tt><tt class="py-op">(</tt><tt class="py-string">"TEST-VE"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L3725"></a><tt class="py-lineno">3725</tt>  <tt class="py-line"> </tt>
+<a name="L3726"></a><tt class="py-lineno">3726</tt>  <tt class="py-line">        <tt id="link-3523" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3523', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3524" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3482', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3483" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3483', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3678"></a><tt class="py-lineno">3678</tt>  <tt class="py-line"> </tt>
-<a name="L3679"></a><tt class="py-lineno">3679</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3680"></a><tt class="py-lineno">3680</tt>  <tt class="py-line">            <tt id="link-3484" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3484', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3485" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3485', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3681"></a><tt class="py-lineno">3681</tt>  <tt class="py-line">            <tt id="link-3486" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3486', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3487" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3524', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3525" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3525', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3727"></a><tt class="py-lineno">3727</tt>  <tt class="py-line"> </tt>
+<a name="L3728"></a><tt class="py-lineno">3728</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3729"></a><tt class="py-lineno">3729</tt>  <tt class="py-line">            <tt id="link-3526" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3526', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3527" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3527', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3730"></a><tt class="py-lineno">3730</tt>  <tt class="py-line">            <tt id="link-3528" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3528', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3529" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3487', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3682"></a><tt class="py-lineno">3682</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
-<a name="L3683"></a><tt class="py-lineno">3683</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3488" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3529', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3731"></a><tt class="py-lineno">3731</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">IndexError</tt><tt class="py-op">:</tt> </tt>
+<a name="L3732"></a><tt class="py-lineno">3732</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3530" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3488', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
-<a name="L3684"></a><tt class="py-lineno">3684</tt>  <tt class="py-line">                <tt class="py-comment"># we try not to swallow the initial exception in Py2</tt> </tt>
-<a name="L3685"></a><tt class="py-lineno">3685</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L3686"></a><tt class="py-lineno">3686</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST-IE'</tt> <tt class="py-keyword">in</tt> <tt id="link-3489" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3489', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3687"></a><tt class="py-lineno">3687</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L3688"></a><tt class="py-lineno">3688</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3490" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3530', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
+<a name="L3733"></a><tt class="py-lineno">3733</tt>  <tt class="py-line">                <tt class="py-comment"># we try not to swallow the initial exception in Py2</tt> </tt>
+<a name="L3734"></a><tt class="py-lineno">3734</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&lt;</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L3735"></a><tt class="py-lineno">3735</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST-IE'</tt> <tt class="py-keyword">in</tt> <tt id="link-3531" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3531', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3736"></a><tt class="py-lineno">3736</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L3737"></a><tt class="py-lineno">3737</tt>  <tt class="py-line">            <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3532" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3490', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
-<a name="L3689"></a><tt class="py-lineno">3689</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="L3690"></a><tt class="py-lineno">3690</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST-VE'</tt> <tt class="py-keyword">in</tt> <tt id="link-3491" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3491', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3691"></a><tt class="py-lineno">3691</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3692"></a><tt class="py-lineno">3692</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-<a name="L3693"></a><tt class="py-lineno">3693</tt>  <tt class="py-line"> </tt>
-<a name="L3694"></a><tt class="py-lineno">3694</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3492" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3532', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
+<a name="L3738"></a><tt class="py-lineno">3738</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">version_info</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> <tt class="py-op">&gt;=</tt> <tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="L3739"></a><tt class="py-lineno">3739</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">'TEST-VE'</tt> <tt class="py-keyword">in</tt> <tt id="link-3533" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3533', 'str', 'link-682');">str</a></tt><tt class="py-op">(</tt><tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">1</tt><tt class="py-op">]</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3740"></a><tt class="py-lineno">3740</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3741"></a><tt class="py-lineno">3741</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+<a name="L3742"></a><tt class="py-lineno">3742</tt>  <tt class="py-line"> </tt>
+<a name="L3743"></a><tt class="py-lineno">3743</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'lxml'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3534" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3492', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
-<a name="L3695"></a><tt class="py-lineno">3695</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-<a name="L3696"></a><tt class="py-lineno">3696</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3697"></a><tt class="py-lineno">3697</tt>  <tt class="py-line">            <tt class="py-comment"># cElementTree calls end() as well</tt> </tt>
-<a name="L3698"></a><tt class="py-lineno">3698</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3699"></a><tt class="py-lineno">3699</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_elementtree_parser_target"></a><div id="_ETreeTestCaseBase.test_elementtree_parser_target-def"><a name="L3700"></a><tt class="py-lineno">3700</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_parser_target-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_parser_target');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_parser_target">test_elementtree_parser_target</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_elementtree_parser_target-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_parser_target-expanded"><a name="L3701"></a><tt class="py-lineno">3701</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3702"></a><tt class="py-lineno">3702</tt>  <tt class="py-line">        <tt class="py-name">assertFalse</tt>  <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt> </tt>
-<a name="L3703"></a><tt class="py-lineno">3703</tt>  <tt class="py-line">        <tt id="link-3493" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3534', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
+<a name="L3744"></a><tt class="py-lineno">3744</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+<a name="L3745"></a><tt class="py-lineno">3745</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3746"></a><tt class="py-lineno">3746</tt>  <tt class="py-line">            <tt class="py-comment"># cElementTree calls end() as well</tt> </tt>
+<a name="L3747"></a><tt class="py-lineno">3747</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3748"></a><tt class="py-lineno">3748</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_elementtree_parser_target"></a><div id="_ETreeTestCaseBase.test_elementtree_parser_target-def"><a name="L3749"></a><tt class="py-lineno">3749</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_elementtree_parser_target-toggle" onclick="return toggle('_ETreeTestCaseBase.test_elementtree_parser_target');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_elementtree_parser_target">test_elementtree_parser_target</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_elementtree_parser_target-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_elementtree_parser_target-expanded"><a name="L3750"></a><tt class="py-lineno">3750</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3751"></a><tt class="py-lineno">3751</tt>  <tt class="py-line">        <tt class="py-name">assertFalse</tt>  <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertFalse</tt> </tt>
+<a name="L3752"></a><tt class="py-lineno">3752</tt>  <tt class="py-line">        <tt id="link-3535" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3493', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3494" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3535', 'Element', 'link-43');">Element</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3536" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3494', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3495" class="py-name"><a title="lxml.etree.Element
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3536', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3537" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3495', 'Element', 'link-43');">Element</a></tt> </tt>
-<a name="L3704"></a><tt class="py-lineno">3704</tt>  <tt class="py-line"> </tt>
-<a name="L3705"></a><tt class="py-lineno">3705</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3706"></a><tt class="py-lineno">3706</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3707"></a><tt class="py-lineno">3707</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3708"></a><tt class="py-lineno">3708</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3496" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3496', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3709"></a><tt class="py-lineno">3709</tt>  <tt class="py-line">                <tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt id="link-3497" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3537', 'Element', 'link-43');">Element</a></tt> </tt>
+<a name="L3753"></a><tt class="py-lineno">3753</tt>  <tt class="py-line"> </tt>
+<a name="L3754"></a><tt class="py-lineno">3754</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3755"></a><tt class="py-lineno">3755</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3756"></a><tt class="py-lineno">3756</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3757"></a><tt class="py-lineno">3757</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3538" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3538', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3758"></a><tt class="py-lineno">3758</tt>  <tt class="py-line">                <tt class="py-name">assertFalse</tt><tt class="py-op">(</tt><tt id="link-3539" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3497', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3710"></a><tt class="py-lineno">3710</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3498" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3539', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3759"></a><tt class="py-lineno">3759</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3540" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3498', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3711"></a><tt class="py-lineno">3711</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3712"></a><tt class="py-lineno">3712</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3499" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3499', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3713"></a><tt class="py-lineno">3713</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3500" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3540', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3760"></a><tt class="py-lineno">3760</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3761"></a><tt class="py-lineno">3761</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3541" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3541', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3762"></a><tt class="py-lineno">3762</tt>  <tt class="py-line">                <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"TAG"</tt><tt class="py-op">,</tt> <tt id="link-3542" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3500', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3714"></a><tt class="py-lineno">3714</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3715"></a><tt class="py-lineno">3715</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-3501" class="py-name"><a title="lxml.etree.Element
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3542', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3763"></a><tt class="py-lineno">3763</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3764"></a><tt class="py-lineno">3764</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-3543" class="py-name"><a title="lxml.etree.Element
 lxml.objectify.Element
 lxml.tests.test_pyclasslookup.PyClassLookupTestCase.Element
-xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3501', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L3716"></a><tt class="py-lineno">3716</tt>  <tt class="py-line"> </tt>
-<a name="L3717"></a><tt class="py-lineno">3717</tt>  <tt class="py-line">        <tt id="link-3502" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3502', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3503" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element" class="py-name" href="#" onclick="return doclink('link-3543', 'Element', 'link-43');">Element</a></tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L3765"></a><tt class="py-lineno">3765</tt>  <tt class="py-line"> </tt>
+<a name="L3766"></a><tt class="py-lineno">3766</tt>  <tt class="py-line">        <tt id="link-3544" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3544', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3545" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3503', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3504" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3504', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3718"></a><tt class="py-lineno">3718</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3505" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3545', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3546" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3546', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3767"></a><tt class="py-lineno">3767</tt>  <tt class="py-line">        <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3547" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3505', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3506" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3547', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3548" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3506', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3719"></a><tt class="py-lineno">3719</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3507" class="py-name"><a title="lxml.etree._ElementTree.parse
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3548', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3768"></a><tt class="py-lineno">3768</tt>  <tt class="py-line">        <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3549" class="py-name"><a title="lxml.etree._ElementTree.parse
 lxml.etree.parse
 lxml.html.ElementSoup.parse
 lxml.html.html5parser.parse
 lxml.html.soupparser.parse
 lxml.objectify.parse
-lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-3507', 'parse', 'link-2473');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3508" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3508', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">=</tt><tt id="link-3509" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3509', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3720"></a><tt class="py-lineno">3720</tt>  <tt class="py-line"> </tt>
-<a name="L3721"></a><tt class="py-lineno">3721</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3510" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3510', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3511" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.common_imports.HelperTestCase.parse" class="py-name" href="#" onclick="return doclink('link-3549', 'parse', 'link-2515');">parse</a></tt><tt class="py-op">(</tt><tt class="py-name">BytesIO</tt><tt class="py-op">(</tt><tt class="py-string">"&lt;TAG/&gt;"</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3550" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3550', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">=</tt><tt id="link-3551" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3551', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3769"></a><tt class="py-lineno">3769</tt>  <tt class="py-line"> </tt>
+<a name="L3770"></a><tt class="py-lineno">3770</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3552" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3552', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3553" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3511', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3722"></a><tt class="py-lineno">3722</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3723"></a><tt class="py-lineno">3723</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_attrib"></a><div id="_ETreeTestCaseBase.test_parser_target_attrib-def"><a name="L3724"></a><tt class="py-lineno">3724</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_attrib-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_attrib">test_parser_target_attrib</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_attrib-expanded"><a name="L3725"></a><tt class="py-lineno">3725</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
-<a name="L3726"></a><tt class="py-lineno">3726</tt>  <tt class="py-line"> </tt>
-<a name="L3727"></a><tt class="py-lineno">3727</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3728"></a><tt class="py-lineno">3728</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3729"></a><tt class="py-lineno">3729</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3730"></a><tt class="py-lineno">3730</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3512" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3512', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3513" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3553', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3771"></a><tt class="py-lineno">3771</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start"</tt><tt class="py-op">,</tt> <tt class="py-string">"end"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3772"></a><tt class="py-lineno">3772</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_attrib"></a><div id="_ETreeTestCaseBase.test_parser_target_attrib-def"><a name="L3773"></a><tt class="py-lineno">3773</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_attrib-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_attrib');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_attrib">test_parser_target_attrib</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_attrib-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_attrib-expanded"><a name="L3774"></a><tt class="py-lineno">3774</tt>  <tt class="py-line">        <tt class="py-name">assertEqual</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt> </tt>
+<a name="L3775"></a><tt class="py-lineno">3775</tt>  <tt class="py-line"> </tt>
+<a name="L3776"></a><tt class="py-lineno">3776</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3777"></a><tt class="py-lineno">3777</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3778"></a><tt class="py-lineno">3778</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3779"></a><tt class="py-lineno">3779</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3554" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3554', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3555" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3513', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3731"></a><tt class="py-lineno">3731</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-3514" class="py-name" targets="Variable lxml.etree.DTD.name=lxml.etree.DTD-class.html#name,Variable lxml.etree._Entity.name=lxml.etree._Entity-class.html#name,Variable lxml.html.InputMixin.name=lxml.html.InputMixin-class.html#name,Variable lxml.objectify.PyType.name=lxml.objectify.PyType-class.html#name"><a title="lxml.etree.DTD.name
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3555', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3780"></a><tt class="py-lineno">3780</tt>  <tt class="py-line">                <tt class="py-keyword">for</tt> <tt id="link-3556" class="py-name" targets="Variable lxml.etree.DTD.name=lxml.etree.DTD-class.html#name,Variable lxml.etree._Entity.name=lxml.etree._Entity-class.html#name,Variable lxml.html.InputMixin.name=lxml.html.InputMixin-class.html#name,Variable lxml.objectify.PyType.name=lxml.objectify.PyType-class.html#name"><a title="lxml.etree.DTD.name
 lxml.etree._Entity.name
 lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-3514', 'name', 'link-3514');">name</a></tt><tt class="py-op">,</tt> <tt id="link-3515" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-3556', 'name', 'link-3556');">name</a></tt><tt class="py-op">,</tt> <tt id="link-3557" class="py-name"><a title="lxml.html.CheckboxGroup.value
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-3515', 'value', 'link-1144');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-3516" class="py-name"><a title="lxml.etree._Element.attrib
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-3557', 'value', 'link-1150');">value</a></tt> <tt class="py-keyword">in</tt> <tt id="link-3558" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3516', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3517" class="py-name"><a title="lxml.etree._Attrib.items
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3558', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">.</tt><tt id="link-3559" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3517', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3732"></a><tt class="py-lineno">3732</tt>  <tt class="py-line">                    <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3518" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3559', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3781"></a><tt class="py-lineno">3781</tt>  <tt class="py-line">                    <tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3560" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3518', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">+</tt> <tt id="link-3519" class="py-name"><a title="lxml.etree.DTD.name
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3560', 'tag', 'link-44');">tag</a></tt> <tt class="py-op">+</tt> <tt id="link-3561" class="py-name"><a title="lxml.etree.DTD.name
 lxml.etree._Entity.name
 lxml.html.InputMixin.name
-lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-3519', 'name', 'link-3514');">name</a></tt><tt class="py-op">,</tt> <tt id="link-3520" class="py-name"><a title="lxml.html.CheckboxGroup.value
+lxml.objectify.PyType.name" class="py-name" href="#" onclick="return doclink('link-3561', 'name', 'link-3556');">name</a></tt><tt class="py-op">,</tt> <tt id="link-3562" class="py-name"><a title="lxml.html.CheckboxGroup.value
 lxml.html.InputElement.value
 lxml.html.RadioGroup.value
 lxml.html.SelectElement.value
-lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-3520', 'value', 'link-1144');">value</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3733"></a><tt class="py-lineno">3733</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3734"></a><tt class="py-lineno">3734</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3521" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3521', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3522" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.html.TextareaElement.value" class="py-name" href="#" onclick="return doclink('link-3562', 'value', 'link-1150');">value</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3782"></a><tt class="py-lineno">3782</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3783"></a><tt class="py-lineno">3783</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3563" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3563', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3564" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3522', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3735"></a><tt class="py-lineno">3735</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3736"></a><tt class="py-lineno">3736</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3737"></a><tt class="py-lineno">3737</tt>  <tt class="py-line"> </tt>
-<a name="L3738"></a><tt class="py-lineno">3738</tt>  <tt class="py-line">        <tt id="link-3523" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3523', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3524" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3564', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3784"></a><tt class="py-lineno">3784</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3785"></a><tt class="py-lineno">3785</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3786"></a><tt class="py-lineno">3786</tt>  <tt class="py-line"> </tt>
+<a name="L3787"></a><tt class="py-lineno">3787</tt>  <tt class="py-line">        <tt id="link-3565" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3565', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3566" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3524', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3525" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3525', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3739"></a><tt class="py-lineno">3739</tt>  <tt class="py-line"> </tt>
-<a name="L3740"></a><tt class="py-lineno">3740</tt>  <tt class="py-line">        <tt id="link-3526" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3526', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3527" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3527', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root a="roota" b="rootb"&gt;&lt;sub c="subc"/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3741"></a><tt class="py-lineno">3741</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3528" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3528', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3529" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3566', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3567" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3567', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3788"></a><tt class="py-lineno">3788</tt>  <tt class="py-line"> </tt>
+<a name="L3789"></a><tt class="py-lineno">3789</tt>  <tt class="py-line">        <tt id="link-3568" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3568', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3569" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3569', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root a="roota" b="rootb"&gt;&lt;sub c="subc"/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3790"></a><tt class="py-lineno">3790</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3570" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3570', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3571" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3529', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3742"></a><tt class="py-lineno">3742</tt>  <tt class="py-line"> </tt>
-<a name="L3743"></a><tt class="py-lineno">3743</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
-<a name="L3744"></a><tt class="py-lineno">3744</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L3745"></a><tt class="py-lineno">3745</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3746"></a><tt class="py-lineno">3746</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_data"></a><div id="_ETreeTestCaseBase.test_parser_target_data-def"><a name="L3747"></a><tt class="py-lineno">3747</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_data-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_data">test_parser_target_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_data-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_data-expanded"><a name="L3748"></a><tt class="py-lineno">3748</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3749"></a><tt class="py-lineno">3749</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3750"></a><tt class="py-lineno">3750</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3751"></a><tt class="py-lineno">3751</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3530" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3530', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3531" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3571', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3791"></a><tt class="py-lineno">3791</tt>  <tt class="py-line"> </tt>
+<a name="L3792"></a><tt class="py-lineno">3792</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
+<a name="L3793"></a><tt class="py-lineno">3793</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L3794"></a><tt class="py-lineno">3794</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3795"></a><tt class="py-lineno">3795</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_data"></a><div id="_ETreeTestCaseBase.test_parser_target_data-def"><a name="L3796"></a><tt class="py-lineno">3796</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_data-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_data');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_data">test_parser_target_data</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_data-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_data-expanded"><a name="L3797"></a><tt class="py-lineno">3797</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3798"></a><tt class="py-lineno">3798</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3799"></a><tt class="py-lineno">3799</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3800"></a><tt class="py-lineno">3800</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3572" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3572', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3573" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3531', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3752"></a><tt class="py-lineno">3752</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3753"></a><tt class="py-lineno">3753</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3532" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3532', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3533" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3573', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3801"></a><tt class="py-lineno">3801</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3802"></a><tt class="py-lineno">3802</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3574" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3574', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3575" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3533', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3754"></a><tt class="py-lineno">3754</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3755"></a><tt class="py-lineno">3755</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3534" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3534', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt id="link-3535" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3535', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3756"></a><tt class="py-lineno">3756</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3757"></a><tt class="py-lineno">3757</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3758"></a><tt class="py-lineno">3758</tt>  <tt class="py-line"> </tt>
-<a name="L3759"></a><tt class="py-lineno">3759</tt>  <tt class="py-line">        <tt id="link-3536" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3536', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3537" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3575', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3803"></a><tt class="py-lineno">3803</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3804"></a><tt class="py-lineno">3804</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3576" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3576', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt id="link-3577" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3577', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3805"></a><tt class="py-lineno">3805</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3806"></a><tt class="py-lineno">3806</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3807"></a><tt class="py-lineno">3807</tt>  <tt class="py-line"> </tt>
+<a name="L3808"></a><tt class="py-lineno">3808</tt>  <tt class="py-line">        <tt id="link-3578" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3578', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3579" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3537', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3538" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3538', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3760"></a><tt class="py-lineno">3760</tt>  <tt class="py-line"> </tt>
-<a name="L3761"></a><tt class="py-lineno">3761</tt>  <tt class="py-line">        <tt id="link-3539" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3539', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3540" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3540', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;A&lt;sub/&gt;B&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3762"></a><tt class="py-lineno">3762</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3541" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3541', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3542" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3579', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3580" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3580', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3809"></a><tt class="py-lineno">3809</tt>  <tt class="py-line"> </tt>
+<a name="L3810"></a><tt class="py-lineno">3810</tt>  <tt class="py-line">        <tt id="link-3581" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3581', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3582" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3582', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;A&lt;sub/&gt;B&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3811"></a><tt class="py-lineno">3811</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3583" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3583', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3584" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3542', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3763"></a><tt class="py-lineno">3763</tt>  <tt class="py-line"> </tt>
-<a name="L3764"></a><tt class="py-lineno">3764</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
-<a name="L3765"></a><tt class="py-lineno">3765</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"data-A"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> </tt>
-<a name="L3766"></a><tt class="py-lineno">3766</tt>  <tt class="py-line">                           <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"data-B"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L3767"></a><tt class="py-lineno">3767</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3768"></a><tt class="py-lineno">3768</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_entity"></a><div id="_ETreeTestCaseBase.test_parser_target_entity-def"><a name="L3769"></a><tt class="py-lineno">3769</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_entity-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_entity');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">test_parser_target_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_entity-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_entity-expanded"><a name="L3770"></a><tt class="py-lineno">3770</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3771"></a><tt class="py-lineno">3771</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3772"></a><tt class="py-lineno">3772</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3773"></a><tt class="py-lineno">3773</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L3774"></a><tt class="py-lineno">3774</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3775"></a><tt class="py-lineno">3775</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">:</tt> </tt>
-<a name="L3776"></a><tt class="py-lineno">3776</tt>  <tt class="py-line">                    <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3543" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3543', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3777"></a><tt class="py-lineno">3777</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L3778"></a><tt class="py-lineno">3778</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3779"></a><tt class="py-lineno">3779</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3780"></a><tt class="py-lineno">3780</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3544" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3544', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3545" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3584', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3812"></a><tt class="py-lineno">3812</tt>  <tt class="py-line"> </tt>
+<a name="L3813"></a><tt class="py-lineno">3813</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
+<a name="L3814"></a><tt class="py-lineno">3814</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"data-A"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> </tt>
+<a name="L3815"></a><tt class="py-lineno">3815</tt>  <tt class="py-line">                           <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"data-B"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L3816"></a><tt class="py-lineno">3816</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3817"></a><tt class="py-lineno">3817</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_entity"></a><div id="_ETreeTestCaseBase.test_parser_target_entity-def"><a name="L3818"></a><tt class="py-lineno">3818</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_entity-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_entity');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity">test_parser_target_entity</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_entity-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_entity-expanded"><a name="L3819"></a><tt class="py-lineno">3819</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3820"></a><tt class="py-lineno">3820</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3821"></a><tt class="py-lineno">3821</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3822"></a><tt class="py-lineno">3822</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L3823"></a><tt class="py-lineno">3823</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3824"></a><tt class="py-lineno">3824</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">:</tt> </tt>
+<a name="L3825"></a><tt class="py-lineno">3825</tt>  <tt class="py-line">                    <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3585" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3585', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3826"></a><tt class="py-lineno">3826</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L3827"></a><tt class="py-lineno">3827</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3828"></a><tt class="py-lineno">3828</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3829"></a><tt class="py-lineno">3829</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3586" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3586', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3587" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3545', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3781"></a><tt class="py-lineno">3781</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3782"></a><tt class="py-lineno">3782</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3783"></a><tt class="py-lineno">3783</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3546" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3546', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3547" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3587', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3830"></a><tt class="py-lineno">3830</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3831"></a><tt class="py-lineno">3831</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3832"></a><tt class="py-lineno">3832</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3588" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3588', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3589" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3547', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3784"></a><tt class="py-lineno">3784</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3785"></a><tt class="py-lineno">3785</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-3548" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3548', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-3549" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3549', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3786"></a><tt class="py-lineno">3786</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3787"></a><tt class="py-lineno">3787</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3788"></a><tt class="py-lineno">3788</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3789"></a><tt class="py-lineno">3789</tt>  <tt class="py-line"> </tt>
-<a name="L3790"></a><tt class="py-lineno">3790</tt>  <tt class="py-line">        <tt id="link-3550" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3550', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3551" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3589', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3833"></a><tt class="py-lineno">3833</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3834"></a><tt class="py-lineno">3834</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-3590" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3590', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-3591" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3591', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3835"></a><tt class="py-lineno">3835</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3836"></a><tt class="py-lineno">3836</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3837"></a><tt class="py-lineno">3837</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3838"></a><tt class="py-lineno">3838</tt>  <tt class="py-line"> </tt>
+<a name="L3839"></a><tt class="py-lineno">3839</tt>  <tt class="py-line">        <tt id="link-3592" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3592', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3593" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3551', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3552" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3552', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3791"></a><tt class="py-lineno">3791</tt>  <tt class="py-line"> </tt>
-<a name="L3792"></a><tt class="py-lineno">3792</tt>  <tt class="py-line">        <tt class="py-name">dtd</tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
-<a name="L3793"></a><tt class="py-lineno">3793</tt>  <tt class="py-line"><tt class="py-string">            &lt;!DOCTYPE root [</tt> </tt>
-<a name="L3794"></a><tt class="py-lineno">3794</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ELEMENT root (sub*)&gt;</tt> </tt>
-<a name="L3795"></a><tt class="py-lineno">3795</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ELEMENT sub (#PCDATA)&gt;</tt> </tt>
-<a name="L3796"></a><tt class="py-lineno">3796</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ENTITY ent "an entity"&gt;</tt> </tt>
-<a name="L3797"></a><tt class="py-lineno">3797</tt>  <tt class="py-line"><tt class="py-string">        ]&gt;</tt> </tt>
-<a name="L3798"></a><tt class="py-lineno">3798</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> </tt>
-<a name="L3799"></a><tt class="py-lineno">3799</tt>  <tt class="py-line">        <tt id="link-3553" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3553', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3554" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3554', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">dtd</tt><tt class="py-op">+</tt><tt class="py-string">'&lt;root&gt;&lt;sub/&gt;&lt;sub&gt;this is &amp;ent;&lt;/sub&gt;&lt;sub/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3800"></a><tt class="py-lineno">3800</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3555" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3555', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3556" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3593', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3594" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3594', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3840"></a><tt class="py-lineno">3840</tt>  <tt class="py-line"> </tt>
+<a name="L3841"></a><tt class="py-lineno">3841</tt>  <tt class="py-line">        <tt class="py-name">dtd</tt> <tt class="py-op">=</tt> <tt class="py-string">'''</tt> </tt>
+<a name="L3842"></a><tt class="py-lineno">3842</tt>  <tt class="py-line"><tt class="py-string">            &lt;!DOCTYPE root [</tt> </tt>
+<a name="L3843"></a><tt class="py-lineno">3843</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ELEMENT root (sub*)&gt;</tt> </tt>
+<a name="L3844"></a><tt class="py-lineno">3844</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ELEMENT sub (#PCDATA)&gt;</tt> </tt>
+<a name="L3845"></a><tt class="py-lineno">3845</tt>  <tt class="py-line"><tt class="py-string">            &lt;!ENTITY ent "an entity"&gt;</tt> </tt>
+<a name="L3846"></a><tt class="py-lineno">3846</tt>  <tt class="py-line"><tt class="py-string">        ]&gt;</tt> </tt>
+<a name="L3847"></a><tt class="py-lineno">3847</tt>  <tt class="py-line"><tt class="py-string">        '''</tt> </tt>
+<a name="L3848"></a><tt class="py-lineno">3848</tt>  <tt class="py-line">        <tt id="link-3595" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3595', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3596" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3596', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-name">dtd</tt><tt class="py-op">+</tt><tt class="py-string">'&lt;root&gt;&lt;sub/&gt;&lt;sub&gt;this is &amp;ent;&lt;/sub&gt;&lt;sub/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3849"></a><tt class="py-lineno">3849</tt>  <tt class="py-line">        <tt class="py-name">done</tt> <tt class="py-op">=</tt> <tt id="link-3597" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3597', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3598" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3556', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3801"></a><tt class="py-lineno">3801</tt>  <tt class="py-line"> </tt>
-<a name="L3802"></a><tt class="py-lineno">3802</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
-<a name="L3803"></a><tt class="py-lineno">3803</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> </tt>
-<a name="L3804"></a><tt class="py-lineno">3804</tt>  <tt class="py-line">                           <tt class="py-string">"data-this is an entity"</tt><tt class="py-op">,</tt> </tt>
-<a name="L3805"></a><tt class="py-lineno">3805</tt>  <tt class="py-line">                           <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L3806"></a><tt class="py-lineno">3806</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3807"></a><tt class="py-lineno">3807</tt>  <tt class="py-line"> </tt>
-<a name="L3808"></a><tt class="py-lineno">3808</tt>  <tt class="py-line">    <tt id="link-3557" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3557', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parser_target_entity_unknown'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
-<a name="_ETreeTestCaseBase.test_parser_target_entity_unknown"></a><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-def"><a name="L3809"></a><tt class="py-lineno">3809</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_entity_unknown-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_entity_unknown');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity_unknown">test_parser_target_entity_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-expanded"><a name="L3810"></a><tt class="py-lineno">3810</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-<a name="L3811"></a><tt class="py-lineno">3811</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3812"></a><tt class="py-lineno">3812</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3813"></a><tt class="py-lineno">3813</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L3814"></a><tt class="py-lineno">3814</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3815"></a><tt class="py-lineno">3815</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">:</tt> </tt>
-<a name="L3816"></a><tt class="py-lineno">3816</tt>  <tt class="py-line">                    <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3558" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3558', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3817"></a><tt class="py-lineno">3817</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L3818"></a><tt class="py-lineno">3818</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3819"></a><tt class="py-lineno">3819</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3820"></a><tt class="py-lineno">3820</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3559" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3559', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3560" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3598', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3850"></a><tt class="py-lineno">3850</tt>  <tt class="py-line"> </tt>
+<a name="L3851"></a><tt class="py-lineno">3851</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"DONE"</tt><tt class="py-op">,</tt> <tt class="py-name">done</tt><tt class="py-op">)</tt> </tt>
+<a name="L3852"></a><tt class="py-lineno">3852</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">"start-root"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> </tt>
+<a name="L3853"></a><tt class="py-lineno">3853</tt>  <tt class="py-line">                           <tt class="py-string">"data-this is an entity"</tt><tt class="py-op">,</tt> </tt>
+<a name="L3854"></a><tt class="py-lineno">3854</tt>  <tt class="py-line">                           <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"start-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-sub"</tt><tt class="py-op">,</tt> <tt class="py-string">"end-root"</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L3855"></a><tt class="py-lineno">3855</tt>  <tt class="py-line">                          <tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3856"></a><tt class="py-lineno">3856</tt>  <tt class="py-line"> </tt>
+<a name="L3857"></a><tt class="py-lineno">3857</tt>  <tt class="py-line">    <tt id="link-3599" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3599', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">[</tt><tt class="py-string">'test_parser_target_entity_unknown'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt><tt class="py-number">3</tt><tt class="py-op">)</tt> </tt>
+<a name="_ETreeTestCaseBase.test_parser_target_entity_unknown"></a><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-def"><a name="L3858"></a><tt class="py-lineno">3858</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_parser_target_entity_unknown-toggle" onclick="return toggle('_ETreeTestCaseBase.test_parser_target_entity_unknown');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_parser_target_entity_unknown">test_parser_target_entity_unknown</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_parser_target_entity_unknown-expanded"><a name="L3859"></a><tt class="py-lineno">3859</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L3860"></a><tt class="py-lineno">3860</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">Target</tt><tt class="py-op">(</tt><tt class="py-base-class">object</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3861"></a><tt class="py-lineno">3861</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3862"></a><tt class="py-lineno">3862</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L3863"></a><tt class="py-lineno">3863</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3864"></a><tt class="py-lineno">3864</tt>  <tt class="py-line">                <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">:</tt> </tt>
+<a name="L3865"></a><tt class="py-lineno">3865</tt>  <tt class="py-line">                    <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3600" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3600', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"data-"</tt> <tt class="py-op">+</tt> <tt class="py-string">''</tt><tt class="py-op">.</tt><tt class="py-name">join</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3866"></a><tt class="py-lineno">3866</tt>  <tt class="py-line">                    <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L3867"></a><tt class="py-lineno">3867</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">start</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">,</tt> <tt class="py-param">attrib</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3868"></a><tt class="py-lineno">3868</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3869"></a><tt class="py-lineno">3869</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3601" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3601', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"start-"</tt> <tt class="py-op">+</tt> <tt id="link-3602" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3560', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3821"></a><tt class="py-lineno">3821</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3822"></a><tt class="py-lineno">3822</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3823"></a><tt class="py-lineno">3823</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3561" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3561', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3562" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3602', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3870"></a><tt class="py-lineno">3870</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">end</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tag</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3871"></a><tt class="py-lineno">3871</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3872"></a><tt class="py-lineno">3872</tt>  <tt class="py-line">                <tt class="py-name">events</tt><tt class="py-op">.</tt><tt id="link-3603" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3603', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt class="py-string">"end-"</tt> <tt class="py-op">+</tt> <tt id="link-3604" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3562', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3824"></a><tt class="py-lineno">3824</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3825"></a><tt class="py-lineno">3825</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-3563" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3563', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-3564" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3564', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3826"></a><tt class="py-lineno">3826</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3827"></a><tt class="py-lineno">3827</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3828"></a><tt class="py-lineno">3828</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
-</div></div><a name="L3829"></a><tt class="py-lineno">3829</tt>  <tt class="py-line"> </tt>
-<a name="L3830"></a><tt class="py-lineno">3830</tt>  <tt class="py-line">        <tt id="link-3565" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3565', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3566" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3604', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3873"></a><tt class="py-lineno">3873</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">data</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3874"></a><tt class="py-lineno">3874</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_data</tt><tt class="py-op">.</tt><tt id="link-3605" class="py-name"><a title="lxml.etree._Element.append" class="py-name" href="#" onclick="return doclink('link-3605', 'append', 'link-53');">append</a></tt><tt class="py-op">(</tt><tt id="link-3606" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3606', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3875"></a><tt class="py-lineno">3875</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">close</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3876"></a><tt class="py-lineno">3876</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_flush_data</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3877"></a><tt class="py-lineno">3877</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-string">"DONE"</tt> </tt>
+</div></div><a name="L3878"></a><tt class="py-lineno">3878</tt>  <tt class="py-line"> </tt>
+<a name="L3879"></a><tt class="py-lineno">3879</tt>  <tt class="py-line">        <tt id="link-3607" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3607', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3608" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3566', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3567" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3567', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3831"></a><tt class="py-lineno">3831</tt>  <tt class="py-line"> </tt>
-<a name="L3832"></a><tt class="py-lineno">3832</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">feed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3833"></a><tt class="py-lineno">3833</tt>  <tt class="py-line">            <tt id="link-3568" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3568', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3569" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3569', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;sub/&gt;&lt;sub&gt;some &amp;ent;&lt;/sub&gt;&lt;sub/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3834"></a><tt class="py-lineno">3834</tt>  <tt class="py-line">            <tt id="link-3570" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3570', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3571" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3608', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3609" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3609', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">Target</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3880"></a><tt class="py-lineno">3880</tt>  <tt class="py-line"> </tt>
+<a name="L3881"></a><tt class="py-lineno">3881</tt>  <tt class="py-line">        <tt class="py-keyword">def</tt> <tt class="py-def-name">feed</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3882"></a><tt class="py-lineno">3882</tt>  <tt class="py-line">            <tt id="link-3610" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3610', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3611" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3611', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;&lt;sub/&gt;&lt;sub&gt;some &amp;ent;&lt;/sub&gt;&lt;sub/&gt;&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3883"></a><tt class="py-lineno">3883</tt>  <tt class="py-line">            <tt id="link-3612" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3612', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3613" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3571', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3835"></a><tt class="py-lineno">3835</tt>  <tt class="py-line"> </tt>
-<a name="L3836"></a><tt class="py-lineno">3836</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3572" class="py-name"><a title="lxml.etree
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3613', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3884"></a><tt class="py-lineno">3884</tt>  <tt class="py-line"> </tt>
+<a name="L3885"></a><tt class="py-lineno">3885</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertRaises</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3614" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3572', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3573" class="py-name"><a title="lxml.etree.ParseError
-xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3573', 'ParseError', 'link-2886');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3574" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3574', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3837"></a><tt class="py-lineno">3837</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_treebuilder"></a><div id="_ETreeTestCaseBase.test_treebuilder-def"><a name="L3838"></a><tt class="py-lineno">3838</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_treebuilder-toggle" onclick="return toggle('_ETreeTestCaseBase.test_treebuilder');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder">test_treebuilder</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_treebuilder-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_treebuilder-expanded"><a name="L3839"></a><tt class="py-lineno">3839</tt>  <tt class="py-line">        <tt id="link-3575" class="py-name" targets="Module lxml.builder=lxml.builder-module.html,Module lxml.html.builder=lxml.html.builder-module.html"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3575', 'builder', 'link-3575');">builder</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3576" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3614', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3615" class="py-name"><a title="lxml.etree.ParseError
+xml.etree.ElementTree.ParseError" class="py-name" href="#" onclick="return doclink('link-3615', 'ParseError', 'link-2928');">ParseError</a></tt><tt class="py-op">,</tt> <tt id="link-3616" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3616', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3886"></a><tt class="py-lineno">3886</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_treebuilder"></a><div id="_ETreeTestCaseBase.test_treebuilder-def"><a name="L3887"></a><tt class="py-lineno">3887</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_treebuilder-toggle" onclick="return toggle('_ETreeTestCaseBase.test_treebuilder');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder">test_treebuilder</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_treebuilder-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_treebuilder-expanded"><a name="L3888"></a><tt class="py-lineno">3888</tt>  <tt class="py-line">        <tt id="link-3617" class="py-name" targets="Module lxml.builder=lxml.builder-module.html,Module lxml.html.builder=lxml.html.builder-module.html"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3617', 'builder', 'link-3617');">builder</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3618" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3576', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3577" class="py-name"><a title="lxml.etree.TreeBuilder
-xml.etree.ElementTree.TreeBuilder" class="py-name" href="#" onclick="return doclink('link-3577', 'TreeBuilder', 'link-40');">TreeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3840"></a><tt class="py-lineno">3840</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3578" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3578', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3579" class="py-name" targets="Method lxml.etree.TreeBuilder.start()=lxml.etree.TreeBuilder-class.html#start"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-3579', 'start', 'link-3579');">start</a></tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'B'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L3841"></a><tt class="py-lineno">3841</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3580" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3618', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3619" class="py-name"><a title="lxml.etree.TreeBuilder
+xml.etree.ElementTree.TreeBuilder" class="py-name" href="#" onclick="return doclink('link-3619', 'TreeBuilder', 'link-40');">TreeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3889"></a><tt class="py-lineno">3889</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3620" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3620', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3621" class="py-name" targets="Method lxml.etree.TreeBuilder.start()=lxml.etree.TreeBuilder-class.html#start"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-3621', 'start', 'link-3621');">start</a></tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'B'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L3890"></a><tt class="py-lineno">3890</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3622" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3580', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3842"></a><tt class="py-lineno">3842</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'B'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3581" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3622', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3891"></a><tt class="py-lineno">3891</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'a'</tt><tt class="py-op">:</tt><tt class="py-string">'A'</tt><tt class="py-op">,</tt> <tt class="py-string">'b'</tt><tt class="py-op">:</tt><tt class="py-string">'B'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3623" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3581', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3843"></a><tt class="py-lineno">3843</tt>  <tt class="py-line">        <tt id="link-3582" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3582', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3583" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3583', 'data', 'link-1067');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3844"></a><tt class="py-lineno">3844</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3584" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3584', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3585" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-3585', 'start', 'link-3579');">start</a></tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
-<a name="L3845"></a><tt class="py-lineno">3845</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3586" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3623', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3892"></a><tt class="py-lineno">3892</tt>  <tt class="py-line">        <tt id="link-3624" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3624', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3625" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3625', 'data', 'link-1073');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3893"></a><tt class="py-lineno">3893</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3626" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3626', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3627" class="py-name"><a title="lxml.etree.TreeBuilder.start" class="py-name" href="#" onclick="return doclink('link-3627', 'start', 'link-3621');">start</a></tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
+<a name="L3894"></a><tt class="py-lineno">3894</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3628" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3586', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3846"></a><tt class="py-lineno">3846</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3587" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3628', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3895"></a><tt class="py-lineno">3895</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3629" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3587', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3847"></a><tt class="py-lineno">3847</tt>  <tt class="py-line">        <tt id="link-3588" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3588', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3589" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3589', 'data', 'link-1067');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3848"></a><tt class="py-lineno">3848</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3590" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3590', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3591" class="py-name" targets="Method lxml.etree.TreeBuilder.end()=lxml.etree.TreeBuilder-class.html#end"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-3591', 'end', 'link-3591');">end</a></tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3849"></a><tt class="py-lineno">3849</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3592" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3629', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3896"></a><tt class="py-lineno">3896</tt>  <tt class="py-line">        <tt id="link-3630" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3630', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3631" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3631', 'data', 'link-1073');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3897"></a><tt class="py-lineno">3897</tt>  <tt class="py-line">        <tt class="py-name">el</tt> <tt class="py-op">=</tt> <tt id="link-3632" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3632', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3633" class="py-name" targets="Method lxml.etree.TreeBuilder.end()=lxml.etree.TreeBuilder-class.html#end"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-3633', 'end', 'link-3633');">end</a></tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3898"></a><tt class="py-lineno">3898</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"child"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3634" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3592', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3850"></a><tt class="py-lineno">3850</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3593" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3634', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3899"></a><tt class="py-lineno">3899</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'x'</tt><tt class="py-op">:</tt><tt class="py-string">'X'</tt><tt class="py-op">,</tt> <tt class="py-string">'y'</tt><tt class="py-op">:</tt><tt class="py-string">'Y'</tt><tt class="py-op">}</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3635" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3593', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3851"></a><tt class="py-lineno">3851</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3594" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3635', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3900"></a><tt class="py-lineno">3900</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3636" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3594', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3852"></a><tt class="py-lineno">3852</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3595" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3595', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3853"></a><tt class="py-lineno">3853</tt>  <tt class="py-line">        <tt id="link-3596" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3596', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3597" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3597', 'data', 'link-1067');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3854"></a><tt class="py-lineno">3854</tt>  <tt class="py-line">        <tt id="link-3598" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3598', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3599" class="py-name"><a title="lxml.builder
-lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3599', 'builder', 'link-3575');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3600" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-3600', 'end', 'link-3591');">end</a></tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
-<a name="L3855"></a><tt class="py-lineno">3855</tt>  <tt class="py-line"> </tt>
-<a name="L3856"></a><tt class="py-lineno">3856</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt id="link-3601" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3601', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3602" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3636', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3901"></a><tt class="py-lineno">3901</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-name">el</tt><tt class="py-op">.</tt><tt id="link-3637" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3637', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3902"></a><tt class="py-lineno">3902</tt>  <tt class="py-line">        <tt id="link-3638" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3638', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3639" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3639', 'data', 'link-1073');">data</a></tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3903"></a><tt class="py-lineno">3903</tt>  <tt class="py-line">        <tt id="link-3640" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3640', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3641" class="py-name"><a title="lxml.builder
+lxml.html.builder" class="py-name" href="#" onclick="return doclink('link-3641', 'builder', 'link-3617');">builder</a></tt><tt class="py-op">.</tt><tt id="link-3642" class="py-name"><a title="lxml.etree.TreeBuilder.end" class="py-name" href="#" onclick="return doclink('link-3642', 'end', 'link-3633');">end</a></tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">)</tt> </tt>
+<a name="L3904"></a><tt class="py-lineno">3904</tt>  <tt class="py-line"> </tt>
+<a name="L3905"></a><tt class="py-lineno">3905</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt id="link-3643" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3643', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3644" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3602', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3857"></a><tt class="py-lineno">3857</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3603" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3603', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3604" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3644', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3906"></a><tt class="py-lineno">3906</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3645" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3645', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3646" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3604', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3858"></a><tt class="py-lineno">3858</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3605" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3605', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3606" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3646', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3907"></a><tt class="py-lineno">3907</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3647" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3647', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3648" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3606', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3859"></a><tt class="py-lineno">3859</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">,</tt> <tt id="link-3607" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3607', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3608" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3608', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3860"></a><tt class="py-lineno">3860</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.test_treebuilder_target"></a><div id="_ETreeTestCaseBase.test_treebuilder_target-def"><a name="L3861"></a><tt class="py-lineno">3861</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_treebuilder_target-toggle" onclick="return toggle('_ETreeTestCaseBase.test_treebuilder_target');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target">test_treebuilder_target</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.test_treebuilder_target-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_treebuilder_target-expanded"><a name="L3862"></a><tt class="py-lineno">3862</tt>  <tt class="py-line">        <tt id="link-3609" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3609', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3610" class="py-name"><a title="lxml.etree.XMLParser
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3648', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3908"></a><tt class="py-lineno">3908</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">,</tt> <tt id="link-3649" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3649', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3650" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3650', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3909"></a><tt class="py-lineno">3909</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.test_treebuilder_target"></a><div id="_ETreeTestCaseBase.test_treebuilder_target-def"><a name="L3910"></a><tt class="py-lineno">3910</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.test_treebuilder_target-toggle" onclick="return toggle('_ETreeTestCaseBase.test_treebuilder_target');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_treebuilder_target">test_treebuilder_target</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.test_treebuilder_target-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.test_treebuilder_target-expanded"><a name="L3911"></a><tt class="py-lineno">3911</tt>  <tt class="py-line">        <tt id="link-3651" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3651', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3652" class="py-name"><a title="lxml.etree.XMLParser
 lxml.tests.test_elementtree._ETreeTestCaseBase.XMLParser
-xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3610', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3611" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3611', 'target', 'link-3424');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3612" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.XMLParser" class="py-name" href="#" onclick="return doclink('link-3652', 'XMLParser', 'link-34');">XMLParser</a></tt><tt class="py-op">(</tt><tt id="link-3653" class="py-name"><a title="lxml.etree._ProcessingInstruction.target" class="py-name" href="#" onclick="return doclink('link-3653', 'target', 'link-3466');">target</a></tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3654" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3612', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3613" class="py-name"><a title="lxml.etree.TreeBuilder
-xml.etree.ElementTree.TreeBuilder" class="py-name" href="#" onclick="return doclink('link-3613', 'TreeBuilder', 'link-40');">TreeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3863"></a><tt class="py-lineno">3863</tt>  <tt class="py-line">        <tt id="link-3614" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3614', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3615" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3615', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;ROOTTEXT&lt;child&gt;CHILDTEXT&lt;/child&gt;CHILDTAIL&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3864"></a><tt class="py-lineno">3864</tt>  <tt class="py-line">        <tt id="link-3616" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3616', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3617" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3617', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3618" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3654', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3655" class="py-name"><a title="lxml.etree.TreeBuilder
+xml.etree.ElementTree.TreeBuilder" class="py-name" href="#" onclick="return doclink('link-3655', 'TreeBuilder', 'link-40');">TreeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3912"></a><tt class="py-lineno">3912</tt>  <tt class="py-line">        <tt id="link-3656" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3656', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3657" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3657', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt class="py-string">'&lt;root&gt;ROOTTEXT&lt;child&gt;CHILDTEXT&lt;/child&gt;CHILDTAIL&lt;/root&gt;'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3913"></a><tt class="py-lineno">3913</tt>  <tt class="py-line">        <tt id="link-3658" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3658', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3659" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3659', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3660" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3618', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3865"></a><tt class="py-lineno">3865</tt>  <tt class="py-line"> </tt>
-<a name="L3866"></a><tt class="py-lineno">3866</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt id="link-3619" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3619', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3620" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3660', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3914"></a><tt class="py-lineno">3914</tt>  <tt class="py-line"> </tt>
+<a name="L3915"></a><tt class="py-lineno">3915</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"root"</tt><tt class="py-op">,</tt> <tt id="link-3661" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3661', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3662" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3620', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3867"></a><tt class="py-lineno">3867</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3621" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3621', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3622" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3662', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3916"></a><tt class="py-lineno">3916</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"ROOTTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3663" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3663', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3664" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3622', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3868"></a><tt class="py-lineno">3868</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3623" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3623', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3624" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3664', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3917"></a><tt class="py-lineno">3917</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTEXT"</tt><tt class="py-op">,</tt> <tt id="link-3665" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3665', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3666" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3624', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3869"></a><tt class="py-lineno">3869</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">,</tt> <tt id="link-3625" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3625', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3626" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3626', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3870"></a><tt class="py-lineno">3870</tt>  <tt class="py-line"> </tt>
-<a name="L3871"></a><tt class="py-lineno">3871</tt>  <tt class="py-line">    <tt class="py-comment"># helper methods</tt> </tt>
-<a name="L3872"></a><tt class="py-lineno">3872</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._writeElement"></a><div id="_ETreeTestCaseBase._writeElement-def"><a name="L3873"></a><tt class="py-lineno">3873</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._writeElement-toggle" onclick="return toggle('_ETreeTestCaseBase._writeElement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement">_writeElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._writeElement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._writeElement-expanded"><a name="L3874"></a><tt class="py-lineno">3874</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write out element for comparison.</tt> </tt>
-<a name="L3875"></a><tt class="py-lineno">3875</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L3876"></a><tt class="py-lineno">3876</tt>  <tt class="py-line">        <tt id="link-3627" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3627', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3628" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3666', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3918"></a><tt class="py-lineno">3918</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"CHILDTAIL"</tt><tt class="py-op">,</tt> <tt id="link-3667" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3667', 'root', 'link-50');">root</a></tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt id="link-3668" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3668', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3919"></a><tt class="py-lineno">3919</tt>  <tt class="py-line"> </tt>
+<a name="L3920"></a><tt class="py-lineno">3920</tt>  <tt class="py-line">    <tt class="py-comment"># helper methods</tt> </tt>
+<a name="L3921"></a><tt class="py-lineno">3921</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._writeElement"></a><div id="_ETreeTestCaseBase._writeElement-def"><a name="L3922"></a><tt class="py-lineno">3922</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._writeElement-toggle" onclick="return toggle('_ETreeTestCaseBase._writeElement');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement">_writeElement</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._writeElement-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._writeElement-expanded"><a name="L3923"></a><tt class="py-lineno">3923</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write out element for comparison.</tt> </tt>
+<a name="L3924"></a><tt class="py-lineno">3924</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3925"></a><tt class="py-lineno">3925</tt>  <tt class="py-line">        <tt id="link-3669" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3669', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3670" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3628', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3629" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3629', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-3630" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3630', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3631" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3670', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3671" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3671', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt id="link-3672" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3672', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3673" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3631', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt id="link-3632" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3673', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt id="link-3674" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3632', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3877"></a><tt class="py-lineno">3877</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3633" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-3633', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-3634" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3634', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3878"></a><tt class="py-lineno">3878</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._writeElementFile"></a><div id="_ETreeTestCaseBase._writeElementFile-def"><a name="L3879"></a><tt class="py-lineno">3879</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._writeElementFile-toggle" onclick="return toggle('_ETreeTestCaseBase._writeElementFile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile">_writeElementFile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._writeElementFile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._writeElementFile-expanded"><a name="L3880"></a><tt class="py-lineno">3880</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write out element for comparison, using real file.</tt> </tt>
-<a name="L3881"></a><tt class="py-lineno">3881</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L3882"></a><tt class="py-lineno">3882</tt>  <tt class="py-line">        <tt id="link-3635" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3674', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3926"></a><tt class="py-lineno">3926</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3675" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-3675', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-3676" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3676', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3927"></a><tt class="py-lineno">3927</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._writeElementFile"></a><div id="_ETreeTestCaseBase._writeElementFile-def"><a name="L3928"></a><tt class="py-lineno">3928</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._writeElementFile-toggle" onclick="return toggle('_ETreeTestCaseBase._writeElementFile');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile">_writeElementFile</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._writeElementFile-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._writeElementFile-expanded"><a name="L3929"></a><tt class="py-lineno">3929</tt>  <tt class="py-line">        <tt class="py-docstring">"""Write out element for comparison, using real file.</tt> </tt>
+<a name="L3930"></a><tt class="py-lineno">3930</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3931"></a><tt class="py-lineno">3931</tt>  <tt class="py-line">        <tt id="link-3677" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3635', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3636" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3677', 'ElementTree', 'link-11');">ElementTree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3678" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3636', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3637" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3678', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3679" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3637', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L3883"></a><tt class="py-lineno">3883</tt>  <tt class="py-line">        <tt id="link-3638" class="py-name" targets="Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.Validate.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.Validate-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#handle"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3679', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L3932"></a><tt class="py-lineno">3932</tt>  <tt class="py-line">        <tt id="link-3680" class="py-name" targets="Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.Validate.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.Validate-class.html#handle,Method lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle()=lxml.tests.test_threading.ThreadPipelineTestCase.Worker-class.html#handle"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.Validate.handle
-lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle" class="py-name" href="#" onclick="return doclink('link-3638', 'handle', 'link-3638');">handle</a></tt><tt class="py-op">,</tt> <tt id="link-3639" class="py-name" targets="Variable lxml.etree._LogEntry.filename=lxml.etree._LogEntry-class.html#filename"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3639', 'filename', 'link-3639');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkstemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3884"></a><tt class="py-lineno">3884</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L3885"></a><tt class="py-lineno">3885</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-3640" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3640', 'filename', 'link-3639');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3886"></a><tt class="py-lineno">3886</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-3641" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle" class="py-name" href="#" onclick="return doclink('link-3680', 'handle', 'link-3680');">handle</a></tt><tt class="py-op">,</tt> <tt id="link-3681" class="py-name" targets="Variable lxml.etree._LogEntry.filename=lxml.etree._LogEntry-class.html#filename"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3681', 'filename', 'link-3681');">filename</a></tt> <tt class="py-op">=</tt> <tt class="py-name">tempfile</tt><tt class="py-op">.</tt><tt class="py-name">mkstemp</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3933"></a><tt class="py-lineno">3933</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L3934"></a><tt class="py-lineno">3934</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-3682" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3682', 'filename', 'link-3681');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'wb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3935"></a><tt class="py-lineno">3935</tt>  <tt class="py-line">            <tt class="py-name">tree</tt> <tt class="py-op">=</tt> <tt id="link-3683" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3641', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-3642" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3642', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-3643" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3643', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3887"></a><tt class="py-lineno">3887</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3644" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-3644', 'write', 'link-1066');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-3645" class="py-name"><a title="lxml.etree.DocInfo.encoding
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3683', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">(</tt><tt id="link-3684" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3684', 'element', 'link-862');">element</a></tt><tt class="py-op">=</tt><tt id="link-3685" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3685', 'element', 'link-862');">element</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3936"></a><tt class="py-lineno">3936</tt>  <tt class="py-line">            <tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3686" class="py-name"><a title="lxml.etree._ElementTree.write" class="py-name" href="#" onclick="return doclink('link-3686', 'write', 'link-1072');">write</a></tt><tt class="py-op">(</tt><tt class="py-name">f</tt><tt class="py-op">,</tt> <tt id="link-3687" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3645', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">=</tt><tt id="link-3646" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3687', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">=</tt><tt id="link-3688" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3646', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3888"></a><tt class="py-lineno">3888</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3647" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3688', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3937"></a><tt class="py-lineno">3937</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3689" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3647', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3889"></a><tt class="py-lineno">3889</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-3648" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3648', 'filename', 'link-3639');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
-<a name="L3890"></a><tt class="py-lineno">3890</tt>  <tt class="py-line">            <tt id="link-3649" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3649', 'data', 'link-1067');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3650" class="py-name" targets="Method lxml.tests.common_imports.LargeFileLike.read()=lxml.tests.common_imports.LargeFileLike-class.html#read,Method lxml.tests.common_imports.SillyFileLike.read()=lxml.tests.common_imports.SillyFileLike-class.html#read"><a title="lxml.tests.common_imports.LargeFileLike.read
-lxml.tests.common_imports.SillyFileLike.read" class="py-name" href="#" onclick="return doclink('link-3650', 'read', 'link-3650');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3891"></a><tt class="py-lineno">3891</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3651" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3689', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3938"></a><tt class="py-lineno">3938</tt>  <tt class="py-line">            <tt class="py-name">f</tt> <tt class="py-op">=</tt> <tt class="py-name">open</tt><tt class="py-op">(</tt><tt id="link-3690" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3690', 'filename', 'link-3681');">filename</a></tt><tt class="py-op">,</tt> <tt class="py-string">'rb'</tt><tt class="py-op">)</tt> </tt>
+<a name="L3939"></a><tt class="py-lineno">3939</tt>  <tt class="py-line">            <tt id="link-3691" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3691', 'data', 'link-1073');">data</a></tt> <tt class="py-op">=</tt> <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3692" class="py-name" targets="Method lxml.tests.common_imports.LargeFileLike.read()=lxml.tests.common_imports.LargeFileLike-class.html#read,Method lxml.tests.common_imports.SillyFileLike.read()=lxml.tests.common_imports.SillyFileLike-class.html#read"><a title="lxml.tests.common_imports.LargeFileLike.read
+lxml.tests.common_imports.SillyFileLike.read" class="py-name" href="#" onclick="return doclink('link-3692', 'read', 'link-3692');">read</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3940"></a><tt class="py-lineno">3940</tt>  <tt class="py-line">            <tt class="py-name">f</tt><tt class="py-op">.</tt><tt id="link-3693" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3651', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3892"></a><tt class="py-lineno">3892</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
-<a name="L3893"></a><tt class="py-lineno">3893</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-3652" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3693', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3941"></a><tt class="py-lineno">3941</tt>  <tt class="py-line">        <tt class="py-keyword">finally</tt><tt class="py-op">:</tt> </tt>
+<a name="L3942"></a><tt class="py-lineno">3942</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-3694" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3652', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt id="link-3653" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3694', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt id="link-3695" class="py-name"><a title="lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndExtendWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ParseAndInjectWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ParseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.ReverseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.RotateWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.SerialiseWorker.handle
 lxml.tests.test_threading.ThreadPipelineTestCase.Validate.handle
-lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle" class="py-name" href="#" onclick="return doclink('link-3653', 'handle', 'link-3638');">handle</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3894"></a><tt class="py-lineno">3894</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-3654" class="py-name"><a title="lxml.etree._Element.remove
+lxml.tests.test_threading.ThreadPipelineTestCase.Worker.handle" class="py-name" href="#" onclick="return doclink('link-3695', 'handle', 'link-3680');">handle</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3943"></a><tt class="py-lineno">3943</tt>  <tt class="py-line">            <tt class="py-name">os</tt><tt class="py-op">.</tt><tt id="link-3696" class="py-name"><a title="lxml.etree._Element.remove
 lxml.html.CheckboxValues.remove
 lxml.html.Classes.remove
-lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-3654', 'remove', 'link-1744');">remove</a></tt><tt class="py-op">(</tt><tt id="link-3655" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3655', 'filename', 'link-3639');">filename</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3895"></a><tt class="py-lineno">3895</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3656" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-3656', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-3657" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3657', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3896"></a><tt class="py-lineno">3896</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.assertXML"></a><div id="_ETreeTestCaseBase.assertXML-def"><a name="L3897"></a><tt class="py-lineno">3897</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.assertXML-toggle" onclick="return toggle('_ETreeTestCaseBase.assertXML');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertXML">assertXML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.assertXML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.assertXML-expanded"><a name="L3898"></a><tt class="py-lineno">3898</tt>  <tt class="py-line">        <tt class="py-docstring">"""Writes element out and checks whether it is expected.</tt> </tt>
-<a name="L3899"></a><tt class="py-lineno">3899</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L3900"></a><tt class="py-lineno">3900</tt>  <tt class="py-line"><tt class="py-docstring">        Does this two ways; once using BytesIO, once using a real file.</tt> </tt>
-<a name="L3901"></a><tt class="py-lineno">3901</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
-<a name="L3902"></a><tt class="py-lineno">3902</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3903"></a><tt class="py-lineno">3903</tt>  <tt class="py-line">            <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt class="py-name">expected</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt id="link-3658" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.html.MultipleSelectOptions.remove" class="py-name" href="#" onclick="return doclink('link-3696', 'remove', 'link-1750');">remove</a></tt><tt class="py-op">(</tt><tt id="link-3697" class="py-name"><a title="lxml.etree._LogEntry.filename" class="py-name" href="#" onclick="return doclink('link-3697', 'filename', 'link-3681');">filename</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3944"></a><tt class="py-lineno">3944</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3698" class="py-name"><a title="lxml.tests.common_imports.canonicalize" class="py-name" href="#" onclick="return doclink('link-3698', 'canonicalize', 'link-18');">canonicalize</a></tt><tt class="py-op">(</tt><tt id="link-3699" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3699', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3945"></a><tt class="py-lineno">3945</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.assertXML"></a><div id="_ETreeTestCaseBase.assertXML-def"><a name="L3946"></a><tt class="py-lineno">3946</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.assertXML-toggle" onclick="return toggle('_ETreeTestCaseBase.assertXML');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertXML">assertXML</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">=</tt><tt class="py-string">'us-ascii'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.assertXML-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.assertXML-expanded"><a name="L3947"></a><tt class="py-lineno">3947</tt>  <tt class="py-line">        <tt class="py-docstring">"""Writes element out and checks whether it is expected.</tt> </tt>
+<a name="L3948"></a><tt class="py-lineno">3948</tt>  <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L3949"></a><tt class="py-lineno">3949</tt>  <tt class="py-line"><tt class="py-docstring">        Does this two ways; once using BytesIO, once using a real file.</tt> </tt>
+<a name="L3950"></a><tt class="py-lineno">3950</tt>  <tt class="py-line"><tt class="py-docstring">        """</tt> </tt>
+<a name="L3951"></a><tt class="py-lineno">3951</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">unicode</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3952"></a><tt class="py-lineno">3952</tt>  <tt class="py-line">            <tt class="py-name">expected</tt> <tt class="py-op">=</tt> <tt class="py-name">expected</tt><tt class="py-op">.</tt><tt class="py-name">encode</tt><tt class="py-op">(</tt><tt id="link-3700" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3658', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3904"></a><tt class="py-lineno">3904</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3659" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
-lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-3659', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt id="link-3660" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3660', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3661" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3700', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3953"></a><tt class="py-lineno">3953</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3701" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElement
+lxml.tests.test_etree.ETreeOnlyTestCase._writeElement" class="py-name" href="#" onclick="return doclink('link-3701', '_writeElement', 'link-799');">_writeElement</a></tt><tt class="py-op">(</tt><tt id="link-3702" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3702', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3703" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3661', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3905"></a><tt class="py-lineno">3905</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3662" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._writeElementFile()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElementFile" class="py-name" href="#" onclick="return doclink('link-3662', '_writeElementFile', 'link-3662');">_writeElementFile</a></tt><tt class="py-op">(</tt><tt id="link-3663" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3663', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3664" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3703', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3954"></a><tt class="py-lineno">3954</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">expected</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3704" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._writeElementFile()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._writeElementFile" class="py-name" href="#" onclick="return doclink('link-3704', '_writeElementFile', 'link-3704');">_writeElementFile</a></tt><tt class="py-op">(</tt><tt id="link-3705" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3705', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt id="link-3706" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3664', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3906"></a><tt class="py-lineno">3906</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase.assertEncodingDeclaration"></a><div id="_ETreeTestCaseBase.assertEncodingDeclaration-def"><a name="L3907"></a><tt class="py-lineno">3907</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.assertEncodingDeclaration-toggle" onclick="return toggle('_ETreeTestCaseBase.assertEncodingDeclaration');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertEncodingDeclaration">assertEncodingDeclaration</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">result</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase.assertEncodingDeclaration-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.assertEncodingDeclaration-expanded"><a name="L3908"></a><tt class="py-lineno">3908</tt>  <tt class="py-line">        <tt class="py-docstring">"Checks if the result XML byte string specifies the encoding."</tt> </tt>
-<a name="L3909"></a><tt class="py-lineno">3909</tt>  <tt class="py-line">        <tt class="py-name">enc_re</tt> <tt class="py-op">=</tt> <tt class="py-string">r"&lt;\?xml[^&gt;]+ encoding=[\"']([^\"']+)[\"']"</tt> </tt>
-<a name="L3910"></a><tt class="py-lineno">3910</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-3665" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3665', 'str', 'link-682');">str</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3911"></a><tt class="py-lineno">3911</tt>  <tt class="py-line">            <tt class="py-name">has_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">enc_re</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">match</tt> </tt>
-<a name="L3912"></a><tt class="py-lineno">3912</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3913"></a><tt class="py-lineno">3913</tt>  <tt class="py-line">            <tt class="py-name">has_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt id="link-3666" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3666', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">enc_re</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">match</tt> </tt>
-<a name="L3914"></a><tt class="py-lineno">3914</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">has_encoding</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3915"></a><tt class="py-lineno">3915</tt>  <tt class="py-line">        <tt class="py-name">result_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">has_encoding</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
-<a name="L3916"></a><tt class="py-lineno">3916</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">result_encoding</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3667" class="py-name"><a title="lxml.etree.DocInfo.encoding
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3706', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3955"></a><tt class="py-lineno">3955</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase.assertEncodingDeclaration"></a><div id="_ETreeTestCaseBase.assertEncodingDeclaration-def"><a name="L3956"></a><tt class="py-lineno">3956</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase.assertEncodingDeclaration-toggle" onclick="return toggle('_ETreeTestCaseBase.assertEncodingDeclaration');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#assertEncodingDeclaration">assertEncodingDeclaration</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">result</tt><tt class="py-op">,</tt> <tt class="py-param">encoding</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase.assertEncodingDeclaration-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase.assertEncodingDeclaration-expanded"><a name="L3957"></a><tt class="py-lineno">3957</tt>  <tt class="py-line">        <tt class="py-docstring">"Checks if the result XML byte string specifies the encoding."</tt> </tt>
+<a name="L3958"></a><tt class="py-lineno">3958</tt>  <tt class="py-line">        <tt class="py-name">enc_re</tt> <tt class="py-op">=</tt> <tt class="py-string">r"&lt;\?xml[^&gt;]+ encoding=[\"']([^\"']+)[\"']"</tt> </tt>
+<a name="L3959"></a><tt class="py-lineno">3959</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">,</tt> <tt id="link-3707" class="py-name"><a title="str" class="py-name" href="#" onclick="return doclink('link-3707', 'str', 'link-682');">str</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L3960"></a><tt class="py-lineno">3960</tt>  <tt class="py-line">            <tt class="py-name">has_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt class="py-name">enc_re</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">match</tt> </tt>
+<a name="L3961"></a><tt class="py-lineno">3961</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L3962"></a><tt class="py-lineno">3962</tt>  <tt class="py-line">            <tt class="py-name">has_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">re</tt><tt class="py-op">.</tt><tt class="py-name">compile</tt><tt class="py-op">(</tt><tt id="link-3708" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3708', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-name">enc_re</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">match</tt> </tt>
+<a name="L3963"></a><tt class="py-lineno">3963</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">has_encoding</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3964"></a><tt class="py-lineno">3964</tt>  <tt class="py-line">        <tt class="py-name">result_encoding</tt> <tt class="py-op">=</tt> <tt class="py-name">has_encoding</tt><tt class="py-op">(</tt><tt class="py-name">result</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt class="py-name">group</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">)</tt> </tt>
+<a name="L3965"></a><tt class="py-lineno">3965</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">result_encoding</tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3709" class="py-name"><a title="lxml.etree.DocInfo.encoding
 lxml.tests.selftest.encoding
-lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3667', 'encoding', 'link-2835');">encoding</a></tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3917"></a><tt class="py-lineno">3917</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase._rootstring"></a><div id="_ETreeTestCaseBase._rootstring-def"><a name="L3918"></a><tt class="py-lineno">3918</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._rootstring-toggle" onclick="return toggle('_ETreeTestCaseBase._rootstring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring">_rootstring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._rootstring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._rootstring-expanded"><a name="L3919"></a><tt class="py-lineno">3919</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3668" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3668', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3669" class="py-name"><a title="lxml.etree.XSLT.tostring
-lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3669', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3670" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3670', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3671" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3671', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L3920"></a><tt class="py-lineno">3920</tt>  <tt class="py-line">            <tt id="link-3672" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3672', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3673" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3673', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3674" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3674', 'replace', 'link-1097');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3675" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3675', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3676" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3676', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3921"></a><tt class="py-lineno">3921</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._check_element_tree"></a><div id="_ETreeTestCaseBase._check_element_tree-def"><a name="L3922"></a><tt class="py-lineno">3922</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_element_tree-toggle" onclick="return toggle('_ETreeTestCaseBase._check_element_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree">_check_element_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._check_element_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_element_tree-expanded"><a name="L3923"></a><tt class="py-lineno">3923</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3677" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element" class="py-name" href="#" onclick="return doclink('link-3677', '_check_element', 'link-1156');">_check_element</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3678" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3678', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3924"></a><tt class="py-lineno">3924</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase._check_element"></a><div id="_ETreeTestCaseBase._check_element-def"><a name="L3925"></a><tt class="py-lineno">3925</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_element-toggle" onclick="return toggle('_ETreeTestCaseBase._check_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element">_check_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._check_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_element-expanded"><a name="L3926"></a><tt class="py-lineno">3926</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3679" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3679', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3680" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3680', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3927"></a><tt class="py-lineno">3927</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3681" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3681', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3682" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3682', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'attrib'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3928"></a><tt class="py-lineno">3928</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3683" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3683', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3684" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3684', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3929"></a><tt class="py-lineno">3929</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3685" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3685', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3686" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3686', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tail'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3930"></a><tt class="py-lineno">3930</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3687" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_string()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_string"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3687', '_check_string', 'link-3687');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3688" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3688', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3689" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.selftest2.encoding" class="py-name" href="#" onclick="return doclink('link-3709', 'encoding', 'link-2877');">encoding</a></tt><tt class="py-op">.</tt><tt class="py-name">upper</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3966"></a><tt class="py-lineno">3966</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase._rootstring"></a><div id="_ETreeTestCaseBase._rootstring-def"><a name="L3967"></a><tt class="py-lineno">3967</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._rootstring-toggle" onclick="return toggle('_ETreeTestCaseBase._rootstring');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring">_rootstring</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._rootstring-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._rootstring-expanded"><a name="L3968"></a><tt class="py-lineno">3968</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3710" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3710', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3711" class="py-name"><a title="lxml.etree.XSLT.tostring
+lxml.etree.tostring" class="py-name" href="#" onclick="return doclink('link-3711', 'tostring', 'link-216');">tostring</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3712" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3712', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3713" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3713', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L3969"></a><tt class="py-lineno">3969</tt>  <tt class="py-line">            <tt id="link-3714" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3714', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">' '</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3715" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3715', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">.</tt><tt id="link-3716" class="py-name"><a title="lxml.etree._Element.replace" class="py-name" href="#" onclick="return doclink('link-3716', 'replace', 'link-1103');">replace</a></tt><tt class="py-op">(</tt><tt id="link-3717" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3717', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">'\n'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt id="link-3718" class="py-name"><a title="lxml.tests.common_imports._bytes" class="py-name" href="#" onclick="return doclink('link-3718', '_bytes', 'link-22');">_bytes</a></tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3970"></a><tt class="py-lineno">3970</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._check_element_tree"></a><div id="_ETreeTestCaseBase._check_element_tree-def"><a name="L3971"></a><tt class="py-lineno">3971</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_element_tree-toggle" onclick="return toggle('_ETreeTestCaseBase._check_element_tree');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element_tree">_check_element_tree</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">tree</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._check_element_tree-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_element_tree-expanded"><a name="L3972"></a><tt class="py-lineno">3972</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3719" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_element" class="py-name" href="#" onclick="return doclink('link-3719', '_check_element', 'link-1162');">_check_element</a></tt><tt class="py-op">(</tt><tt class="py-name">tree</tt><tt class="py-op">.</tt><tt id="link-3720" class="py-name"><a title="lxml.etree._ElementTree.getroot" class="py-name" href="#" onclick="return doclink('link-3720', 'getroot', 'link-78');">getroot</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3973"></a><tt class="py-lineno">3973</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase._check_element"></a><div id="_ETreeTestCaseBase._check_element-def"><a name="L3974"></a><tt class="py-lineno">3974</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_element-toggle" onclick="return toggle('_ETreeTestCaseBase._check_element');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_element">_check_element</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">element</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._check_element-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_element-expanded"><a name="L3975"></a><tt class="py-lineno">3975</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3721" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3721', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3722" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3722', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tag'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3976"></a><tt class="py-lineno">3976</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3723" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3723', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3724" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3724', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'attrib'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3977"></a><tt class="py-lineno">3977</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3725" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3725', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3726" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3726', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'text'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3978"></a><tt class="py-lineno">3978</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt id="link-3727" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3727', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3728" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3728', 'element', 'link-862');">element</a></tt><tt class="py-op">,</tt> <tt class="py-string">'tail'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3979"></a><tt class="py-lineno">3979</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3729" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_string()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_string"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3729', '_check_string', 'link-3729');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3730" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3730', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3731" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3689', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3931"></a><tt class="py-lineno">3931</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3690" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping" class="py-name" href="#" onclick="return doclink('link-3690', '_check_mapping', 'link-3690');">_check_mapping</a></tt><tt class="py-op">(</tt><tt id="link-3691" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3691', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3692" class="py-name"><a title="lxml.etree._Element.attrib
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3731', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3980"></a><tt class="py-lineno">3980</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3732" class="py-name" targets="Method lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping()=lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_mapping" class="py-name" href="#" onclick="return doclink('link-3732', '_check_mapping', 'link-3732');">_check_mapping</a></tt><tt class="py-op">(</tt><tt id="link-3733" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3733', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3734" class="py-name"><a title="lxml.etree._Element.attrib
 lxml.etree._ProcessingInstruction.attrib
 lxml.tests.selftest2.attrib
-xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3692', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3932"></a><tt class="py-lineno">3932</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3693" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3693', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3694" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.attrib" class="py-name" href="#" onclick="return doclink('link-3734', 'attrib', 'link-317');">attrib</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3981"></a><tt class="py-lineno">3981</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3735" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3735', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3736" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3694', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L3933"></a><tt class="py-lineno">3933</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3695" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3695', '_check_string', 'link-3687');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3696" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3696', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3697" class="py-name"><a title="lxml.etree.QName.text
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3736', 'text', 'link-45');">text</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3982"></a><tt class="py-lineno">3982</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3737" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3737', '_check_string', 'link-3729');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3738" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3738', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3739" class="py-name"><a title="lxml.etree.QName.text
 lxml.etree._Element.text
 lxml.etree._Entity.text
 lxml.objectify.ObjectifiedElement.text
-xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3697', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3934"></a><tt class="py-lineno">3934</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3698" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3698', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3699" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3699', 'tail', 'link-46');">tail</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L3935"></a><tt class="py-lineno">3935</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3700" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3700', '_check_string', 'link-3687');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3701" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3701', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3702" class="py-name"><a title="lxml.etree._Element.tail
-xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3702', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3936"></a><tt class="py-lineno">3936</tt>  <tt class="py-line">         </tt>
-<a name="_ETreeTestCaseBase._check_string"></a><div id="_ETreeTestCaseBase._check_string-def"><a name="L3937"></a><tt class="py-lineno">3937</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_string-toggle" onclick="return toggle('_ETreeTestCaseBase._check_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_string">_check_string</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._check_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_string-expanded"><a name="L3938"></a><tt class="py-lineno">3938</tt>  <tt class="py-line">        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
-<a name="L3939"></a><tt class="py-lineno">3939</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
-<a name="L3940"></a><tt class="py-lineno">3940</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">char</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L3941"></a><tt class="py-lineno">3941</tt>  <tt class="py-line">        <tt class="py-name">new_string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> <tt class="py-op">+</tt> <tt class="py-string">""</tt> </tt>
-<a name="L3942"></a><tt class="py-lineno">3942</tt>  <tt class="py-line">        <tt class="py-name">new_string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
-<a name="L3943"></a><tt class="py-lineno">3943</tt>  <tt class="py-line">        <tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L3944"></a><tt class="py-lineno">3944</tt>  <tt class="py-line"> </tt>
-<a name="_ETreeTestCaseBase._check_mapping"></a><div id="_ETreeTestCaseBase._check_mapping-def"><a name="L3945"></a><tt class="py-lineno">3945</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_mapping-toggle" onclick="return toggle('_ETreeTestCaseBase._check_mapping');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping">_check_mapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mapping</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_ETreeTestCaseBase._check_mapping-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_mapping-expanded"><a name="L3946"></a><tt class="py-lineno">3946</tt>  <tt class="py-line">        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">mapping</tt><tt class="py-op">)</tt> </tt>
-<a name="L3947"></a><tt class="py-lineno">3947</tt>  <tt class="py-line">        <tt id="link-3703" class="py-name"><a title="lxml.etree._Attrib.keys
+xml.etree.ElementTree.Element.text" class="py-name" href="#" onclick="return doclink('link-3739', 'text', 'link-45');">text</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L3983"></a><tt class="py-lineno">3983</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3740" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3740', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3741" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3741', 'tail', 'link-46');">tail</a></tt> <tt class="py-keyword">is</tt> <tt class="py-keyword">not</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L3984"></a><tt class="py-lineno">3984</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3742" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase._check_string" class="py-name" href="#" onclick="return doclink('link-3742', '_check_string', 'link-3729');">_check_string</a></tt><tt class="py-op">(</tt><tt id="link-3743" class="py-name"><a title="lxml.tests.selftest2.element" class="py-name" href="#" onclick="return doclink('link-3743', 'element', 'link-862');">element</a></tt><tt class="py-op">.</tt><tt id="link-3744" class="py-name"><a title="lxml.etree._Element.tail
+xml.etree.ElementTree.Element.tail" class="py-name" href="#" onclick="return doclink('link-3744', 'tail', 'link-46');">tail</a></tt><tt class="py-op">)</tt> </tt>
+</div><a name="L3985"></a><tt class="py-lineno">3985</tt>  <tt class="py-line">         </tt>
+<a name="_ETreeTestCaseBase._check_string"></a><div id="_ETreeTestCaseBase._check_string-def"><a name="L3986"></a><tt class="py-lineno">3986</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_string-toggle" onclick="return toggle('_ETreeTestCaseBase._check_string');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_string">_check_string</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">string</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._check_string-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_string-expanded"><a name="L3987"></a><tt class="py-lineno">3987</tt>  <tt class="py-line">        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">string</tt><tt class="py-op">)</tt> </tt>
+<a name="L3988"></a><tt class="py-lineno">3988</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">char</tt> <tt class="py-keyword">in</tt> <tt class="py-name">string</tt><tt class="py-op">:</tt> </tt>
+<a name="L3989"></a><tt class="py-lineno">3989</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">char</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L3990"></a><tt class="py-lineno">3990</tt>  <tt class="py-line">        <tt class="py-name">new_string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> <tt class="py-op">+</tt> <tt class="py-string">""</tt> </tt>
+<a name="L3991"></a><tt class="py-lineno">3991</tt>  <tt class="py-line">        <tt class="py-name">new_string</tt> <tt class="py-op">=</tt> <tt class="py-name">string</tt> <tt class="py-op">+</tt> <tt class="py-string">" "</tt> </tt>
+<a name="L3992"></a><tt class="py-lineno">3992</tt>  <tt class="py-line">        <tt class="py-name">string</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-number">0</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L3993"></a><tt class="py-lineno">3993</tt>  <tt class="py-line"> </tt>
+<a name="_ETreeTestCaseBase._check_mapping"></a><div id="_ETreeTestCaseBase._check_mapping-def"><a name="L3994"></a><tt class="py-lineno">3994</tt> <a class="py-toggle" href="#" id="_ETreeTestCaseBase._check_mapping-toggle" onclick="return toggle('_ETreeTestCaseBase._check_mapping');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_check_mapping">_check_mapping</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">mapping</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_ETreeTestCaseBase._check_mapping-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_ETreeTestCaseBase._check_mapping-expanded"><a name="L3995"></a><tt class="py-lineno">3995</tt>  <tt class="py-line">        <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">mapping</tt><tt class="py-op">)</tt> </tt>
+<a name="L3996"></a><tt class="py-lineno">3996</tt>  <tt class="py-line">        <tt id="link-3745" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3703', 'keys', 'link-589');">keys</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3704" class="py-name"><a title="lxml.etree._Attrib.keys
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3745', 'keys', 'link-589');">keys</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3746" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3704', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3948"></a><tt class="py-lineno">3948</tt>  <tt class="py-line">        <tt id="link-3705" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3746', 'keys', 'link-589');">keys</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3997"></a><tt class="py-lineno">3997</tt>  <tt class="py-line">        <tt id="link-3747" class="py-name"><a title="lxml.etree._Attrib.values
 lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-3705', 'values', 'link-634');">values</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3706" class="py-name"><a title="lxml.etree._Attrib.values
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-3747', 'values', 'link-634');">values</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3748" class="py-name"><a title="lxml.etree._Attrib.values
 lxml.etree._Element.values
-lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-3706', 'values', 'link-634');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3949"></a><tt class="py-lineno">3949</tt>  <tt class="py-line">        <tt id="link-3707" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.etree._IDDict.values" class="py-name" href="#" onclick="return doclink('link-3748', 'values', 'link-634');">values</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3998"></a><tt class="py-lineno">3998</tt>  <tt class="py-line">        <tt id="link-3749" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3707', 'items', 'link-499');">items</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3708" class="py-name"><a title="lxml.etree._Attrib.items
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3749', 'items', 'link-499');">items</a></tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">.</tt><tt id="link-3750" class="py-name"><a title="lxml.etree._Attrib.items
 lxml.etree._Element.items
-lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3708', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3950"></a><tt class="py-lineno">3950</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-3709" class="py-name"><a title="lxml.etree._Attrib.keys
+lxml.etree._IDDict.items" class="py-name" href="#" onclick="return doclink('link-3750', 'items', 'link-499');">items</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L3999"></a><tt class="py-lineno">3999</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt id="link-3751" class="py-name"><a title="lxml.etree._Attrib.keys
 lxml.etree._Element.keys
 lxml.etree._IDDict.keys
 lxml.html.FieldsDict.keys
-lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3709', 'keys', 'link-589');">keys</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L3951"></a><tt class="py-lineno">3951</tt>  <tt class="py-line">            <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
-<a name="L3952"></a><tt class="py-lineno">3952</tt>  <tt class="py-line">        <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-string">"key"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"value"</tt> </tt>
-<a name="L3953"></a><tt class="py-lineno">3953</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">,</tt> <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-string">"key"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L3954"></a><tt class="py-lineno">3954</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest"></a><div id="_XMLPullParserTest-def"><a name="L3955"></a><tt class="py-lineno">3955</tt>  <tt class="py-line"> </tt>
-<a name="L3956"></a><tt class="py-lineno">3956</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest-toggle" onclick="return toggle('_XMLPullParserTest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html">_XMLPullParserTest</a><tt class="py-op">(</tt><tt class="py-base-class">unittest</tt><tt class="py-op">.</tt><tt class="py-base-class">TestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_XMLPullParserTest-expanded"><a name="L3957"></a><tt class="py-lineno">3957</tt>  <tt class="py-line">    <tt id="link-3710" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3710', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L3958"></a><tt class="py-lineno">3958</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest._feed"></a><div id="_XMLPullParserTest._feed-def"><a name="L3959"></a><tt class="py-lineno">3959</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest._feed-toggle" onclick="return toggle('_XMLPullParserTest._feed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#_feed">_feed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">chunk_size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest._feed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest._feed-expanded"><a name="L3960"></a><tt class="py-lineno">3960</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">chunk_size</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L3961"></a><tt class="py-lineno">3961</tt>  <tt class="py-line">            <tt id="link-3711" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3711', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3712" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3712', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3713" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3713', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L3962"></a><tt class="py-lineno">3962</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3963"></a><tt class="py-lineno">3963</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-3714" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3714', 'data', 'link-1067');">data</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3964"></a><tt class="py-lineno">3964</tt>  <tt class="py-line">                <tt id="link-3715" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3715', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3716" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3716', 'feed', 'link-3322');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3717" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3717', 'data', 'link-1067');">data</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-name">chunk_size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3965"></a><tt class="py-lineno">3965</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest._close_and_return_root"></a><div id="_XMLPullParserTest._close_and_return_root-def"><a name="L3966"></a><tt class="py-lineno">3966</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest._close_and_return_root-toggle" onclick="return toggle('_XMLPullParserTest._close_and_return_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#_close_and_return_root">_close_and_return_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest._close_and_return_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest._close_and_return_root-expanded"><a name="L3967"></a><tt class="py-lineno">3967</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'ElementTree'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3718" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3718', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
-<a name="L3968"></a><tt class="py-lineno">3968</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree's API is a bit unwieldy in Py3.4</tt> </tt>
-<a name="L3969"></a><tt class="py-lineno">3969</tt>  <tt class="py-line">            <tt id="link-3719" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3719', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3720" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3720', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3721" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#_close_and_return_root"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3721', '_close_and_return_root', 'link-3721');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3970"></a><tt class="py-lineno">3970</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L3971"></a><tt class="py-lineno">3971</tt>  <tt class="py-line">            <tt id="link-3722" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3722', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3723" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3723', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3724" class="py-name"><a title="lxml.etree.TreeBuilder.close
+lxml.html.InputGetter.keys" class="py-name" href="#" onclick="return doclink('link-3751', 'keys', 'link-589');">keys</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L4000"></a><tt class="py-lineno">4000</tt>  <tt class="py-line">            <tt class="py-name">item</tt> <tt class="py-op">=</tt> <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L4001"></a><tt class="py-lineno">4001</tt>  <tt class="py-line">        <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-string">"key"</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-string">"value"</tt> </tt>
+<a name="L4002"></a><tt class="py-lineno">4002</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-string">"value"</tt><tt class="py-op">,</tt> <tt class="py-name">mapping</tt><tt class="py-op">[</tt><tt class="py-string">"key"</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L4003"></a><tt class="py-lineno">4003</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest"></a><div id="_XMLPullParserTest-def"><a name="L4004"></a><tt class="py-lineno">4004</tt>  <tt class="py-line"> </tt>
+<a name="L4005"></a><tt class="py-lineno">4005</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest-toggle" onclick="return toggle('_XMLPullParserTest');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html">_XMLPullParserTest</a><tt class="py-op">(</tt><tt class="py-base-class">unittest</tt><tt class="py-op">.</tt><tt class="py-base-class">TestCase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="_XMLPullParserTest-expanded"><a name="L4006"></a><tt class="py-lineno">4006</tt>  <tt class="py-line">    <tt id="link-3752" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3752', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L4007"></a><tt class="py-lineno">4007</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest._feed"></a><div id="_XMLPullParserTest._feed-def"><a name="L4008"></a><tt class="py-lineno">4008</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest._feed-toggle" onclick="return toggle('_XMLPullParserTest._feed');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#_feed">_feed</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">,</tt> <tt class="py-param">chunk_size</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest._feed-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest._feed-expanded"><a name="L4009"></a><tt class="py-lineno">4009</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-name">chunk_size</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L4010"></a><tt class="py-lineno">4010</tt>  <tt class="py-line">            <tt id="link-3753" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3753', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3754" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3754', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3755" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3755', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4011"></a><tt class="py-lineno">4011</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L4012"></a><tt class="py-lineno">4012</tt>  <tt class="py-line">            <tt class="py-keyword">for</tt> <tt class="py-name">i</tt> <tt class="py-keyword">in</tt> <tt class="py-name">range</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt id="link-3756" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3756', 'data', 'link-1073');">data</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L4013"></a><tt class="py-lineno">4013</tt>  <tt class="py-line">                <tt id="link-3757" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3757', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3758" class="py-name"><a title="lxml.etree._FeedParser.feed" class="py-name" href="#" onclick="return doclink('link-3758', 'feed', 'link-3364');">feed</a></tt><tt class="py-op">(</tt><tt id="link-3759" class="py-name"><a title="lxml.etree.TreeBuilder.data" class="py-name" href="#" onclick="return doclink('link-3759', 'data', 'link-1073');">data</a></tt><tt class="py-op">[</tt><tt class="py-name">i</tt><tt class="py-op">:</tt><tt class="py-name">i</tt><tt class="py-op">+</tt><tt class="py-name">chunk_size</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4014"></a><tt class="py-lineno">4014</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest._close_and_return_root"></a><div id="_XMLPullParserTest._close_and_return_root-def"><a name="L4015"></a><tt class="py-lineno">4015</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest._close_and_return_root-toggle" onclick="return toggle('_XMLPullParserTest._close_and_return_root');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#_close_and_return_root">_close_and_return_root</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest._close_and_return_root-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest._close_and_return_root-expanded"><a name="L4016"></a><tt class="py-lineno">4016</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt class="py-string">'ElementTree'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3760" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3760', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt><tt class="py-op">:</tt> </tt>
+<a name="L4017"></a><tt class="py-lineno">4017</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree's API is a bit unwieldy in Py3.4</tt> </tt>
+<a name="L4018"></a><tt class="py-lineno">4018</tt>  <tt class="py-line">            <tt id="link-3761" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3761', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3762" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3762', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3763" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#_close_and_return_root"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3763', '_close_and_return_root', 'link-3763');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4019"></a><tt class="py-lineno">4019</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L4020"></a><tt class="py-lineno">4020</tt>  <tt class="py-line">            <tt id="link-3764" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3764', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt id="link-3765" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3765', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3766" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3724', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3972"></a><tt class="py-lineno">3972</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3725" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3725', 'root', 'link-50');">root</a></tt> </tt>
-</div><a name="L3973"></a><tt class="py-lineno">3973</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.assert_event_tags"></a><div id="_XMLPullParserTest.assert_event_tags-def"><a name="L3974"></a><tt class="py-lineno">3974</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.assert_event_tags-toggle" onclick="return toggle('_XMLPullParserTest.assert_event_tags');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#assert_event_tags">assert_event_tags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.assert_event_tags-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.assert_event_tags-expanded"><a name="L3975"></a><tt class="py-lineno">3975</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt id="link-3726" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3726', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3727" class="py-name" targets="Method lxml.etree.HTMLPullParser.read_events()=lxml.etree.HTMLPullParser-class.html#read_events,Method lxml.etree.XMLPullParser.read_events()=lxml.etree.XMLPullParser-class.html#read_events"><a title="lxml.etree.HTMLPullParser.read_events
-lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3727', 'read_events', 'link-3727');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3976"></a><tt class="py-lineno">3976</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-3728" class="py-name" targets="Variable lxml.html.FormElement.action=lxml.html.FormElement-class.html#action"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3728', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3729" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3766', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4021"></a><tt class="py-lineno">4021</tt>  <tt class="py-line">        <tt class="py-keyword">return</tt> <tt id="link-3767" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3767', 'root', 'link-50');">root</a></tt> </tt>
+</div><a name="L4022"></a><tt class="py-lineno">4022</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.assert_event_tags"></a><div id="_XMLPullParserTest.assert_event_tags-def"><a name="L4023"></a><tt class="py-lineno">4023</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.assert_event_tags-toggle" onclick="return toggle('_XMLPullParserTest.assert_event_tags');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#assert_event_tags">assert_event_tags</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">parser</tt><tt class="py-op">,</tt> <tt class="py-param">expected</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.assert_event_tags-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.assert_event_tags-expanded"><a name="L4024"></a><tt class="py-lineno">4024</tt>  <tt class="py-line">        <tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt id="link-3768" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3768', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3769" class="py-name" targets="Method lxml.etree.HTMLPullParser.read_events()=lxml.etree.HTMLPullParser-class.html#read_events,Method lxml.etree.XMLPullParser.read_events()=lxml.etree.XMLPullParser-class.html#read_events"><a title="lxml.etree.HTMLPullParser.read_events
+lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3769', 'read_events', 'link-3769');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4025"></a><tt class="py-lineno">4025</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-op">(</tt><tt id="link-3770" class="py-name" targets="Variable lxml.html.FormElement.action=lxml.html.FormElement-class.html#action"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3770', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3771" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3729', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-3730" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3730', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
-<a name="L3977"></a><tt class="py-lineno">3977</tt>  <tt class="py-line">                         <tt class="py-name">expected</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L3978"></a><tt class="py-lineno">3978</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_simple_xml"></a><div id="_XMLPullParserTest.test_simple_xml-def"><a name="L3979"></a><tt class="py-lineno">3979</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_simple_xml-toggle" onclick="return toggle('_XMLPullParserTest.test_simple_xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_simple_xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_simple_xml-expanded"><a name="L3980"></a><tt class="py-lineno">3980</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">chunk_size</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L3981"></a><tt class="py-lineno">3981</tt>  <tt class="py-line">            <tt class="py-comment">#with self.subTest(chunk_size=chunk_size):</tt> </tt>
-<a name="L3982"></a><tt class="py-lineno">3982</tt>  <tt class="py-line">                <tt id="link-3731" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3731', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3732" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3732', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3733" class="py-name" targets="Class lxml.etree.XMLPullParser=lxml.etree.XMLPullParser-class.html"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3733', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L3983"></a><tt class="py-lineno">3983</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3734" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#assert_event_tags,Method lxml.tests.test_etree.XMLPullParserTest.assert_event_tags()=lxml.tests.test_etree.XMLPullParserTest-class.html#assert_event_tags"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3734', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3735" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3735', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L3984"></a><tt class="py-lineno">3984</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3736" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest._feed()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#_feed"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3736', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3737" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3737', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3985"></a><tt class="py-lineno">3985</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3738" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3738', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3739" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3739', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L3986"></a><tt class="py-lineno">3986</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3740" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3740', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3741" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3741', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L3987"></a><tt class="py-lineno">3987</tt>  <tt class="py-line">                           <tt class="py-string">"&lt;root&gt;\n  &lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">,</tt> </tt>
-<a name="L3988"></a><tt class="py-lineno">3988</tt>  <tt class="py-line">                           <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3989"></a><tt class="py-lineno">3989</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3742" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3742', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3743" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3743', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L3990"></a><tt class="py-lineno">3990</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3744" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3744', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3745" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3745', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3991"></a><tt class="py-lineno">3991</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3746" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3746', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3747" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3747', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L3992"></a><tt class="py-lineno">3992</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3748" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3748', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3749" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3749', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3993"></a><tt class="py-lineno">3993</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3750" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3750', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3751" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3751', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3994"></a><tt class="py-lineno">3994</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3752" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3752', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3753" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3753', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
-<a name="L3995"></a><tt class="py-lineno">3995</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3996"></a><tt class="py-lineno">3996</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L3997"></a><tt class="py-lineno">3997</tt>  <tt class="py-line">                    <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L3998"></a><tt class="py-lineno">3998</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3754" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3754', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3755" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3755', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
-<a name="L3999"></a><tt class="py-lineno">3999</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3756" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3756', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3757" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3757', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4000"></a><tt class="py-lineno">4000</tt>  <tt class="py-line">                <tt id="link-3758" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3758', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3759" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3759', '_close_and_return_root', 'link-3721');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3760" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3760', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L4001"></a><tt class="py-lineno">4001</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3761" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3761', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3762" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3771', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt> <tt class="py-keyword">for</tt> <tt id="link-3772" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3772', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-keyword">in</tt> <tt class="py-name">events</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> </tt>
+<a name="L4026"></a><tt class="py-lineno">4026</tt>  <tt class="py-line">                         <tt class="py-name">expected</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4027"></a><tt class="py-lineno">4027</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_simple_xml"></a><div id="_XMLPullParserTest.test_simple_xml-def"><a name="L4028"></a><tt class="py-lineno">4028</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_simple_xml-toggle" onclick="return toggle('_XMLPullParserTest.test_simple_xml');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml">test_simple_xml</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_simple_xml-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_simple_xml-expanded"><a name="L4029"></a><tt class="py-lineno">4029</tt>  <tt class="py-line">        <tt class="py-keyword">for</tt> <tt class="py-name">chunk_size</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-number">1</tt><tt class="py-op">,</tt> <tt class="py-number">5</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L4030"></a><tt class="py-lineno">4030</tt>  <tt class="py-line">            <tt class="py-comment">#with self.subTest(chunk_size=chunk_size):</tt> </tt>
+<a name="L4031"></a><tt class="py-lineno">4031</tt>  <tt class="py-line">                <tt id="link-3773" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3773', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3774" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3774', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3775" class="py-name" targets="Class lxml.etree.XMLPullParser=lxml.etree.XMLPullParser-class.html"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3775', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4032"></a><tt class="py-lineno">4032</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3776" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#assert_event_tags,Method lxml.tests.test_etree.XMLPullParserTest.assert_event_tags()=lxml.tests.test_etree.XMLPullParserTest-class.html#assert_event_tags"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3776', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3777" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3777', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4033"></a><tt class="py-lineno">4033</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3778" class="py-name" targets="Method lxml.tests.test_elementtree._XMLPullParserTest._feed()=lxml.tests.test_elementtree._XMLPullParserTest-class.html#_feed"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3778', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3779" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3779', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4034"></a><tt class="py-lineno">4034</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3780" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3780', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3781" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3781', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4035"></a><tt class="py-lineno">4035</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3782" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3782', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3783" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3783', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L4036"></a><tt class="py-lineno">4036</tt>  <tt class="py-line">                           <tt class="py-string">"&lt;root&gt;\n  &lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">,</tt> </tt>
+<a name="L4037"></a><tt class="py-lineno">4037</tt>  <tt class="py-line">                           <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4038"></a><tt class="py-lineno">4038</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3784" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3784', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3785" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3785', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4039"></a><tt class="py-lineno">4039</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3786" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3786', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3787" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3787', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4040"></a><tt class="py-lineno">4040</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3788" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3788', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3789" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3789', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4041"></a><tt class="py-lineno">4041</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3790" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3790', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3791" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3791', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4042"></a><tt class="py-lineno">4042</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3792" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3792', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3793" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3793', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4043"></a><tt class="py-lineno">4043</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3794" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3794', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3795" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3795', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
+<a name="L4044"></a><tt class="py-lineno">4044</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4045"></a><tt class="py-lineno">4045</tt>  <tt class="py-line">                    <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4046"></a><tt class="py-lineno">4046</tt>  <tt class="py-line">                    <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4047"></a><tt class="py-lineno">4047</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3796" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3796', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3797" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3797', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">,</tt> <tt class="py-name">chunk_size</tt><tt class="py-op">)</tt> </tt>
+<a name="L4048"></a><tt class="py-lineno">4048</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3798" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3798', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3799" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3799', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4049"></a><tt class="py-lineno">4049</tt>  <tt class="py-line">                <tt id="link-3800" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3800', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3801" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3801', '_close_and_return_root', 'link-3763');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3802" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3802', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4050"></a><tt class="py-lineno">4050</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3803" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3803', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3804" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3762', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4002"></a><tt class="py-lineno">4002</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_feed_while_iterating"></a><div id="_XMLPullParserTest.test_feed_while_iterating-def"><a name="L4003"></a><tt class="py-lineno">4003</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_feed_while_iterating-toggle" onclick="return toggle('_XMLPullParserTest.test_feed_while_iterating');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_feed_while_iterating-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_feed_while_iterating-expanded"><a name="L4004"></a><tt class="py-lineno">4004</tt>  <tt class="py-line">        <tt id="link-3763" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3763', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3764" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3804', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4051"></a><tt class="py-lineno">4051</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_feed_while_iterating"></a><div id="_XMLPullParserTest.test_feed_while_iterating-def"><a name="L4052"></a><tt class="py-lineno">4052</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_feed_while_iterating-toggle" onclick="return toggle('_XMLPullParserTest.test_feed_while_iterating');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_feed_while_iterating">test_feed_while_iterating</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_feed_while_iterating-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_feed_while_iterating-expanded"><a name="L4053"></a><tt class="py-lineno">4053</tt>  <tt class="py-line">        <tt id="link-3805" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3805', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3806" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3764', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3765" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3765', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L4005"></a><tt class="py-lineno">4005</tt>  <tt class="py-line">        <tt class="py-name">it</tt> <tt class="py-op">=</tt> <tt id="link-3766" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3766', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3767" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
-lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3767', 'read_events', 'link-3727');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L4006"></a><tt class="py-lineno">4006</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3768" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3768', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3769" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3769', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n  &lt;element key='value'&gt;text&lt;/element&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4007"></a><tt class="py-lineno">4007</tt>  <tt class="py-line">        <tt id="link-3770" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3770', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-op">=</tt> <tt id="link-3771" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3806', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3807" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3807', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4054"></a><tt class="py-lineno">4054</tt>  <tt class="py-line">        <tt class="py-name">it</tt> <tt class="py-op">=</tt> <tt id="link-3808" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3808', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3809" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
+lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3809', 'read_events', 'link-3769');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4055"></a><tt class="py-lineno">4055</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3810" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3810', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3811" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3811', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n  &lt;element key='value'&gt;text&lt;/element&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4056"></a><tt class="py-lineno">4056</tt>  <tt class="py-line">        <tt id="link-3812" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3812', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-op">=</tt> <tt id="link-3813" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3771', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
-<a name="L4008"></a><tt class="py-lineno">4008</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-3772" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3772', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3773" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3813', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
+<a name="L4057"></a><tt class="py-lineno">4057</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-3814" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3814', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3815" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3773', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4009"></a><tt class="py-lineno">4009</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3774" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3774', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3775" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3775', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4010"></a><tt class="py-lineno">4010</tt>  <tt class="py-line">        <tt id="link-3776" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3776', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-op">=</tt> <tt id="link-3777" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3815', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4058"></a><tt class="py-lineno">4058</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3816" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3816', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3817" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3817', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4059"></a><tt class="py-lineno">4059</tt>  <tt class="py-line">        <tt id="link-3818" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3818', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt> <tt class="py-op">=</tt> <tt id="link-3819" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3777', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
-<a name="L4011"></a><tt class="py-lineno">4011</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-3778" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3778', 'action', 'link-3728');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3779" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3819', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
+<a name="L4060"></a><tt class="py-lineno">4060</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-op">(</tt><tt id="link-3820" class="py-name"><a title="lxml.html.FormElement.action" class="py-name" href="#" onclick="return doclink('link-3820', 'action', 'link-3770');">action</a></tt><tt class="py-op">,</tt> <tt class="py-name">elem</tt><tt class="py-op">.</tt><tt id="link-3821" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3779', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4012"></a><tt class="py-lineno">4012</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L4013"></a><tt class="py-lineno">4013</tt>  <tt class="py-line">            <tt id="link-3780" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3821', 'tag', 'link-44');">tag</a></tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4061"></a><tt class="py-lineno">4061</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L4062"></a><tt class="py-lineno">4062</tt>  <tt class="py-line">            <tt id="link-3822" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3780', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
-<a name="L4014"></a><tt class="py-lineno">4014</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt>
-<a name="L4015"></a><tt class="py-lineno">4015</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L4016"></a><tt class="py-lineno">4016</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L4017"></a><tt class="py-lineno">4017</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4018"></a><tt class="py-lineno">4018</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_simple_xml_with_ns"></a><div id="_XMLPullParserTest.test_simple_xml_with_ns-def"><a name="L4019"></a><tt class="py-lineno">4019</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_simple_xml_with_ns-toggle" onclick="return toggle('_XMLPullParserTest.test_simple_xml_with_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_simple_xml_with_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_simple_xml_with_ns-expanded"><a name="L4020"></a><tt class="py-lineno">4020</tt>  <tt class="py-line">        <tt id="link-3781" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3781', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3782" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3782', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3783" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3783', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L4021"></a><tt class="py-lineno">4021</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3784" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3784', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3785" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3785', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4022"></a><tt class="py-lineno">4022</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3786" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3786', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3787" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3787', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4023"></a><tt class="py-lineno">4023</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3788" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3788', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3789" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3789', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4024"></a><tt class="py-lineno">4024</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3790" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3790', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3791" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3791', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root xmlns='namespace'&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4025"></a><tt class="py-lineno">4025</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3792" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3792', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3793" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3793', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4026"></a><tt class="py-lineno">4026</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3794" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3794', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3795" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3795', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4027"></a><tt class="py-lineno">4027</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3796" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3796', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3797" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3797', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4028"></a><tt class="py-lineno">4028</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3798" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3798', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3799" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3799', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4029"></a><tt class="py-lineno">4029</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3800" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3800', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3801" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3801', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4030"></a><tt class="py-lineno">4030</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3802" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3802', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3803" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3803', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4031"></a><tt class="py-lineno">4031</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3804" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3804', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3805" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3805', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4032"></a><tt class="py-lineno">4032</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3806" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3806', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3807" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3807', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
-<a name="L4033"></a><tt class="py-lineno">4033</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4034"></a><tt class="py-lineno">4034</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4035"></a><tt class="py-lineno">4035</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4036"></a><tt class="py-lineno">4036</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3808" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3808', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3809" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3809', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4037"></a><tt class="py-lineno">4037</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3810" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3810', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3811" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3811', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4038"></a><tt class="py-lineno">4038</tt>  <tt class="py-line">        <tt id="link-3812" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3812', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3813" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3813', '_close_and_return_root', 'link-3721');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3814" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3814', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L4039"></a><tt class="py-lineno">4039</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3815" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3815', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3816" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3822', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">it</tt><tt class="py-op">)</tt> </tt>
+<a name="L4063"></a><tt class="py-lineno">4063</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">StopIteration</tt><tt class="py-op">:</tt> </tt>
+<a name="L4064"></a><tt class="py-lineno">4064</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L4065"></a><tt class="py-lineno">4065</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L4066"></a><tt class="py-lineno">4066</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4067"></a><tt class="py-lineno">4067</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_simple_xml_with_ns"></a><div id="_XMLPullParserTest.test_simple_xml_with_ns-def"><a name="L4068"></a><tt class="py-lineno">4068</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_simple_xml_with_ns-toggle" onclick="return toggle('_XMLPullParserTest.test_simple_xml_with_ns');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_simple_xml_with_ns">test_simple_xml_with_ns</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_simple_xml_with_ns-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_simple_xml_with_ns-expanded"><a name="L4069"></a><tt class="py-lineno">4069</tt>  <tt class="py-line">        <tt id="link-3823" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3823', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3824" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3824', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3825" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3825', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4070"></a><tt class="py-lineno">4070</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3826" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3826', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3827" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3827', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4071"></a><tt class="py-lineno">4071</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3828" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3828', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3829" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3829', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4072"></a><tt class="py-lineno">4072</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3830" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3830', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3831" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3831', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4073"></a><tt class="py-lineno">4073</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3832" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3832', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3833" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3833', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root xmlns='namespace'&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4074"></a><tt class="py-lineno">4074</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3834" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3834', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3835" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3835', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4075"></a><tt class="py-lineno">4075</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3836" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3836', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3837" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3837', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4076"></a><tt class="py-lineno">4076</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3838" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3838', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3839" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3839', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4077"></a><tt class="py-lineno">4077</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3840" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3840', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3841" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3841', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4078"></a><tt class="py-lineno">4078</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3842" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3842', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3843" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3843', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4079"></a><tt class="py-lineno">4079</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3844" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3844', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3845" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3845', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4080"></a><tt class="py-lineno">4080</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3846" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3846', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3847" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3847', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4081"></a><tt class="py-lineno">4081</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3848" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3848', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3849" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3849', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
+<a name="L4082"></a><tt class="py-lineno">4082</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4083"></a><tt class="py-lineno">4083</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4084"></a><tt class="py-lineno">4084</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4085"></a><tt class="py-lineno">4085</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3850" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3850', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3851" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3851', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4086"></a><tt class="py-lineno">4086</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3852" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3852', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3853" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3853', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4087"></a><tt class="py-lineno">4087</tt>  <tt class="py-line">        <tt id="link-3854" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3854', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3855" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3855', '_close_and_return_root', 'link-3763');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3856" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3856', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4088"></a><tt class="py-lineno">4088</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3857" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3857', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3858" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3816', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}root'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4040"></a><tt class="py-lineno">4040</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_ns_events"></a><div id="_XMLPullParserTest.test_ns_events-def"><a name="L4041"></a><tt class="py-lineno">4041</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_ns_events-toggle" onclick="return toggle('_XMLPullParserTest.test_ns_events');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_ns_events">test_ns_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_ns_events-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_ns_events-expanded"><a name="L4042"></a><tt class="py-lineno">4042</tt>  <tt class="py-line">        <tt id="link-3817" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3817', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3818" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3818', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3819" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3819', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4043"></a><tt class="py-lineno">4043</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3820" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3820', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3821" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3821', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4044"></a><tt class="py-lineno">4044</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3822" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3822', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3823" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3823', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root xmlns='namespace'&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4045"></a><tt class="py-lineno">4045</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
-<a name="L4046"></a><tt class="py-lineno">4046</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-3824" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3824', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3825" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
-lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3825', 'read_events', 'link-3727');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4047"></a><tt class="py-lineno">4047</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'namespace'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4048"></a><tt class="py-lineno">4048</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3826" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3826', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3827" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3827', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4049"></a><tt class="py-lineno">4049</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3828" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3828', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3829" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3829', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4050"></a><tt class="py-lineno">4050</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3830" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3830', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3831" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3831', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4051"></a><tt class="py-lineno">4051</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3832" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3832', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3833" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3833', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4052"></a><tt class="py-lineno">4052</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3834" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3834', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3835" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3835', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4053"></a><tt class="py-lineno">4053</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-3836" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3836', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3837" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
-lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3837', 'read_events', 'link-3727');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end-ns'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4054"></a><tt class="py-lineno">4054</tt>  <tt class="py-line">        <tt id="link-3838" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3838', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3839" class="py-name"><a title="lxml.etree.TreeBuilder.close
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3858', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'{namespace}root'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4089"></a><tt class="py-lineno">4089</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_ns_events"></a><div id="_XMLPullParserTest.test_ns_events-def"><a name="L4090"></a><tt class="py-lineno">4090</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_ns_events-toggle" onclick="return toggle('_XMLPullParserTest.test_ns_events');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_ns_events">test_ns_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_ns_events-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_ns_events-expanded"><a name="L4091"></a><tt class="py-lineno">4091</tt>  <tt class="py-line">        <tt id="link-3859" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3859', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3860" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3860', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3861" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3861', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-string">'end-ns'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4092"></a><tt class="py-lineno">4092</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3862" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3862', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3863" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3863', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4093"></a><tt class="py-lineno">4093</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3864" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3864', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3865" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3865', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root xmlns='namespace'&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4094"></a><tt class="py-lineno">4094</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt> </tt>
+<a name="L4095"></a><tt class="py-lineno">4095</tt>  <tt class="py-line">            <tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-3866" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3866', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3867" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
+lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3867', 'read_events', 'link-3769');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4096"></a><tt class="py-lineno">4096</tt>  <tt class="py-line">            <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start-ns'</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-string">'namespace'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4097"></a><tt class="py-lineno">4097</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3868" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3868', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3869" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3869', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4098"></a><tt class="py-lineno">4098</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3870" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3870', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3871" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3871', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4099"></a><tt class="py-lineno">4099</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3872" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3872', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3873" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3873', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element&gt;text&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4100"></a><tt class="py-lineno">4100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3874" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3874', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3875" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3875', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;empty-element/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4101"></a><tt class="py-lineno">4101</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3876" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3876', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3877" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3877', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4102"></a><tt class="py-lineno">4102</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt class="py-name">list</tt><tt class="py-op">(</tt><tt id="link-3878" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3878', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3879" class="py-name"><a title="lxml.etree.HTMLPullParser.read_events
+lxml.etree.XMLPullParser.read_events" class="py-name" href="#" onclick="return doclink('link-3879', 'read_events', 'link-3769');">read_events</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end-ns'</tt><tt class="py-op">,</tt> <tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4103"></a><tt class="py-lineno">4103</tt>  <tt class="py-line">        <tt id="link-3880" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3880', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">.</tt><tt id="link-3881" class="py-name"><a title="lxml.etree.TreeBuilder.close
 lxml.etree._FeedParser.close
-lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3839', 'close', 'link-2771');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4055"></a><tt class="py-lineno">4055</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_events"></a><div id="_XMLPullParserTest.test_events-def"><a name="L4056"></a><tt class="py-lineno">4056</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_events-toggle" onclick="return toggle('_XMLPullParserTest.test_events');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_events-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_events-expanded"><a name="L4057"></a><tt class="py-lineno">4057</tt>  <tt class="py-line">        <tt id="link-3840" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3840', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3841" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3841', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3842" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3842', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4058"></a><tt class="py-lineno">4058</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3843" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3843', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3844" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3844', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4059"></a><tt class="py-lineno">4059</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3845" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3845', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3846" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3846', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4060"></a><tt class="py-lineno">4060</tt>  <tt class="py-line"> </tt>
-<a name="L4061"></a><tt class="py-lineno">4061</tt>  <tt class="py-line">        <tt id="link-3847" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3847', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3848" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3848', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3849" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3849', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4062"></a><tt class="py-lineno">4062</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3850" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3850', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3851" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3851', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4063"></a><tt class="py-lineno">4063</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3852" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3852', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3853" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3853', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4064"></a><tt class="py-lineno">4064</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3854" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3854', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3855" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3855', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4065"></a><tt class="py-lineno">4065</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3856" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3856', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3857" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3857', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4066"></a><tt class="py-lineno">4066</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3858" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3858', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3859" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3859', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4067"></a><tt class="py-lineno">4067</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3860" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3860', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3861" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3861', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4068"></a><tt class="py-lineno">4068</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3862" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3862', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3863" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3863', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4069"></a><tt class="py-lineno">4069</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3864" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3864', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3865" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3865', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4070"></a><tt class="py-lineno">4070</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3866" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3866', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3867" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3867', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L4071"></a><tt class="py-lineno">4071</tt>  <tt class="py-line">                   <tt class="py-string">"&lt;element xmlns='foo'&gt;text&lt;empty-element/&gt;&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4072"></a><tt class="py-lineno">4072</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3868" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3868', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3869" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3869', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
-<a name="L4073"></a><tt class="py-lineno">4073</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4074"></a><tt class="py-lineno">4074</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4075"></a><tt class="py-lineno">4075</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4076"></a><tt class="py-lineno">4076</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4077"></a><tt class="py-lineno">4077</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4078"></a><tt class="py-lineno">4078</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3870" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3870', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3871" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3871', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4079"></a><tt class="py-lineno">4079</tt>  <tt class="py-line">        <tt id="link-3872" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3872', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3873" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3873', '_close_and_return_root', 'link-3721');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3874" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3874', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L4080"></a><tt class="py-lineno">4080</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3875" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3875', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3876" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3876', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4081"></a><tt class="py-lineno">4081</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3877" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3877', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3878" class="py-name"><a title="lxml.etree._Comment.tag
+lxml.tests.test_incremental_xmlfile.SimpleFileLikeXmlFileTestCase.SimpleFileLike.close" class="py-name" href="#" onclick="return doclink('link-3881', 'close', 'link-2813');">close</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4104"></a><tt class="py-lineno">4104</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_events"></a><div id="_XMLPullParserTest.test_events-def"><a name="L4105"></a><tt class="py-lineno">4105</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_events-toggle" onclick="return toggle('_XMLPullParserTest.test_events');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events">test_events</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_events-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_events-expanded"><a name="L4106"></a><tt class="py-lineno">4106</tt>  <tt class="py-line">        <tt id="link-3882" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3882', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3883" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3883', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3884" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3884', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4107"></a><tt class="py-lineno">4107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3885" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3885', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3886" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3886', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root/&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4108"></a><tt class="py-lineno">4108</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3887" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3887', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3888" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3888', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4109"></a><tt class="py-lineno">4109</tt>  <tt class="py-line"> </tt>
+<a name="L4110"></a><tt class="py-lineno">4110</tt>  <tt class="py-line">        <tt id="link-3889" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3889', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3890" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3890', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3891" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3891', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4111"></a><tt class="py-lineno">4111</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3892" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3892', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3893" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3893', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4112"></a><tt class="py-lineno">4112</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3894" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3894', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3895" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3895', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4113"></a><tt class="py-lineno">4113</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3896" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3896', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3897" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3897', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4114"></a><tt class="py-lineno">4114</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3898" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3898', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3899" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3899', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4115"></a><tt class="py-lineno">4115</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3900" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3900', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3901" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3901', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4116"></a><tt class="py-lineno">4116</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3902" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3902', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3903" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3903', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4117"></a><tt class="py-lineno">4117</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3904" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3904', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3905" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3905', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4118"></a><tt class="py-lineno">4118</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3906" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3906', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3907" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3907', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4119"></a><tt class="py-lineno">4119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3908" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3908', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3909" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3909', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L4120"></a><tt class="py-lineno">4120</tt>  <tt class="py-line">                   <tt class="py-string">"&lt;element xmlns='foo'&gt;text&lt;empty-element/&gt;&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4121"></a><tt class="py-lineno">4121</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3910" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3910', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3911" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3911', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
+<a name="L4122"></a><tt class="py-lineno">4122</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4123"></a><tt class="py-lineno">4123</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4124"></a><tt class="py-lineno">4124</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4125"></a><tt class="py-lineno">4125</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4126"></a><tt class="py-lineno">4126</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4127"></a><tt class="py-lineno">4127</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3912" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3912', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3913" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3913', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4128"></a><tt class="py-lineno">4128</tt>  <tt class="py-line">        <tt id="link-3914" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3914', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3915" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3915', '_close_and_return_root', 'link-3763');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3916" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3916', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4129"></a><tt class="py-lineno">4129</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3917" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3917', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3918" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3918', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4130"></a><tt class="py-lineno">4130</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3919" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3919', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3920" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3878', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
-<a name="L4082"></a><tt class="py-lineno">4082</tt>  <tt class="py-line"> </tt>
-<a name="L4083"></a><tt class="py-lineno">4083</tt>  <tt class="py-line">        <tt id="link-3879" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3879', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3880" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3880', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3881" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3881', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4084"></a><tt class="py-lineno">4084</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3882" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3882', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3883" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3883', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4085"></a><tt class="py-lineno">4085</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3884" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3884', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3885" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3885', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4086"></a><tt class="py-lineno">4086</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3886" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3886', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3887" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3887', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4087"></a><tt class="py-lineno">4087</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3888" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3888', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3889" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3889', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4088"></a><tt class="py-lineno">4088</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3890" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3890', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3891" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3891', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4089"></a><tt class="py-lineno">4089</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3892" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3892', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3893" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3893', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4090"></a><tt class="py-lineno">4090</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3894" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3894', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3895" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3895', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4091"></a><tt class="py-lineno">4091</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3896" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3896', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3897" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3897', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4092"></a><tt class="py-lineno">4092</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3898" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3898', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3899" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3899', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L4093"></a><tt class="py-lineno">4093</tt>  <tt class="py-line">                   <tt class="py-string">"&lt;element xmlns='foo'&gt;text&lt;empty-element/&gt;&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4094"></a><tt class="py-lineno">4094</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3900" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3900', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3901" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3901', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
-<a name="L4095"></a><tt class="py-lineno">4095</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4096"></a><tt class="py-lineno">4096</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
-<a name="L4097"></a><tt class="py-lineno">4097</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4098"></a><tt class="py-lineno">4098</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3902" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3902', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3903" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3903', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4099"></a><tt class="py-lineno">4099</tt>  <tt class="py-line">        <tt id="link-3904" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3904', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3905" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3905', '_close_and_return_root', 'link-3721');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3906" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3906', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L4100"></a><tt class="py-lineno">4100</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3907" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3907', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3908" class="py-name"><a title="lxml.etree._Comment.tag
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3920', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
+<a name="L4131"></a><tt class="py-lineno">4131</tt>  <tt class="py-line"> </tt>
+<a name="L4132"></a><tt class="py-lineno">4132</tt>  <tt class="py-line">        <tt id="link-3921" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3921', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3922" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3922', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3923" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3923', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4133"></a><tt class="py-lineno">4133</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3924" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3924', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3925" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3925', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;!-- comment --&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4134"></a><tt class="py-lineno">4134</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3926" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3926', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3927" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3927', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4135"></a><tt class="py-lineno">4135</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3928" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3928', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3929" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3929', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;root&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4136"></a><tt class="py-lineno">4136</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3930" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3930', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3931" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3931', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4137"></a><tt class="py-lineno">4137</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3932" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3932', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3933" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3933', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;element key='value'&gt;text&lt;/element"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4138"></a><tt class="py-lineno">4138</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3934" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3934', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3935" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3935', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'element'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4139"></a><tt class="py-lineno">4139</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3936" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3936', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3937" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3937', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&gt;\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4140"></a><tt class="py-lineno">4140</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3938" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3938', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3939" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3939', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4141"></a><tt class="py-lineno">4141</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3940" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3940', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3941" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3941', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L4142"></a><tt class="py-lineno">4142</tt>  <tt class="py-line">                   <tt class="py-string">"&lt;element xmlns='foo'&gt;text&lt;empty-element/&gt;&lt;/element&gt;tail\n"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4143"></a><tt class="py-lineno">4143</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3942" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3942', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3943" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3943', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt> </tt>
+<a name="L4144"></a><tt class="py-lineno">4144</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4145"></a><tt class="py-lineno">4145</tt>  <tt class="py-line">            <tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'{foo}empty-element'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> </tt>
+<a name="L4146"></a><tt class="py-lineno">4146</tt>  <tt class="py-line">            <tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4147"></a><tt class="py-lineno">4147</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3944" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3944', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3945" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3945', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;/root&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4148"></a><tt class="py-lineno">4148</tt>  <tt class="py-line">        <tt id="link-3946" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3946', 'root', 'link-50');">root</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3947" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._close_and_return_root" class="py-name" href="#" onclick="return doclink('link-3947', '_close_and_return_root', 'link-3763');">_close_and_return_root</a></tt><tt class="py-op">(</tt><tt id="link-3948" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3948', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4149"></a><tt class="py-lineno">4149</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertEqual</tt><tt class="py-op">(</tt><tt id="link-3949" class="py-name"><a title="lxml.etree.iterparse.root" class="py-name" href="#" onclick="return doclink('link-3949', 'root', 'link-50');">root</a></tt><tt class="py-op">.</tt><tt id="link-3950" class="py-name"><a title="lxml.etree._Comment.tag
 lxml.etree._Element.tag
 lxml.etree._Entity.tag
 lxml.etree._ProcessingInstruction.tag
 lxml.tests.test_xpathevaluator.tag
-xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3908', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4101"></a><tt class="py-lineno">4101</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_events_sequence"></a><div id="_XMLPullParserTest.test_events_sequence-def"><a name="L4102"></a><tt class="py-lineno">4102</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_events_sequence-toggle" onclick="return toggle('_XMLPullParserTest.test_events_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_events_sequence-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_events_sequence-expanded"><a name="L4103"></a><tt class="py-lineno">4103</tt>  <tt class="py-line">        <tt class="py-comment"># Test that events can be some sequence that's not just a tuple or list</tt> </tt>
-<a name="L4104"></a><tt class="py-lineno">4104</tt>  <tt class="py-line">        <tt class="py-name">eventset</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">}</tt> </tt>
-<a name="L4105"></a><tt class="py-lineno">4105</tt>  <tt class="py-line">        <tt id="link-3909" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3909', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3910" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3910', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3911" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3911', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-name">eventset</tt><tt class="py-op">)</tt> </tt>
-<a name="L4106"></a><tt class="py-lineno">4106</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3912" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3912', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3913" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3913', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;foo&gt;bar&lt;/foo&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4107"></a><tt class="py-lineno">4107</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3914" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3914', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3915" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3915', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4108"></a><tt class="py-lineno">4108</tt>  <tt class="py-line"> </tt>
-<a name="L4109"></a><tt class="py-lineno">4109</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">DummyIter</tt><tt class="py-op">:</tt> </tt>
-<a name="L4110"></a><tt class="py-lineno">4110</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L4111"></a><tt class="py-lineno">4111</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt id="link-3916" class="py-name"><a title="lxml.etree._Element.iter
-lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-3916', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'start-ns'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4112"></a><tt class="py-lineno">4112</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__iter__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L4113"></a><tt class="py-lineno">4113</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
-</div><a name="L4114"></a><tt class="py-lineno">4114</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__next__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L4115"></a><tt class="py-lineno">4115</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-3917" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+xml.etree.ElementTree.Element.tag" class="py-name" href="#" onclick="return doclink('link-3950', 'tag', 'link-44');">tag</a></tt><tt class="py-op">,</tt> <tt class="py-string">'root'</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4150"></a><tt class="py-lineno">4150</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_events_sequence"></a><div id="_XMLPullParserTest.test_events_sequence-def"><a name="L4151"></a><tt class="py-lineno">4151</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_events_sequence-toggle" onclick="return toggle('_XMLPullParserTest.test_events_sequence');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_events_sequence">test_events_sequence</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_events_sequence-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_events_sequence-expanded"><a name="L4152"></a><tt class="py-lineno">4152</tt>  <tt class="py-line">        <tt class="py-comment"># Test that events can be some sequence that's not just a tuple or list</tt> </tt>
+<a name="L4153"></a><tt class="py-lineno">4153</tt>  <tt class="py-line">        <tt class="py-name">eventset</tt> <tt class="py-op">=</tt> <tt class="py-op">{</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'start'</tt><tt class="py-op">}</tt> </tt>
+<a name="L4154"></a><tt class="py-lineno">4154</tt>  <tt class="py-line">        <tt id="link-3951" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3951', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3952" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3952', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3953" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3953', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-name">eventset</tt><tt class="py-op">)</tt> </tt>
+<a name="L4155"></a><tt class="py-lineno">4155</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3954" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3954', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3955" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3955', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;foo&gt;bar&lt;/foo&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4156"></a><tt class="py-lineno">4156</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3956" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3956', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3957" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3957', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4157"></a><tt class="py-lineno">4157</tt>  <tt class="py-line"> </tt>
+<a name="L4158"></a><tt class="py-lineno">4158</tt>  <tt class="py-line">        <tt class="py-keyword">class</tt> <tt class="py-def-name">DummyIter</tt><tt class="py-op">:</tt> </tt>
+<a name="L4159"></a><tt class="py-lineno">4159</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__init__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L4160"></a><tt class="py-lineno">4160</tt>  <tt class="py-line">                <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt> <tt class="py-op">=</tt> <tt id="link-3958" class="py-name"><a title="lxml.etree._Element.iter
+lxml.etree._ElementTree.iter" class="py-name" href="#" onclick="return doclink('link-3958', 'iter', 'link-551');">iter</a></tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'start-ns'</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4161"></a><tt class="py-lineno">4161</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__iter__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L4162"></a><tt class="py-lineno">4162</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt class="py-name">self</tt> </tt>
+</div><a name="L4163"></a><tt class="py-lineno">4163</tt>  <tt class="py-line">            <tt class="py-keyword">def</tt> <tt class="py-def-name">__next__</tt><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L4164"></a><tt class="py-lineno">4164</tt>  <tt class="py-line">                <tt class="py-keyword">return</tt> <tt id="link-3959" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3917', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4116"></a><tt class="py-lineno">4116</tt>  <tt class="py-line">            <tt id="link-3918" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3959', 'next', 'link-23');">next</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">events</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4165"></a><tt class="py-lineno">4165</tt>  <tt class="py-line">            <tt id="link-3960" class="py-name"><a title="lxml.etree.ElementDepthFirstIterator.next
 lxml.etree.ElementTextIterator.next
 lxml.etree._ElementIterator.next
 lxml.etree._ElementMatchIterator.next
 lxml.etree.iterparse.next
-lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3918', 'next', 'link-23');">next</a></tt> <tt class="py-op">=</tt> <tt id="link-3919" class="py-name" targets="Method lxml.etree.ElementDepthFirstIterator.__next__()=lxml.etree.ElementDepthFirstIterator-class.html#__next__,Method lxml.etree.ElementTextIterator.__next__()=lxml.etree.ElementTextIterator-class.html#__next__,Method lxml.etree._ElementIterator.__next__()=lxml.etree._ElementIterator-class.html#__next__,Method lxml.etree._ElementMatchIterator.__next__()=lxml.etree._ElementMatchIterator-class.html#__next__,Method lxml.etree.iterparse.__next__()=lxml.etree.iterparse-class.html#__next__,Method lxml.etree.iterwalk.__next__()=lxml.etree.iterwalk-class.html#__next__"><a title="lxml.etree.ElementDepthFirstIterator.__next__
+lxml.etree.iterwalk.next" class="py-name" href="#" onclick="return doclink('link-3960', 'next', 'link-23');">next</a></tt> <tt class="py-op">=</tt> <tt id="link-3961" class="py-name" targets="Method lxml.etree.ElementDepthFirstIterator.__next__()=lxml.etree.ElementDepthFirstIterator-class.html#__next__,Method lxml.etree.ElementTextIterator.__next__()=lxml.etree.ElementTextIterator-class.html#__next__,Method lxml.etree._ElementIterator.__next__()=lxml.etree._ElementIterator-class.html#__next__,Method lxml.etree._ElementMatchIterator.__next__()=lxml.etree._ElementMatchIterator-class.html#__next__,Method lxml.etree.iterparse.__next__()=lxml.etree.iterparse-class.html#__next__,Method lxml.etree.iterwalk.__next__()=lxml.etree.iterwalk-class.html#__next__"><a title="lxml.etree.ElementDepthFirstIterator.__next__
 lxml.etree.ElementTextIterator.__next__
 lxml.etree._ElementIterator.__next__
 lxml.etree._ElementMatchIterator.__next__
 lxml.etree.iterparse.__next__
-lxml.etree.iterwalk.__next__" class="py-name" href="#" onclick="return doclink('link-3919', '__next__', 'link-3919');">__next__</a></tt> </tt>
-</div><a name="L4117"></a><tt class="py-lineno">4117</tt>  <tt class="py-line"> </tt>
-<a name="L4118"></a><tt class="py-lineno">4118</tt>  <tt class="py-line">        <tt id="link-3920" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3920', 'parser', 'link-3312');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3921" class="py-name"><a title="lxml.etree
+lxml.etree.iterwalk.__next__" class="py-name" href="#" onclick="return doclink('link-3961', '__next__', 'link-3961');">__next__</a></tt> </tt>
+</div><a name="L4166"></a><tt class="py-lineno">4166</tt>  <tt class="py-line"> </tt>
+<a name="L4167"></a><tt class="py-lineno">4167</tt>  <tt class="py-line">        <tt id="link-3962" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3962', 'parser', 'link-3354');">parser</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3963" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3921', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3922" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3922', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-name">DummyIter</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4119"></a><tt class="py-lineno">4119</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3923" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3923', '_feed', 'link-3736');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3924" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3924', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;foo&gt;bar&lt;/foo&gt;"</tt><tt class="py-op">)</tt> </tt>
-<a name="L4120"></a><tt class="py-lineno">4120</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3925" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
-lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3925', 'assert_event_tags', 'link-3734');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3926" class="py-name"><a title="lxml.etree._ElementTree.parser
-lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3926', 'parser', 'link-3312');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L4121"></a><tt class="py-lineno">4121</tt>  <tt class="py-line"> </tt>
-<a name="_XMLPullParserTest.test_unknown_event"></a><div id="_XMLPullParserTest.test_unknown_event-def"><a name="L4122"></a><tt class="py-lineno">4122</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_unknown_event-toggle" onclick="return toggle('_XMLPullParserTest.test_unknown_event');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_unknown_event">test_unknown_event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="_XMLPullParserTest.test_unknown_event-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_unknown_event-expanded"><a name="L4123"></a><tt class="py-lineno">4123</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L4124"></a><tt class="py-lineno">4124</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3927" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3963', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3964" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3964', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-name">DummyIter</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4168"></a><tt class="py-lineno">4168</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3965" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest._feed" class="py-name" href="#" onclick="return doclink('link-3965', '_feed', 'link-3778');">_feed</a></tt><tt class="py-op">(</tt><tt id="link-3966" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3966', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-string">"&lt;foo&gt;bar&lt;/foo&gt;"</tt><tt class="py-op">)</tt> </tt>
+<a name="L4169"></a><tt class="py-lineno">4169</tt>  <tt class="py-line">        <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3967" class="py-name"><a title="lxml.tests.test_elementtree._XMLPullParserTest.assert_event_tags
+lxml.tests.test_etree.XMLPullParserTest.assert_event_tags" class="py-name" href="#" onclick="return doclink('link-3967', 'assert_event_tags', 'link-3776');">assert_event_tags</a></tt><tt class="py-op">(</tt><tt id="link-3968" class="py-name"><a title="lxml.etree._ElementTree.parser
+lxml.tests.test_pyclasslookup.PyClassLookupTestCase.parser" class="py-name" href="#" onclick="return doclink('link-3968', 'parser', 'link-3354');">parser</a></tt><tt class="py-op">,</tt> <tt class="py-op">[</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-op">(</tt><tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'foo'</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L4170"></a><tt class="py-lineno">4170</tt>  <tt class="py-line"> </tt>
+<a name="_XMLPullParserTest.test_unknown_event"></a><div id="_XMLPullParserTest.test_unknown_event-def"><a name="L4171"></a><tt class="py-lineno">4171</tt> <a class="py-toggle" href="#" id="_XMLPullParserTest.test_unknown_event-toggle" onclick="return toggle('_XMLPullParserTest.test_unknown_event');">-</a><tt class="py-line">    <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree._XMLPullParserTest-class.html#test_unknown_event">test_unknown_event</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="_XMLPullParserTest.test_unknown_event-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="_XMLPullParserTest.test_unknown_event-expanded"><a name="L4172"></a><tt class="py-lineno">4172</tt>  <tt class="py-line">        <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L4173"></a><tt class="py-lineno">4173</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-3969" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3927', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3928" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3928', 'XMLPullParser', 'link-3733');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'bogus'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L4125"></a><tt class="py-lineno">4125</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
-<a name="L4126"></a><tt class="py-lineno">4126</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
-<a name="L4127"></a><tt class="py-lineno">4127</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L4128"></a><tt class="py-lineno">4128</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L4129"></a><tt class="py-lineno">4129</tt>  <tt class="py-line"> </tt>
-<a name="L4130"></a><tt class="py-lineno">4130</tt>  <tt class="py-line"> </tt>
-<a name="L4131"></a><tt class="py-lineno">4131</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3929" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3969', 'etree', 'link-9');">etree</a></tt><tt class="py-op">.</tt><tt id="link-3970" class="py-name"><a title="lxml.etree.XMLPullParser" class="py-name" href="#" onclick="return doclink('link-3970', 'XMLPullParser', 'link-3775');">XMLPullParser</a></tt><tt class="py-op">(</tt><tt class="py-name">events</tt><tt class="py-op">=</tt><tt class="py-op">(</tt><tt class="py-string">'start'</tt><tt class="py-op">,</tt> <tt class="py-string">'end'</tt><tt class="py-op">,</tt> <tt class="py-string">'bogus'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L4174"></a><tt class="py-lineno">4174</tt>  <tt class="py-line">        <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
+<a name="L4175"></a><tt class="py-lineno">4175</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">True</tt><tt class="py-op">)</tt> </tt>
+<a name="L4176"></a><tt class="py-lineno">4176</tt>  <tt class="py-line">        <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L4177"></a><tt class="py-lineno">4177</tt>  <tt class="py-line">            <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">assertTrue</tt><tt class="py-op">(</tt><tt class="py-name">False</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L4178"></a><tt class="py-lineno">4178</tt>  <tt class="py-line"> </tt>
+<a name="L4179"></a><tt class="py-lineno">4179</tt>  <tt class="py-line"> </tt>
+<a name="L4180"></a><tt class="py-lineno">4180</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3971" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3929', 'etree', 'link-9');">etree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="ETreeTestCase"></a><div id="ETreeTestCase-def"><a name="L4132"></a><tt class="py-lineno">4132</tt> <a class="py-toggle" href="#" id="ETreeTestCase-toggle" onclick="return toggle('ETreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ETreeTestCase-class.html">ETreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeTestCase-expanded"><a name="L4133"></a><tt class="py-lineno">4133</tt>  <tt class="py-line">        <tt id="link-3930" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3971', 'etree', 'link-9');">etree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="ETreeTestCase"></a><div id="ETreeTestCase-def"><a name="L4181"></a><tt class="py-lineno">4181</tt> <a class="py-toggle" href="#" id="ETreeTestCase-toggle" onclick="return toggle('ETreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ETreeTestCase-class.html">ETreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreeTestCase-expanded"><a name="L4182"></a><tt class="py-lineno">4182</tt>  <tt class="py-line">        <tt id="link-3972" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3930', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3931" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3972', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3973" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3931', 'etree', 'link-9');">etree</a></tt> </tt>
-</div><a name="L4134"></a><tt class="py-lineno">4134</tt>  <tt class="py-line"> </tt>
-<a name="ETreePullTestCase"></a><div id="ETreePullTestCase-def"><a name="L4135"></a><tt class="py-lineno">4135</tt> <a class="py-toggle" href="#" id="ETreePullTestCase-toggle" onclick="return toggle('ETreePullTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ETreePullTestCase-class.html">ETreePullTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_XMLPullParserTest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ETreePullTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreePullTestCase-expanded"><a name="L4136"></a><tt class="py-lineno">4136</tt>  <tt class="py-line">        <tt id="link-3932" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3973', 'etree', 'link-9');">etree</a></tt> </tt>
+</div><a name="L4183"></a><tt class="py-lineno">4183</tt>  <tt class="py-line"> </tt>
+<a name="ETreePullTestCase"></a><div id="ETreePullTestCase-def"><a name="L4184"></a><tt class="py-lineno">4184</tt> <a class="py-toggle" href="#" id="ETreePullTestCase-toggle" onclick="return toggle('ETreePullTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ETreePullTestCase-class.html">ETreePullTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_XMLPullParserTest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ETreePullTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ETreePullTestCase-expanded"><a name="L4185"></a><tt class="py-lineno">4185</tt>  <tt class="py-line">        <tt id="link-3974" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3932', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3933" class="py-name"><a title="lxml.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3974', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3975" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3933', 'etree', 'link-9');">etree</a></tt> </tt>
-</div><a name="L4137"></a><tt class="py-lineno">4137</tt>  <tt class="py-line"> </tt>
-<a name="L4138"></a><tt class="py-lineno">4138</tt>  <tt class="py-line"> </tt>
-<a name="L4139"></a><tt class="py-lineno">4139</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3934" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3975', 'etree', 'link-9');">etree</a></tt> </tt>
+</div><a name="L4186"></a><tt class="py-lineno">4186</tt>  <tt class="py-line"> </tt>
+<a name="L4187"></a><tt class="py-lineno">4187</tt>  <tt class="py-line"> </tt>
+<a name="L4188"></a><tt class="py-lineno">4188</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3976" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3934', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="ElementTreeTestCase"></a><div id="ElementTreeTestCase-def"><a name="L4140"></a><tt class="py-lineno">4140</tt> <a class="py-toggle" href="#" id="ElementTreeTestCase-toggle" onclick="return toggle('ElementTreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreeTestCase-class.html">ElementTreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ElementTreeTestCase-expanded"><a name="L4141"></a><tt class="py-lineno">4141</tt>  <tt class="py-line">        <tt id="link-3935" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3976', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="ElementTreeTestCase"></a><div id="ElementTreeTestCase-def"><a name="L4189"></a><tt class="py-lineno">4189</tt> <a class="py-toggle" href="#" id="ElementTreeTestCase-toggle" onclick="return toggle('ElementTreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreeTestCase-class.html">ElementTreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="ElementTreeTestCase-expanded"><a name="L4190"></a><tt class="py-lineno">4190</tt>  <tt class="py-line">        <tt id="link-3977" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3935', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3936" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3977', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3978" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3936', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-<a name="L4142"></a><tt class="py-lineno">4142</tt>  <tt class="py-line"> </tt>
-<a name="L4143"></a><tt class="py-lineno">4143</tt>  <tt class="py-line">        <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
-<a name="ElementTreeTestCase.setUpClass"></a><div id="ElementTreeTestCase.setUpClass-def"><a name="L4144"></a><tt class="py-lineno">4144</tt> <a class="py-toggle" href="#" id="ElementTreeTestCase.setUpClass-toggle" onclick="return toggle('ElementTreeTestCase.setUpClass');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreeTestCase-class.html#setUpClass">setUpClass</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreeTestCase.setUpClass-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ElementTreeTestCase.setUpClass-expanded"><a name="L4145"></a><tt class="py-lineno">4145</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">warnings</tt> </tt>
-<a name="L4146"></a><tt class="py-lineno">4146</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree warns about getiterator() in recent Pythons</tt> </tt>
-<a name="L4147"></a><tt class="py-lineno">4147</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">filterwarnings</tt><tt class="py-op">(</tt> </tt>
-<a name="L4148"></a><tt class="py-lineno">4148</tt>  <tt class="py-line">                <tt class="py-string">'ignore'</tt><tt class="py-op">,</tt> </tt>
-<a name="L4149"></a><tt class="py-lineno">4149</tt>  <tt class="py-line">                <tt class="py-string">r'This method will be removed.*\.iter\(\).*instead'</tt><tt class="py-op">,</tt> </tt>
-<a name="L4150"></a><tt class="py-lineno">4150</tt>  <tt class="py-line">                <tt class="py-name">PendingDeprecationWarning</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L4151"></a><tt class="py-lineno">4151</tt>  <tt class="py-line"> </tt>
-<a name="L4152"></a><tt class="py-lineno">4152</tt>  <tt class="py-line">    <tt id="link-3937" class="py-name"><a title="lxml.tests.common_imports.filter_by_version" class="py-name" href="#" onclick="return doclink('link-3937', 'filter_by_version', 'link-16');">filter_by_version</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L4153"></a><tt class="py-lineno">4153</tt>  <tt class="py-line">        <tt id="link-3938" class="py-name" targets="Class lxml.tests.test_elementtree.ElementTreeTestCase=lxml.tests.test_elementtree.ElementTreeTestCase-class.html"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3938', 'ElementTreeTestCase', 'link-3938');">ElementTreeTestCase</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L4154"></a><tt class="py-lineno">4154</tt>  <tt class="py-line">        <tt id="link-3939" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3939', 'ElementTreeTestCase', 'link-3938');">ElementTreeTestCase</a></tt><tt class="py-op">.</tt><tt id="link-3940" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3940', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">,</tt> <tt id="link-3941" class="py-name"><a title="lxml.tests.common_imports.ET_VERSION" class="py-name" href="#" onclick="return doclink('link-3941', 'ET_VERSION', 'link-13');">ET_VERSION</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L4155"></a><tt class="py-lineno">4155</tt>  <tt class="py-line"> </tt>
-<a name="L4156"></a><tt class="py-lineno">4156</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3942" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3942', 'hasattr', 'link-3315');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3943" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3978', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+<a name="L4191"></a><tt class="py-lineno">4191</tt>  <tt class="py-line"> </tt>
+<a name="L4192"></a><tt class="py-lineno">4192</tt>  <tt class="py-line">        <tt class="py-decorator">@</tt><tt class="py-decorator">classmethod</tt> </tt>
+<a name="ElementTreeTestCase.setUpClass"></a><div id="ElementTreeTestCase.setUpClass-def"><a name="L4193"></a><tt class="py-lineno">4193</tt> <a class="py-toggle" href="#" id="ElementTreeTestCase.setUpClass-toggle" onclick="return toggle('ElementTreeTestCase.setUpClass');">-</a><tt class="py-line">        <tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreeTestCase-class.html#setUpClass">setUpClass</a><tt class="py-op">(</tt><tt class="py-param">cls</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreeTestCase.setUpClass-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ElementTreeTestCase.setUpClass-expanded"><a name="L4194"></a><tt class="py-lineno">4194</tt>  <tt class="py-line">            <tt class="py-keyword">import</tt> <tt class="py-name">warnings</tt> </tt>
+<a name="L4195"></a><tt class="py-lineno">4195</tt>  <tt class="py-line">            <tt class="py-comment"># ElementTree warns about getiterator() in recent Pythons</tt> </tt>
+<a name="L4196"></a><tt class="py-lineno">4196</tt>  <tt class="py-line">            <tt class="py-name">warnings</tt><tt class="py-op">.</tt><tt class="py-name">filterwarnings</tt><tt class="py-op">(</tt> </tt>
+<a name="L4197"></a><tt class="py-lineno">4197</tt>  <tt class="py-line">                <tt class="py-string">'ignore'</tt><tt class="py-op">,</tt> </tt>
+<a name="L4198"></a><tt class="py-lineno">4198</tt>  <tt class="py-line">                <tt class="py-string">r'This method will be removed.*\.iter\(\).*instead'</tt><tt class="py-op">,</tt> </tt>
+<a name="L4199"></a><tt class="py-lineno">4199</tt>  <tt class="py-line">                <tt class="py-name">PendingDeprecationWarning</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L4200"></a><tt class="py-lineno">4200</tt>  <tt class="py-line"> </tt>
+<a name="L4201"></a><tt class="py-lineno">4201</tt>  <tt class="py-line">    <tt id="link-3979" class="py-name"><a title="lxml.tests.common_imports.filter_by_version" class="py-name" href="#" onclick="return doclink('link-3979', 'filter_by_version', 'link-16');">filter_by_version</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L4202"></a><tt class="py-lineno">4202</tt>  <tt class="py-line">        <tt id="link-3980" class="py-name" targets="Class lxml.tests.test_elementtree.ElementTreeTestCase=lxml.tests.test_elementtree.ElementTreeTestCase-class.html"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3980', 'ElementTreeTestCase', 'link-3980');">ElementTreeTestCase</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L4203"></a><tt class="py-lineno">4203</tt>  <tt class="py-line">        <tt id="link-3981" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3981', 'ElementTreeTestCase', 'link-3980');">ElementTreeTestCase</a></tt><tt class="py-op">.</tt><tt id="link-3982" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_ET" class="py-name" href="#" onclick="return doclink('link-3982', 'required_versions_ET', 'link-32');">required_versions_ET</a></tt><tt class="py-op">,</tt> <tt id="link-3983" class="py-name"><a title="lxml.tests.common_imports.ET_VERSION" class="py-name" href="#" onclick="return doclink('link-3983', 'ET_VERSION', 'link-13');">ET_VERSION</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L4204"></a><tt class="py-lineno">4204</tt>  <tt class="py-line"> </tt>
+<a name="L4205"></a><tt class="py-lineno">4205</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3984" class="py-name"><a title="lxml.objectify.ObjectPath.hasattr" class="py-name" href="#" onclick="return doclink('link-3984', 'hasattr', 'link-3357');">hasattr</a></tt><tt class="py-op">(</tt><tt id="link-3985" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3943', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">,</tt> <tt class="py-string">'XMLPullParser'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="ElementTreePullTestCase"></a><div id="ElementTreePullTestCase-def"><a name="L4157"></a><tt class="py-lineno">4157</tt> <a class="py-toggle" href="#" id="ElementTreePullTestCase-toggle" onclick="return toggle('ElementTreePullTestCase');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreePullTestCase-class.html">ElementTreePullTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_XMLPullParserTest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="ElementTreePullTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ElementTreePullTestCase-expanded"><a name="L4158"></a><tt class="py-lineno">4158</tt>  <tt class="py-line">            <tt id="link-3944" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3985', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">,</tt> <tt class="py-string">'XMLPullParser'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="ElementTreePullTestCase"></a><div id="ElementTreePullTestCase-def"><a name="L4206"></a><tt class="py-lineno">4206</tt> <a class="py-toggle" href="#" id="ElementTreePullTestCase-toggle" onclick="return toggle('ElementTreePullTestCase');">-</a><tt class="py-line">        <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.ElementTreePullTestCase-class.html">ElementTreePullTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_XMLPullParserTest</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="ElementTreePullTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++++++++++"></div><div id="ElementTreePullTestCase-expanded"><a name="L4207"></a><tt class="py-lineno">4207</tt>  <tt class="py-line">            <tt id="link-3986" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3944', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3945" class="py-name"><a title="lxml.etree.ElementTree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3986', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3987" class="py-name"><a title="lxml.etree.ElementTree
 xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3945', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
-</div><a name="L4159"></a><tt class="py-lineno">4159</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L4160"></a><tt class="py-lineno">4160</tt>  <tt class="py-line">        <tt id="link-3946" class="py-name" targets="Variable lxml.tests.test_elementtree.ElementTreePullTestCase=lxml.tests.test_elementtree-module.html#ElementTreePullTestCase"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3946', 'ElementTreePullTestCase', 'link-3946');">ElementTreePullTestCase</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L4161"></a><tt class="py-lineno">4161</tt>  <tt class="py-line"> </tt>
-<a name="L4162"></a><tt class="py-lineno">4162</tt>  <tt class="py-line"> </tt>
-<a name="L4163"></a><tt class="py-lineno">4163</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3947" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-3947', 'cElementTree', 'link-12');">cElementTree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="CElementTreeTestCase"></a><div id="CElementTreeTestCase-def"><a name="L4164"></a><tt class="py-lineno">4164</tt> <a class="py-toggle" href="#" id="CElementTreeTestCase-toggle" onclick="return toggle('CElementTreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.CElementTreeTestCase-class.html">CElementTreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="CElementTreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CElementTreeTestCase-expanded"><a name="L4165"></a><tt class="py-lineno">4165</tt>  <tt class="py-line">        <tt id="link-3948" class="py-name"><a title="lxml.etree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3987', 'ElementTree', 'link-11');">ElementTree</a></tt> </tt>
+</div><a name="L4208"></a><tt class="py-lineno">4208</tt>  <tt class="py-line">    <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L4209"></a><tt class="py-lineno">4209</tt>  <tt class="py-line">        <tt id="link-3988" class="py-name" targets="Variable lxml.tests.test_elementtree.ElementTreePullTestCase=lxml.tests.test_elementtree-module.html#ElementTreePullTestCase"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3988', 'ElementTreePullTestCase', 'link-3988');">ElementTreePullTestCase</a></tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L4210"></a><tt class="py-lineno">4210</tt>  <tt class="py-line"> </tt>
+<a name="L4211"></a><tt class="py-lineno">4211</tt>  <tt class="py-line"> </tt>
+<a name="L4212"></a><tt class="py-lineno">4212</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt id="link-3989" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-3989', 'cElementTree', 'link-12');">cElementTree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="CElementTreeTestCase"></a><div id="CElementTreeTestCase-def"><a name="L4213"></a><tt class="py-lineno">4213</tt> <a class="py-toggle" href="#" id="CElementTreeTestCase-toggle" onclick="return toggle('CElementTreeTestCase');">-</a><tt class="py-line">    <tt class="py-keyword">class</tt> <a class="py-def-name" href="lxml.tests.test_elementtree.CElementTreeTestCase-class.html">CElementTreeTestCase</a><tt class="py-op">(</tt><tt class="py-base-class">_ETreeTestCaseBase</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="CElementTreeTestCase-collapsed" style="display:none;" pad="++++" indent="++++++++"></div><div id="CElementTreeTestCase-expanded"><a name="L4214"></a><tt class="py-lineno">4214</tt>  <tt class="py-line">        <tt id="link-3990" class="py-name"><a title="lxml.etree
 lxml.sax.ElementTreeContentHandler.etree
 lxml.tests.test_elementtree.CElementTreeTestCase.etree
 lxml.tests.test_elementtree._ETreeTestCaseBase.etree
 lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3948', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3949" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-3949', 'cElementTree', 'link-12');">cElementTree</a></tt> </tt>
-</div><a name="L4166"></a><tt class="py-lineno">4166</tt>  <tt class="py-line"> </tt>
-<a name="L4167"></a><tt class="py-lineno">4167</tt>  <tt class="py-line">    <tt id="link-3950" class="py-name"><a title="lxml.tests.common_imports.filter_by_version" class="py-name" href="#" onclick="return doclink('link-3950', 'filter_by_version', 'link-16');">filter_by_version</a></tt><tt class="py-op">(</tt> </tt>
-<a name="L4168"></a><tt class="py-lineno">4168</tt>  <tt class="py-line">        <tt id="link-3951" class="py-name" targets="Class lxml.tests.test_elementtree.CElementTreeTestCase=lxml.tests.test_elementtree.CElementTreeTestCase-class.html"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3951', 'CElementTreeTestCase', 'link-3951');">CElementTreeTestCase</a></tt><tt class="py-op">,</tt> </tt>
-<a name="L4169"></a><tt class="py-lineno">4169</tt>  <tt class="py-line">        <tt id="link-3952" class="py-name"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3952', 'CElementTreeTestCase', 'link-3951');">CElementTreeTestCase</a></tt><tt class="py-op">.</tt><tt id="link-3953" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_cET" class="py-name" href="#" onclick="return doclink('link-3953', 'required_versions_cET', 'link-33');">required_versions_cET</a></tt><tt class="py-op">,</tt> <tt id="link-3954" class="py-name"><a title="lxml.tests.common_imports.CET_VERSION" class="py-name" href="#" onclick="return doclink('link-3954', 'CET_VERSION', 'link-14');">CET_VERSION</a></tt><tt class="py-op">)</tt> </tt>
-<a name="test_suite"></a><div id="test_suite-def"><a name="L4170"></a><tt class="py-lineno">4170</tt>  <tt class="py-line"> </tt>
-<a name="L4171"></a><tt class="py-lineno">4171</tt>  <tt class="py-line"> </tt>
-<a name="L4172"></a><tt class="py-lineno">4172</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="test_suite-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="test_suite-expanded"><a name="L4173"></a><tt class="py-lineno">4173</tt>  <tt class="py-line">    <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L4174"></a><tt class="py-lineno">4174</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3955" class="py-name"><a title="lxml.etree
-lxml.sax.ElementTreeContentHandler.etree
-lxml.tests.test_elementtree.CElementTreeTestCase.etree
-lxml.tests.test_elementtree._ETreeTestCaseBase.etree
-lxml.tests.test_elementtree._XMLPullParserTest.etree
-lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3955', 'etree', 'link-9');">etree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L4175"></a><tt class="py-lineno">4175</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3956" class="py-name" targets="Class lxml.tests.test_elementtree.ETreeTestCase=lxml.tests.test_elementtree.ETreeTestCase-class.html"><a title="lxml.tests.test_elementtree.ETreeTestCase" class="py-name" href="#" onclick="return doclink('link-3956', 'ETreeTestCase', 'link-3956');">ETreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4176"></a><tt class="py-lineno">4176</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3957" class="py-name" targets="Class lxml.tests.test_elementtree.ETreePullTestCase=lxml.tests.test_elementtree.ETreePullTestCase-class.html"><a title="lxml.tests.test_elementtree.ETreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3957', 'ETreePullTestCase', 'link-3957');">ETreePullTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4177"></a><tt class="py-lineno">4177</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3958" class="py-name"><a title="lxml.etree.ElementTree
-xml.etree.ElementTree
-xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-3958', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L4178"></a><tt class="py-lineno">4178</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3959" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3959', 'ElementTreeTestCase', 'link-3938');">ElementTreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4179"></a><tt class="py-lineno">4179</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-3960" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3960', 'ElementTreePullTestCase', 'link-3946');">ElementTreePullTestCase</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L4180"></a><tt class="py-lineno">4180</tt>  <tt class="py-line">            <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3961" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3961', 'ElementTreePullTestCase', 'link-3946');">ElementTreePullTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4181"></a><tt class="py-lineno">4181</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3962" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-3962', 'cElementTree', 'link-12');">cElementTree</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L4182"></a><tt class="py-lineno">4182</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3963" class="py-name"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3963', 'CElementTreeTestCase', 'link-3951');">CElementTreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L4183"></a><tt class="py-lineno">4183</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
-</div><a name="L4184"></a><tt class="py-lineno">4184</tt>  <tt class="py-line"> </tt>
-<a name="L4185"></a><tt class="py-lineno">4185</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
-<a name="L4186"></a><tt class="py-lineno">4186</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
-<a name="L4187"></a><tt class="py-lineno">4187</tt>  <tt class="py-line"> </tt><script type="text/javascript">
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3990', 'etree', 'link-9');">etree</a></tt> <tt class="py-op">=</tt> <tt id="link-3991" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-3991', 'cElementTree', 'link-12');">cElementTree</a></tt> </tt>
+</div><a name="L4215"></a><tt class="py-lineno">4215</tt>  <tt class="py-line"> </tt>
+<a name="L4216"></a><tt class="py-lineno">4216</tt>  <tt class="py-line">    <tt id="link-3992" class="py-name"><a title="lxml.tests.common_imports.filter_by_version" class="py-name" href="#" onclick="return doclink('link-3992', 'filter_by_version', 'link-16');">filter_by_version</a></tt><tt class="py-op">(</tt> </tt>
+<a name="L4217"></a><tt class="py-lineno">4217</tt>  <tt class="py-line">        <tt id="link-3993" class="py-name" targets="Class lxml.tests.test_elementtree.CElementTreeTestCase=lxml.tests.test_elementtree.CElementTreeTestCase-class.html"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3993', 'CElementTreeTestCase', 'link-3993');">CElementTreeTestCase</a></tt><tt class="py-op">,</tt> </tt>
+<a name="L4218"></a><tt class="py-lineno">4218</tt>  <tt class="py-line">        <tt id="link-3994" class="py-name"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-3994', 'CElementTreeTestCase', 'link-3993');">CElementTreeTestCase</a></tt><tt class="py-op">.</tt><tt id="link-3995" class="py-name"><a title="lxml.tests.test_elementtree._ETreeTestCaseBase.required_versions_cET" class="py-name" href="#" onclick="return doclink('link-3995', 'required_versions_cET', 'link-33');">required_versions_cET</a></tt><tt class="py-op">,</tt> <tt id="link-3996" class="py-name"><a title="lxml.tests.common_imports.CET_VERSION" class="py-name" href="#" onclick="return doclink('link-3996', 'CET_VERSION', 'link-14');">CET_VERSION</a></tt><tt class="py-op">)</tt> </tt>
+<a name="test_suite"></a><div id="test_suite-def"><a name="L4219"></a><tt class="py-lineno">4219</tt>  <tt class="py-line"> </tt>
+<a name="L4220"></a><tt class="py-lineno">4220</tt>  <tt class="py-line"> </tt>
+<a name="L4221"></a><tt class="py-lineno">4221</tt> <a class="py-toggle" href="#" id="test_suite-toggle" onclick="return toggle('test_suite');">-</a><tt class="py-line"><tt class="py-keyword">def</tt> <a class="py-def-name" href="lxml.tests.test_elementtree-module.html#test_suite">test_suite</a><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="test_suite-collapsed" style="display:none;" pad="++++" indent="++++"></div><div id="test_suite-expanded"><a name="L4222"></a><tt class="py-lineno">4222</tt>  <tt class="py-line">    <tt class="py-name">suite</tt> <tt class="py-op">=</tt> <tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">TestSuite</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L4223"></a><tt class="py-lineno">4223</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-3997" class="py-name"><a title="lxml.etree
+lxml.sax.ElementTreeContentHandler.etree
+lxml.tests.test_elementtree.CElementTreeTestCase.etree
+lxml.tests.test_elementtree._ETreeTestCaseBase.etree
+lxml.tests.test_elementtree._XMLPullParserTest.etree
+lxml.tests.test_io._IOTestCaseBase.etree" class="py-name" href="#" onclick="return doclink('link-3997', 'etree', 'link-9');">etree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L4224"></a><tt class="py-lineno">4224</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3998" class="py-name" targets="Class lxml.tests.test_elementtree.ETreeTestCase=lxml.tests.test_elementtree.ETreeTestCase-class.html"><a title="lxml.tests.test_elementtree.ETreeTestCase" class="py-name" href="#" onclick="return doclink('link-3998', 'ETreeTestCase', 'link-3998');">ETreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4225"></a><tt class="py-lineno">4225</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-3999" class="py-name" targets="Class lxml.tests.test_elementtree.ETreePullTestCase=lxml.tests.test_elementtree.ETreePullTestCase-class.html"><a title="lxml.tests.test_elementtree.ETreePullTestCase" class="py-name" href="#" onclick="return doclink('link-3999', 'ETreePullTestCase', 'link-3999');">ETreePullTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4226"></a><tt class="py-lineno">4226</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-4000" class="py-name"><a title="lxml.etree.ElementTree
+xml.etree.ElementTree
+xml.etree.ElementTree.ElementTree" class="py-name" href="#" onclick="return doclink('link-4000', 'ElementTree', 'link-11');">ElementTree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L4227"></a><tt class="py-lineno">4227</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-4001" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-4001', 'ElementTreeTestCase', 'link-3980');">ElementTreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4228"></a><tt class="py-lineno">4228</tt>  <tt class="py-line">        <tt class="py-keyword">if</tt> <tt id="link-4002" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-4002', 'ElementTreePullTestCase', 'link-3988');">ElementTreePullTestCase</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L4229"></a><tt class="py-lineno">4229</tt>  <tt class="py-line">            <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-4003" class="py-name"><a title="lxml.tests.test_elementtree.ElementTreePullTestCase" class="py-name" href="#" onclick="return doclink('link-4003', 'ElementTreePullTestCase', 'link-3988');">ElementTreePullTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4230"></a><tt class="py-lineno">4230</tt>  <tt class="py-line">    <tt class="py-keyword">if</tt> <tt id="link-4004" class="py-name"><a title="lxml.tests.test_elementtree.cElementTree" class="py-name" href="#" onclick="return doclink('link-4004', 'cElementTree', 'link-12');">cElementTree</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L4231"></a><tt class="py-lineno">4231</tt>  <tt class="py-line">        <tt class="py-name">suite</tt><tt class="py-op">.</tt><tt class="py-name">addTests</tt><tt class="py-op">(</tt><tt class="py-op">[</tt><tt class="py-name">unittest</tt><tt class="py-op">.</tt><tt class="py-name">makeSuite</tt><tt class="py-op">(</tt><tt id="link-4005" class="py-name"><a title="lxml.tests.test_elementtree.CElementTreeTestCase" class="py-name" href="#" onclick="return doclink('link-4005', 'CElementTreeTestCase', 'link-3993');">CElementTreeTestCase</a></tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L4232"></a><tt class="py-lineno">4232</tt>  <tt class="py-line">    <tt class="py-keyword">return</tt> <tt class="py-name">suite</tt> </tt>
+</div><a name="L4233"></a><tt class="py-lineno">4233</tt>  <tt class="py-line"> </tt>
+<a name="L4234"></a><tt class="py-lineno">4234</tt>  <tt class="py-line"><tt class="py-keyword">if</tt> <tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'__main__'</tt><tt class="py-op">:</tt> </tt>
+<a name="L4235"></a><tt class="py-lineno">4235</tt>  <tt class="py-line">    <tt class="py-keyword">print</tt><tt class="py-op">(</tt><tt class="py-string">'to test use test.py %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">__file__</tt><tt class="py-op">)</tt> </tt>
+<a name="L4236"></a><tt class="py-lineno">4236</tt>  <tt class="py-line"> </tt><script type="text/javascript">
 <!--
 expandto(location.href);
 // -->
@@ -11849,7 +11978,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 730c395..ff025e5 100644 (file)
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren">test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail">test_iter_remove_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail">test_iteration_clear_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty">test_iteration_set_tail_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating">test_remove_while_iterating</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring" onclick="show_private();">_rootstring</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_del_tail" onclick="show_private();">_test_del_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_element_boolean" onclick="show_private();">_test_element_boolean</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren" onclick="show_private();">_test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding" onclick="show_private();">_test_wrong_unicode_encoding</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement" onclick="show_private();">_writeElement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile" onclick="show_private();">_writeElementFile</a></code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ef9cb3f..5b52e45 100644 (file)
@@ -373,7 +373,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 674f1a5..01ad925 100644 (file)
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren">test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail">test_iter_remove_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail">test_iteration_clear_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty">test_iteration_set_tail_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating">test_remove_while_iterating</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring" onclick="show_private();">_rootstring</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_del_tail" onclick="show_private();">_test_del_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_element_boolean" onclick="show_private();">_test_element_boolean</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren" onclick="show_private();">_test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding" onclick="show_private();">_test_wrong_unicode_encoding</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement" onclick="show_private();">_writeElement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile" onclick="show_private();">_writeElementFile</a></code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7adfa37..df6d052 100644 (file)
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist">test_fromstringlist</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_characters">test_fromstringlist_characters</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_fromstringlist_single">test_fromstringlist_single</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getchildren">test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator">test_getiterator</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_empty">test_getiterator_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_getiterator_filter">test_getiterator_filter</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_insert_tail">test_insert_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iselement">test_iselement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter">test_iter</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iter_remove_tail">test_iter_remove_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration">test_iteration</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_crash">test_iteration_crash</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_clear_tail">test_iteration_clear_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_del_child">test_iteration_del_child</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_double">test_iteration_double</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_empty">test_iteration_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_reversed">test_iteration_reversed</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_set_tail_empty">test_iteration_set_tail_empty</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_subelement">test_iteration_subelement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iteration_text_only">test_iteration_text_only</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_iterparse">test_iterparse</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_nonexisting">test_remove_nonexisting</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_ns">test_remove_ns</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_tail">test_remove_tail</a></code>,
+      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_remove_while_iterating">test_remove_while_iterating</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_replace_slice_tail">test_replace_slice_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text">test_set_text</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#test_set_text2">test_set_text2</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_rootstring" onclick="show_private();">_rootstring</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_del_tail" onclick="show_private();">_test_del_tail</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_element_boolean" onclick="show_private();">_test_element_boolean</a></code>,
-      <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_getchildren" onclick="show_private();">_test_getchildren</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_test_wrong_unicode_encoding" onclick="show_private();">_test_wrong_unicode_encoding</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElement" onclick="show_private();">_writeElement</a></code>,
       <code><a href="lxml.tests.test_elementtree._ETreeTestCaseBase-class.html#_writeElementFile" onclick="show_private();">_writeElementFile</a></code>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 859dc51..e36d295 100644 (file)
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a name="test_iteration_crash"></a><span class="summary-sig-name">test_iteration_crash</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td><span class="summary-sig"><a name="test_iteration_set_tail_empty"></a><span class="summary-sig-name">test_iteration_set_tail_empty</span>(<span class="summary-sig-arg">self</span>)</span></td>
           <td align="right" valign="top">
-            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_iteration_crash">source&nbsp;code</a></span>
+            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_iteration_set_tail_empty">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_iteration_clear_tail"></a><span class="summary-sig-name">test_iteration_clear_tail</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_iteration_clear_tail">source&nbsp;code</a></span>
             
           </td>
         </tr>
       
     </td>
   </tr>
-<tr class="private">
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
+          <td><span class="summary-sig"><a name="test_remove_while_iterating"></a><span class="summary-sig-name">test_remove_while_iterating</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_remove_while_iterating">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
     <td width="15%" align="right" valign="top" class="summary">
       <span class="summary-type">&nbsp;</span>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
-          <td><span class="summary-sig"><a name="_test_getchildren"></a><span class="summary-sig-name">_test_getchildren</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td><span class="summary-sig"><a name="test_getchildren"></a><span class="summary-sig-name">test_getchildren</span>(<span class="summary-sig-arg">self</span>)</span></td>
           <td align="right" valign="top">
-            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase._test_getchildren">source&nbsp;code</a></span>
+            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_getchildren">source&nbsp;code</a></span>
             
           </td>
         </tr>
     </td><td class="summary">
       <table width="100%" cellpadding="0" cellspacing="0" border="0">
         <tr>
+          <td><span class="summary-sig"><a name="test_iter_remove_tail"></a><span class="summary-sig-name">test_iter_remove_tail</span>(<span class="summary-sig-arg">self</span>)</span></td>
+          <td align="right" valign="top">
+            <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_iter_remove_tail">source&nbsp;code</a></span>
+            
+          </td>
+        </tr>
+      </table>
+      
+    </td>
+  </tr>
+<tr>
+    <td width="15%" align="right" valign="top" class="summary">
+      <span class="summary-type">&nbsp;</span>
+    </td><td class="summary">
+      <table width="100%" cellpadding="0" cellspacing="0" border="0">
+        <tr>
           <td><span class="summary-sig"><a name="test_getiterator"></a><span class="summary-sig-name">test_getiterator</span>(<span class="summary-sig-arg">self</span>)</span></td>
           <td align="right" valign="top">
             <span class="codelink"><a href="lxml.tests.test_elementtree-pysrc.html#_ETreeTestCaseBase.test_getiterator">source&nbsp;code</a></span>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8da9ee9..e400d78 100644 (file)
@@ -495,7 +495,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb302b6..de049ed 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 85ec6ff..556e2cc 100644 (file)
@@ -333,7 +333,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9630c14..8bdddeb 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c06f1ae..ac81388 100644 (file)
@@ -292,7 +292,7 @@ test_elementtree</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c1b52e6..b058906 100644 (file)
@@ -12626,7 +12626,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dada72d..7273936 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d94b065..ac9dcfa 100644 (file)
@@ -399,7 +399,7 @@ reset the logging setup ...</td>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 08e9e08..3ffb8f2 100644 (file)
@@ -4613,7 +4613,7 @@ Tests only for etree, not ElementTree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2005110..95a487d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index eaf6287..8fe5582 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c7ca363..b455b65 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9817010..5d28636 100644 (file)
@@ -439,7 +439,7 @@ unittest.case.TestCase --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1b152c1..0d0197d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd2b80a..7f79a7f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3c3fc4b..b28d737 100644 (file)
@@ -276,7 +276,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9eaa005..5b03990 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5c7c70b..a6bb824 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1b38489..64e130a 100644 (file)
@@ -2013,7 +2013,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3fa6f7..7406fee 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8e70a8e..86a9b28 100644 (file)
@@ -224,7 +224,7 @@ Web IO test cases (wsgiref)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7dcfe7a..aa66e96 100644 (file)
@@ -463,7 +463,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4539675..66a91a7 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d5c9b56..64999e6 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a318a6a..7a93e32 100644 (file)
@@ -1359,7 +1359,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f4a541f..40a7ef2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f1b862..0438502 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 26092e8..c0780c6 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 79d60ff..07268db 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 00e52bf..8cea710 100644 (file)
@@ -242,7 +242,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1235e6f..734eb7e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0f5f61c..0df7f22 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2bc000b..0cb06aa 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bd044d0..1b009fe 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 34d1f84..b259c4a 100644 (file)
@@ -1153,7 +1153,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3ab1f37..25a8c6d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index cf3c82e..2933f86 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e864b3..7b10fb1 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5e29425..4cd7a51 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 83d1418..609bcc1 100644 (file)
@@ -1657,7 +1657,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 5d23245..dacd43f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index af39867..23fd504 100644 (file)
@@ -225,7 +225,7 @@ namespace registry mechanism
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ee83d86..aa6d3b4 100644 (file)
@@ -614,7 +614,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a9f01a4..387ad55 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 65bc1e0..982c07e 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 60c4875..302c6e3 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f0a19a9..948076b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 28a5fa4..e1b1c39 100644 (file)
@@ -542,7 +542,7 @@ Tests specific to the lxml.objectify API
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8f646d0..ad980ef 100644 (file)
@@ -5957,7 +5957,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a3d03b4..6bcbbad 100644 (file)
@@ -3634,7 +3634,7 @@ Test cases for lxml.objectify
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 655d69f..a3e4d2b 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ce99a93..51cd1b7 100644 (file)
@@ -903,7 +903,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2ee8e49..175c451 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1e7db66..3cf4285 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1a5d054..e3ee770 100644 (file)
@@ -718,7 +718,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c3c54f5..68d6aac 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2ba848c..368a9ef 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3921c68..a708472 100644 (file)
@@ -240,7 +240,7 @@ Test cases related to SAX I/O
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bdf9e9e..e5870c0 100644 (file)
@@ -986,7 +986,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 4b24f7c..2739d37 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1ab0631..af0cfa1 100644 (file)
@@ -390,7 +390,7 @@ Testing that namespaces generate the right SAX events
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 375f7f1..d7381ce 100644 (file)
@@ -814,7 +814,7 @@ properties.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index a6f8bb7..e7e5eae 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index db2c824..2dd9d3f 100644 (file)
@@ -354,7 +354,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d753dd4..b4a88e9 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 202d788..2fa4955 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0cc81af..8aabfb5 100644 (file)
@@ -1397,7 +1397,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8fbe6a4..bd4fe09 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 98a265a..c856c24 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 0x7f9bb419c290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 0x7f9bb419c290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index eaac3b3..5be501a 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 0x7f9bb419c290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 0x7f9bb419c290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6974d3a..a6a3de1 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 0x7f9bb419c290&gt;</span>)</span></td>
+        <span class="summary-sig-arg">_fromstring</span>=<span class="summary-sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 0x7f9bb419c290&gt;</span>)</span>
+        <span class="sig-arg">_fromstring</span>=<span class="sig-default">&lt;cyfunction fromstring at 0x7f6ccf051290&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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0b2c871..0220cfb 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3484483..bde5152 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b1ced5f..652023b 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b6b5fc8..0f3603f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 96e8bda..0426032 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c2a4861..9aa2256 100644 (file)
@@ -595,7 +595,7 @@ Threading tests
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8af8c2c..a0f00d2 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 1d60264..6bcb8bc 100644 (file)
@@ -691,7 +691,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7904fc3..be0d01d 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bbb584e..8ccf8bf 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 768d2f0..097e7df 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 6351260..9032543 100644 (file)
@@ -1416,7 +1416,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index e5a1dd7..306062f 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index dcfd4b1..af7cdc7 100644 (file)
@@ -285,7 +285,7 @@ opaque context object.</p>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 596d277..12efe0e 100644 (file)
@@ -711,7 +711,7 @@ it wasn't bogus.
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 36a27b7..ba49dcc 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index ee43d41..c41147d 100644 (file)
@@ -2000,7 +2000,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 7b1cdef..0865f43 100644 (file)
@@ -357,7 +357,7 @@ Tests for the ETXPath class
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 117a704..a75997d 100644 (file)
@@ -405,7 +405,7 @@ Tests for the XPath class
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 73454cc..5973d63 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 19a710a..23e86e4 100644 (file)
@@ -1029,7 +1029,7 @@ XPath tests etree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8ea1597..9566492 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 90a62ad..cd0147b 100644 (file)
@@ -4500,7 +4500,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9a5b3dc..9df06d7 100644 (file)
@@ -501,7 +501,7 @@ EXSLT tests
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 2aeae38..debd0ba 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 80e3e23..c2ef26a 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 11536e6..a5fe3bf 100644 (file)
@@ -1297,7 +1297,7 @@ XSLT tests etree
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index c5e9fca..f38b234 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 9229011..1f3c517 100644 (file)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 789bd31..d494204 100644 (file)
@@ -113,7 +113,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 92750dc..eb867fe 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3739ec7..4ec3fee 100644 (file)
@@ -160,7 +160,7 @@ namespace registry mechanism</em>    </li>
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b186ca9..2187e6f 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 Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index db638f7..aea3df2 100644 (file)
@@ -791,7 +791,7 @@ hash(x)
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 278a2ff..77deb7f 100644 (file)
@@ -3183,7 +3183,7 @@ expandto(location.href);
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index f398b59..960be4a 100644 (file)
@@ -730,7 +730,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index afe1d1a..129cda6 100644 (file)
@@ -424,7 +424,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index b9439f8..849ef99 100644 (file)
@@ -193,7 +193,7 @@ exceptions.BaseException --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 8852501..460ce56 100644 (file)
@@ -325,7 +325,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 0476145..3a82526 100644 (file)
@@ -310,7 +310,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index bb9e7ae..033e96b 100644 (file)
@@ -476,7 +476,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index d939e61..61689c9 100644 (file)
@@ -264,7 +264,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 615d7f9..7afb48f 100644 (file)
@@ -242,7 +242,7 @@ object --+
   <tr>
     <td align="left" class="footer">
     Generated by Epydoc 3.0.1
-    on Fri Feb  8 19:32:40 2019
+    on Thu Feb 28 20:36:14 2019
     </td>
     <td align="right" class="footer">
       <a target="mainFrame" href="http://epydoc.sourceforge.net"
index 3f8899f..7af37ba 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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
@@ -317,7 +317,7 @@ installed using <tt class="docutils literal">dpkg <span class="pre">-i</span></t
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index b0baa89..4349504 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
similarity index 99%
rename from doc/html/changes-4.3.1.html
rename to doc/html/changes-4.3.2.html
index d63f427..6127a82 100644 (file)
 <h1 class="title">lxml changelog</h1>
 
 <div class="section" id="id1">
+<h1>4.3.2 (2019-02-29)</h1>
+<div class="section" id="bugs-fixed">
+<h2>Bugs fixed</h2>
+<ul class="simple">
+<li>Crash in 4.3.1 when appending a child subtree with certain text nodes.</li>
+</ul>
+</div>
+<div class="section" id="other-changes">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.29.6.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id2">
 <h1>4.3.1 (2019-02-08)</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/1814522">LP#1814522</a>: Crash when appending a child subtree that contains unsubstituted
 entity references.</li>
 </ul>
 </div>
-<div class="section" id="id2">
+<div class="section" id="id4">
+<h2>Other changes</h2>
+<ul class="simple">
+<li>Built with Cython 0.29.5.</li>
+</ul>
+</div>
+</div>
+<div class="section" id="id5">
 <h1>4.3.0 (2019-01-04)</h1>
 <div class="section" id="features-added">
 <h2>Features added</h2>
@@ -31,7 +55,7 @@ is used.  Patch by Lennart Regebro.</li>
 and the corresponding schema to the 2016 version (with optional &quot;properties&quot;).</li>
 </ul>
 </div>
-<div class="section" id="other-changes">
+<div class="section" id="id6">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/270">GH#270</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/271">GH#271</a>: Support for Python 2.6 and 3.3 was removed.
@@ -42,9 +66,9 @@ which were released in 2014 and 2012 respectively.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id3">
+<div class="section" id="id7">
 <h1>4.2.6 (2019-01-02)</h1>
-<div class="section" id="bugs-fixed">
+<div class="section" id="id8">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1799755">LP#1799755</a>: Fix a DeprecationWarning in Py3.7+.</li>
@@ -52,9 +76,9 @@ which were released in 2014 and 2012 respectively.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id4">
+<div class="section" id="id9">
 <h1>4.2.5 (2018-09-09)</h1>
-<div class="section" id="id5">
+<div class="section" id="id10">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Javascript URLs that used URL escaping were not removed by the HTML cleaner.
@@ -62,16 +86,16 @@ Security problem found by Omar Eissa.  (CVE-2018-19787)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id6">
+<div class="section" id="id11">
 <h1>4.2.4 (2018-08-03)</h1>
-<div class="section" id="id7">
+<div class="section" id="id12">
 <h2>Features added</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/259">GH#259</a>: Allow using <tt class="docutils literal"><span class="pre">pkg-config</span></tt> for build configuration.
 Patch by Patrick Griffis.</li>
 </ul>
 </div>
-<div class="section" id="id8">
+<div class="section" id="id13">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1773749">LP#1773749</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/268">GH#268</a>: Crash when moving an element to another document with
@@ -80,18 +104,18 @@ Patch by Alexander Weggerle.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id9">
+<div class="section" id="id14">
 <h1>4.2.3 (2018-06-27)</h1>
-<div class="section" id="id10">
+<div class="section" id="id15">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Reverted <a class="reference external" href="https://github.com/lxml/lxml/issues/265">GH#265</a>: lxml links against zlib as a shared library again.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id11">
+<div class="section" id="id16">
 <h1>4.2.2 (2018-06-22)</h1>
-<div class="section" id="id12">
+<div class="section" id="id17">
 <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
@@ -102,9 +126,9 @@ Patch by Nehal J Wani.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id14">
+<div class="section" id="id19">
 <h1>4.2.1 (2018-03-21)</h1>
-<div class="section" id="id15">
+<div class="section" id="id20">
 <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
@@ -114,9 +138,9 @@ element if a tag selector is used.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id16">
+<div class="section" id="id21">
 <h1>4.2.0 (2018-03-13)</h1>
-<div class="section" id="id17">
+<div class="section" id="id22">
 <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
@@ -129,7 +153,7 @@ first one).  If no options are present (not standard-compliant)
 Patch by stranac.</li>
 </ul>
 </div>
-<div class="section" id="id18">
+<div class="section" id="id23">
 <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>
@@ -137,19 +161,19 @@ Patch by stranac.</li>
 validation.</li>
 </ul>
 </div>
-<div class="section" id="id19">
+<div class="section" id="id24">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id20">
+<div class="section" id="id25">
 <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="id21">
+<div class="section" id="id26">
 <h1>4.1.0 (2017-10-13)</h1>
-<div class="section" id="id22">
+<div class="section" id="id27">
 <h2>Features added</h2>
 <ul class="simple">
 <li>ElementPath supports text predicates for current node, like &quot;[.='text']&quot;.</li>
@@ -161,7 +185,7 @@ This should have a beneficial impact on the overall performance by providing
 a tighter compiler integration between lxml and libxml2/libxslt.</li>
 </ul>
 </div>
-<div class="section" id="id23">
+<div class="section" id="id28">
 <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
@@ -169,9 +193,9 @@ a tighter compiler integration between lxml and libxml2/libxslt.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id24">
+<div class="section" id="id29">
 <h1>4.0.0 (2017-09-17)</h1>
-<div class="section" id="id25">
+<div class="section" id="id30">
 <h2>Features added</h2>
 <ul class="simple">
 <li>The ElementPath implementation is now compiled using Cython,
@@ -187,7 +211,7 @@ allow relative resource lookups.</li>
 output data into a file according to the <tt class="docutils literal">&lt;xsl:output&gt;</tt> configuration.</li>
 </ul>
 </div>
-<div class="section" id="id26">
+<div class="section" id="id31">
 <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.
@@ -220,7 +244,7 @@ to output end tags even after writing failed with an exception.</p>
 </li>
 </ul>
 </div>
-<div class="section" id="id27">
+<div class="section" id="id32">
 <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
@@ -231,9 +255,9 @@ be worth validating that third-party code does not notice this change.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id28">
+<div class="section" id="id33">
 <h1>3.8.0 (2017-06-03)</h1>
-<div class="section" id="id29">
+<div class="section" id="id34">
 <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
@@ -249,7 +273,7 @@ responsible for the error. Patch by Bob Kline.</li>
 a default namespace when passing a None prefix.</li>
 </ul>
 </div>
-<div class="section" id="id30">
+<div class="section" id="id35">
 <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.
@@ -263,7 +287,7 @@ multi-threaded XSLT processing.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1673355">LP#1673355</a>, <a class="reference external" href="https://github.com/lxml/lxml/issues/233">GH#233</a>: <tt class="docutils literal">fromstring()</tt> html5parser failed to parse byte strings.</li>
 </ul>
 </div>
-<div class="section" id="id32">
+<div class="section" id="id37">
 <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>
@@ -271,9 +295,9 @@ produces a deprecation warning and will eventually be removed.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id33">
+<div class="section" id="id38">
 <h1>3.7.4 (2017-??-??)</h1>
-<div class="section" id="id34">
+<div class="section" id="id39">
 <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
@@ -282,9 +306,9 @@ multi-threaded XSLT processing.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id38">
+<div class="section" id="id43">
 <h1>3.7.3 (2017-02-18)</h1>
-<div class="section" id="id39">
+<div class="section" id="id44">
 <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>
@@ -293,13 +317,13 @@ Patch by Jakub Wilk.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id40">
+<div class="section" id="id45">
 <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="id42">
+<div class="section" id="id47">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Work around installation problems in recent Python 2.7 versions
@@ -311,16 +335,16 @@ script/style tags.  Patch by Burak Arslan.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id44">
+<div class="section" id="id49">
 <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="id45">
+<div class="section" id="id50">
 <h1>3.7.0 (2016-12-10)</h1>
-<div class="section" id="id46">
+<div class="section" id="id51">
 <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>
@@ -338,14 +362,14 @@ serialises like <tt class="docutils literal">&lt;div <span class="pre">attrname&
 marked as <tt class="docutils literal">disabled</tt> in HTML.  Patch by Kristian Klemon.</li>
 </ul>
 </div>
-<div class="section" id="id47">
+<div class="section" id="id52">
 <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="id48">
+<div class="section" id="id53">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Log entries no longer allow anything but plain string objects as message text
@@ -354,27 +378,27 @@ and file name.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id49">
+<div class="section" id="id54">
 <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="id50">
+<div class="section" id="id55">
 <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="id51">
+<div class="section" id="id56">
 <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="id53">
+<div class="section" id="id58">
 <h1>3.6.1 (2016-07-24)</h1>
-<div class="section" id="id54">
+<div class="section" id="id59">
 <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>
@@ -382,7 +406,7 @@ attributes instead of all styles.  Patch by Christian Pedersen.</li>
 <li><a class="reference external" href="https://github.com/lxml/lxml/issues/196">GH#196</a>: Windows build support for Python 3.5.  Contribution by Maximilian Hils.</li>
 </ul>
 </div>
-<div class="section" id="id55">
+<div class="section" id="id60">
 <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).
@@ -395,9 +419,9 @@ Patch by Holger Joukl.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id57">
+<div class="section" id="id62">
 <h1>3.6.0 (2016-03-17)</h1>
-<div class="section" id="id58">
+<div class="section" id="id63">
 <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.
@@ -406,7 +430,7 @@ Patch by Armin Rigo.</li>
 is installed.  Patch by Dirkjan Ochtman.</li>
 </ul>
 </div>
-<div class="section" id="id59">
+<div class="section" id="id64">
 <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
@@ -418,9 +442,9 @@ Patch by Petr Demin.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id60">
+<div class="section" id="id65">
 <h1>3.5.0 (2015-11-13)</h1>
-<div class="section" id="id61">
+<div class="section" id="id66">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Unicode string results failed XPath queries in PyPy.</li>
@@ -432,7 +456,7 @@ and continued parsing instead.</li>
 </div>
 <div class="section" id="b1-2015-09-18">
 <h1>3.5.0b1 (2015-09-18)</h1>
-<div class="section" id="id62">
+<div class="section" id="id67">
 <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>
@@ -464,7 +488,7 @@ Patch by Olli Pottonen.</li>
 of version 3 if available.</li>
 </ul>
 </div>
-<div class="section" id="id63">
+<div class="section" id="id68">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory errors that occur during tree adaptations (e.g. moving subtrees
@@ -491,9 +515,9 @@ with ElementPath to avoid hiding bugs in user code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id64">
+<div class="section" id="id69">
 <h1>3.4.4 (2015-04-25)</h1>
-<div class="section" id="id65">
+<div class="section" id="id70">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>An ElementTree compatibility test added in lxml 3.4.3 that failed in
@@ -501,9 +525,9 @@ Python 3.4+ was removed again.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id66">
+<div class="section" id="id71">
 <h1>3.4.3 (2015-04-15)</h1>
-<div class="section" id="id67">
+<div class="section" id="id72">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Expression cache in ElementPath was ignored.  Fix by Changaco.</li>
@@ -516,9 +540,9 @@ double quotes.  Patch by Olli Pottonen.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id68">
+<div class="section" id="id73">
 <h1>3.4.2 (2015-02-07)</h1>
-<div class="section" id="id69">
+<div class="section" id="id74">
 <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
@@ -530,25 +554,25 @@ with pseudo-attributes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id70">
+<div class="section" id="id75">
 <h1>3.4.1 (2014-11-20)</h1>
-<div class="section" id="id71">
+<div class="section" id="id76">
 <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="id72">
+<div class="section" id="id77">
 <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="id73">
+<div class="section" id="id78">
 <h1>3.4.0 (2014-09-10)</h1>
-<div class="section" id="id74">
+<div class="section" id="id79">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">xmlfile(buffered=False)</tt> disables output buffering and flushes the
@@ -573,10 +597,10 @@ if it had opened it internally.</li>
 <li>Allow &quot;bytearray&quot; type for ASCII text input.</li>
 </ul>
 </div>
-<div class="section" id="id75">
+<div class="section" id="id80">
 <h2>Bugs fixed</h2>
 </div>
-<div class="section" id="id76">
+<div class="section" id="id81">
 <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.
@@ -590,9 +614,9 @@ use lxml 3.3.x with older versions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id77">
+<div class="section" id="id82">
 <h1>3.3.6 (2014-08-28)</h1>
-<div class="section" id="id78">
+<div class="section" id="id83">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Prevent tree cycle creation when adding Elements as siblings.</li>
@@ -602,9 +626,9 @@ extension functions.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id79">
+<div class="section" id="id84">
 <h1>3.3.5 (2014-04-18)</h1>
-<div class="section" id="id80">
+<div class="section" id="id85">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning could fail to strip javascript links that mix control
@@ -612,34 +636,34 @@ characters into the link scheme.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id81">
+<div class="section" id="id86">
 <h1>3.3.4 (2014-04-03)</h1>
-<div class="section" id="id82">
+<div class="section" id="id87">
 <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="id83">
+<div class="section" id="id88">
 <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="id84">
+<div class="section" id="id89">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id85">
+<div class="section" id="id90">
 <h1>3.3.3 (2014-03-04)</h1>
-<div class="section" id="id86">
+<div class="section" id="id91">
 <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="id87">
+<div class="section" id="id92">
 <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
@@ -647,9 +671,9 @@ subclassed from Python code.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id88">
+<div class="section" id="id93">
 <h1>3.3.2 (2014-02-26)</h1>
-<div class="section" id="id89">
+<div class="section" id="id94">
 <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
@@ -670,12 +694,12 @@ provide the same interface as that returned for Elements.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id90">
+<div class="section" id="id95">
 <h1>3.3.1 (2014-02-12)</h1>
-<div class="section" id="id91">
+<div class="section" id="id96">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id92">
+<div class="section" id="id97">
 <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
@@ -687,36 +711,36 @@ header file.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1274118">LP#1274118</a>: iterparse() failed to parse BOM prefixed files.</li>
 </ul>
 </div>
-<div class="section" id="id93">
+<div class="section" id="id98">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id94">
+<div class="section" id="id99">
 <h1>3.3.0 (2014-01-26)</h1>
-<div class="section" id="id95">
+<div class="section" id="id100">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id96">
+<div class="section" id="id101">
 <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="id97">
+<div class="section" id="id102">
 <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="id98">
+<div class="section" id="id103">
 <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="id99">
+<div class="section" id="id104">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Several error handling problems were fixed throughout the code base that
@@ -729,7 +753,7 @@ propagate exceptions (its return type is <tt class="docutils literal">void</tt>)
 parsing the string character by character.</li>
 </ul>
 </div>
-<div class="section" id="id100">
+<div class="section" id="id105">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Document cleanup code was simplified using the new GC features in
@@ -739,10 +763,10 @@ Cython 0.20.</li>
 </div>
 <div class="section" id="beta4-2014-01-12">
 <h1>3.3.0beta4 (2014-01-12)</h1>
-<div class="section" id="id101">
+<div class="section" id="id106">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id102">
+<div class="section" id="id107">
 <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
@@ -755,7 +779,7 @@ and keyword arguments could modify the mapping passed as <tt class="docutils lit
 the docinfo property) lost their attribute declarations.</li>
 </ul>
 </div>
-<div class="section" id="id103">
+<div class="section" id="id108">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Built with Cython 0.20pre (gitrev 012ae82eb) to prepare support for
@@ -765,39 +789,39 @@ Python 3.4.</li>
 </div>
 <div class="section" id="beta3-2014-01-02">
 <h1>3.3.0beta3 (2014-01-02)</h1>
-<div class="section" id="id104">
+<div class="section" id="id109">
 <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="id105">
+<div class="section" id="id110">
 <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="id106">
+<div class="section" id="id111">
 <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="id107">
+<div class="section" id="id112">
 <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="id108">
+<div class="section" id="id113">
 <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="id109">
+<div class="section" id="id114">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The safety check in the read-only tree implementation (e.g. used by
@@ -810,7 +834,7 @@ behaviour.</li>
 </div>
 <div class="section" id="beta1-2013-12-12">
 <h1>3.3.0beta1 (2013-12-12)</h1>
-<div class="section" id="id110">
+<div class="section" id="id115">
 <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
@@ -822,7 +846,7 @@ incremental parsing, as implemented for ElementTree in Python 3.4.</li>
 (<tt class="docutils literal">html=True</tt>).</li>
 </ul>
 </div>
-<div class="section" id="id111">
+<div class="section" id="id116">
 <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.
@@ -844,7 +868,7 @@ The textarea used to be cleared before the new content was set,
 which removed the name attribute.</li>
 </ul>
 </div>
-<div class="section" id="id112">
+<div class="section" id="id117">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some basic API classes use freelists internally for faster
@@ -855,12 +879,12 @@ classes internally instead of being a parser itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id113">
+<div class="section" id="id118">
 <h1>3.2.5 (2014-01-02)</h1>
-<div class="section" id="id114">
+<div class="section" id="id119">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id115">
+<div class="section" id="id120">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in xmlfile() when closing open elements out of order in an error case.</li>
@@ -869,16 +893,16 @@ classes internally instead of being a parser itself.</li>
 comment or PI).</li>
 </ul>
 </div>
-<div class="section" id="id117">
+<div class="section" id="id122">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id118">
+<div class="section" id="id123">
 <h1>3.2.4 (2013-11-07)</h1>
-<div class="section" id="id119">
+<div class="section" id="id124">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id120">
+<div class="section" id="id125">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak when creating an XPath evaluator in a thread.</li>
@@ -889,32 +913,32 @@ to one of its own descendants.</li>
 <li>Compressed plain-text serialisation to file-like objects was broken.</li>
 </ul>
 </div>
-<div class="section" id="id123">
+<div class="section" id="id128">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id124">
+<div class="section" id="id129">
 <h1>3.2.3 (2013-07-28)</h1>
-<div class="section" id="id125">
+<div class="section" id="id130">
 <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="id126">
+<div class="section" id="id131">
 <h1>3.2.2 (2013-07-28)</h1>
-<div class="section" id="id127">
+<div class="section" id="id132">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id128">
+<div class="section" id="id133">
 <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="id129">
+<div class="section" id="id134">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Return values of user provided element class lookup methods are now
@@ -923,9 +947,9 @@ API class mismatches.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id130">
+<div class="section" id="id135">
 <h1>3.2.1 (2013-05-11)</h1>
-<div class="section" id="id131">
+<div class="section" id="id136">
 <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
@@ -934,7 +958,7 @@ and <tt class="docutils literal">remove_blank_text</tt> that discard either all
 strings from the result list.</li>
 </ul>
 </div>
-<div class="section" id="id132">
+<div class="section" id="id137">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When moving Elements to another tree, the namespace cleanup mechanism
@@ -947,16 +971,16 @@ to a crash.</li>
 crashed.</li>
 </ul>
 </div>
-<div class="section" id="id133">
+<div class="section" id="id138">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id134">
+<div class="section" id="id139">
 <h1>3.2.0 (2013-04-28)</h1>
-<div class="section" id="id135">
+<div class="section" id="id140">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id136">
+<div class="section" id="id141">
 <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
@@ -975,16 +999,16 @@ of overwriting the current value.</li>
 allowed by the user provided whitelist.  Patch by Christine Koppelt.</li>
 </ul>
 </div>
-<div class="section" id="id137">
+<div class="section" id="id142">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id138">
+<div class="section" id="id143">
 <h1>3.1.2 (2013-04-12)</h1>
-<div class="section" id="id139">
+<div class="section" id="id144">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id140">
+<div class="section" id="id145">
 <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
@@ -996,16 +1020,16 @@ the result tree to a Unicode string.</li>
 by properly exported API function <tt class="docutils literal">xmlBufUse()</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id141">
+<div class="section" id="id146">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id142">
+<div class="section" id="id147">
 <h1>3.1.1 (2013-03-29)</h1>
-<div class="section" id="id143">
+<div class="section" id="id148">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id144">
+<div class="section" id="id149">
 <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
@@ -1013,7 +1037,7 @@ an AttributeError in Py3.</li>
 <li>Illegal memory access during cleanup in incremental xmlfile writer.</li>
 </ul>
 </div>
-<div class="section" id="id145">
+<div class="section" id="id150">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">lxml.etree._BaseParser</tt> was removed
@@ -1021,16 +1045,16 @@ from the module dict.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id146">
+<div class="section" id="id151">
 <h1>3.1.0 (2013-02-10)</h1>
-<div class="section" id="id147">
+<div class="section" id="id152">
 <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="id148">
+<div class="section" id="id153">
 <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
@@ -1043,13 +1067,13 @@ in for the current run.</li>
 without threading support.  Patch by Ulrich Seidl.</li>
 </ul>
 </div>
-<div class="section" id="id149">
+<div class="section" id="id154">
 <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="id150">
+<div class="section" id="id155">
 <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
@@ -1060,7 +1084,7 @@ instead of byte strings for plain ASCII content.</li>
 tags with non-identifier names without having to resort to getattr().</li>
 </ul>
 </div>
-<div class="section" id="id151">
+<div class="section" id="id156">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When starting from a non-namespaced element in lxml.objectify, searching
@@ -1072,7 +1096,7 @@ the search to non-namespaced children.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1080792">LP#1080792</a>: Static build of libxml2 2.9.0 failed due to missing file.</li>
 </ul>
 </div>
-<div class="section" id="id152">
+<div class="section" id="id157">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The externally useless class <tt class="docutils literal">_ObjectifyElementMakerCaller</tt> was
@@ -1082,27 +1106,27 @@ many children.  Patch by Anders Hammarquist.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id153">
+<div class="section" id="id158">
 <h1>3.0.2 (2012-12-14)</h1>
-<div class="section" id="id154">
+<div class="section" id="id159">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id155">
+<div class="section" id="id160">
 <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="id156">
+<div class="section" id="id161">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id157">
+<div class="section" id="id162">
 <h1>3.0.1 (2012-10-14)</h1>
-<div class="section" id="id158">
+<div class="section" id="id163">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id159">
+<div class="section" id="id164">
 <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
@@ -1111,16 +1135,16 @@ in PyPy without proper cleanup.</li>
 <li><a class="reference external" href="https://bugs.launchpad.net/lxml/+bug/1065139">LP#1065139</a>: static MacOS-X build failed in Py3.</li>
 </ul>
 </div>
-<div class="section" id="id160">
+<div class="section" id="id165">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id161">
+<div class="section" id="id166">
 <h1>3.0 (2012-10-08)</h1>
-<div class="section" id="id162">
+<div class="section" id="id167">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id163">
+<div class="section" id="id168">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>End-of-file handling was incorrect in iterparse() when reading from
@@ -1128,7 +1152,7 @@ a low-level C file stream and failed in libxml2 2.9.0 due to its
 improved consistency checks.</li>
 </ul>
 </div>
-<div class="section" id="id164">
+<div class="section" id="id169">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The build no longer uses Cython by default unless the generated C files
@@ -1141,21 +1165,21 @@ run special setup.py commands that do not actually run a build), pass
 </div>
 <div class="section" id="beta1-2012-09-26">
 <h1>3.0beta1 (2012-09-26)</h1>
-<div class="section" id="id165">
+<div class="section" id="id170">
 <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="id166">
+<div class="section" id="id171">
 <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="id167">
+<div class="section" id="id172">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code was adapted to work with the upcoming libxml2 2.9.0 release.</li>
@@ -1164,7 +1188,7 @@ to simplify debugging of memory leaks etc.</li>
 </div>
 <div class="section" id="alpha2-2012-08-23">
 <h1>3.0alpha2 (2012-08-23)</h1>
-<div class="section" id="id168">
+<div class="section" id="id173">
 <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
@@ -1183,20 +1207,20 @@ and <tt class="docutils literal">.itertext()</tt> methods;the <tt class="docutil
 to top-level during exclusive serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id169">
+<div class="section" id="id174">
 <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="id170">
+<div class="section" id="id175">
 <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="id171">
+<div class="section" id="id176">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Initial support for building in PyPy (through cpyext).</li>
@@ -1212,7 +1236,7 @@ argument supports passing a set of tags.  Tree nodes will be
 returned by the iterators if they match any of the tags.</li>
 </ul>
 </div>
-<div class="section" id="id172">
+<div class="section" id="id177">
 <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
@@ -1239,7 +1263,7 @@ constructor would fail with an exception, stating that the text
 cannot be modified.</li>
 </ul>
 </div>
-<div class="section" id="id173">
+<div class="section" id="id178">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The code base was overhauled to properly use 'const' where the API
@@ -1288,44 +1312,44 @@ _XSLTResultTree, _XSLTProcessingInstruction</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id174">
+<div class="section" id="id179">
 <h1>2.3.6 (2012-09-28)</h1>
-<div class="section" id="id175">
+<div class="section" id="id180">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id176">
+<div class="section" id="id181">
 <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="id177">
+<div class="section" id="id182">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id178">
+<div class="section" id="id183">
 <h1>2.3.5 (2012-07-31)</h1>
-<div class="section" id="id179">
+<div class="section" id="id184">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id180">
+<div class="section" id="id185">
 <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="id181">
+<div class="section" id="id186">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id182">
+<div class="section" id="id187">
 <h1>2.3.4 (2012-03-26)</h1>
-<div class="section" id="id183">
+<div class="section" id="id188">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id184">
+<div class="section" id="id189">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when building an nsmap (Element property) with empty
@@ -1335,20 +1359,20 @@ during threaded XSLT processing.</li>
 <li>XSLT stylesheet compilation could ignore compilation errors.</li>
 </ul>
 </div>
-<div class="section" id="id185">
+<div class="section" id="id190">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id186">
+<div class="section" id="id191">
 <h1>2.3.3 (2012-01-04)</h1>
-<div class="section" id="id187">
+<div class="section" id="id192">
 <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="id188">
+<div class="section" id="id193">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed a crash when using <tt class="docutils literal">iterparse()</tt> for HTML parsing and
@@ -1362,13 +1386,13 @@ Patch by Simon Sapin.</li>
 'img' tags without 'src' attribute.</li>
 </ul>
 </div>
-<div class="section" id="id189">
+<div class="section" id="id194">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id190">
+<div class="section" id="id195">
 <h1>2.3.2 (2011-11-11)</h1>
-<div class="section" id="id191">
+<div class="section" id="id196">
 <h2>Features added</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.objectify.deannotate()</tt> has a new boolean option
@@ -1380,7 +1404,7 @@ copy of <tt class="docutils literal">etree.SubElement</tt> to avoid an otherwise
 of <tt class="docutils literal">lxml.etree</tt> on the user side.</li>
 </ul>
 </div>
-<div class="section" id="id192">
+<div class="section" id="id197">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Fixed the &quot;descendant&quot; bug in cssselect a second time (after a first
@@ -1395,13 +1419,13 @@ a descendant combinator. For example, &quot;div&gt; .foo&quot; was parsed the sa
 &quot;div&gt;* .foo&quot; instead of &quot;div&gt;.foo&quot;. Patch by Simon Sapin.</li>
 </ul>
 </div>
-<div class="section" id="id193">
+<div class="section" id="id198">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id194">
+<div class="section" id="id199">
 <h1>2.3.1 (2011-09-25)</h1>
-<div class="section" id="id195">
+<div class="section" id="id200">
 <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
@@ -1419,7 +1443,7 @@ closed after reading or not.  By default, the file will be closed,
 as the user is not expected to keep a reference to it.</li>
 </ul>
 </div>
-<div class="section" id="id196">
+<div class="section" id="id201">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>HTML cleaning didn't remove 'data:' links.</li>
@@ -1447,7 +1471,7 @@ collected form values.</li>
 field properly selects them and unselects them.</li>
 </ul>
 </div>
-<div class="section" id="id197">
+<div class="section" id="id202">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Static builds can specify the download directory with the
@@ -1455,16 +1479,16 @@ field properly selects them and unselects them.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id198">
+<div class="section" id="id203">
 <h1>2.3 (2011-02-06)</h1>
-<div class="section" id="id199">
+<div class="section" id="id204">
 <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="id200">
+<div class="section" id="id205">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>When finished reading from a file-like object, the parser
@@ -1477,7 +1501,7 @@ in libxml2 2.7.8).</li>
 <li><tt class="docutils literal">marque</tt> tag in HTML cleanup code is correctly named <tt class="docutils literal">marquee</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id201">
+<div class="section" id="id206">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Some public functions in the Cython-level C-API have more explicit
@@ -1487,10 +1511,10 @@ return types.</li>
 </div>
 <div class="section" id="beta1-2010-09-06">
 <h1>2.3beta1 (2010-09-06)</h1>
-<div class="section" id="id202">
+<div class="section" id="id207">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id203">
+<div class="section" id="id208">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1502,23 +1526,23 @@ documents that had attributes on replaced XInclude nodes.</li>
 use of os.tempnam.  It now takes an optional 'encoding' parameter.</li>
 </ul>
 </div>
-<div class="section" id="id204">
+<div class="section" id="id209">
 <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="id205">
+<div class="section" id="id210">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id206">
+<div class="section" id="id211">
 <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="id207">
+<div class="section" id="id212">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">repr()</tt> of Element objects shows the hex ID with leading 0x
@@ -1528,7 +1552,7 @@ stylesheet created in a different thread.</li>
 </div>
 <div class="section" id="alpha1-2010-06-19">
 <h1>2.3alpha1 (2010-06-19)</h1>
-<div class="section" id="id208">
+<div class="section" id="id213">
 <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>
@@ -1579,7 +1603,7 @@ the document on submit.</li>
 (compatible with ElementTree).</li>
 </ul>
 </div>
-<div class="section" id="id209">
+<div class="section" id="id214">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>API is hardened against invalid proxy instances to prevent crashes
@@ -1613,7 +1637,7 @@ parsing failed.  Now it is guaranteed that <tt class="docutils literal">.close()
 called after parsing, regardless of the outcome.</li>
 </ul>
 </div>
-<div class="section" id="id210">
+<div class="section" id="id215">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.1.2 and later.</li>
@@ -1626,9 +1650,9 @@ collector to clean up.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id211">
+<div class="section" id="id216">
 <h1>2.2.8 (2010-09-02)</h1>
-<div class="section" id="id212">
+<div class="section" id="id217">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in newer libxml2 versions when moving elements between
@@ -1637,9 +1661,9 @@ documents that had attributes on replaced XInclude nodes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id213">
+<div class="section" id="id218">
 <h1>2.2.7 (2010-07-24)</h1>
-<div class="section" id="id214">
+<div class="section" id="id219">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XSLT when generating text-only result documents with a
@@ -1647,25 +1671,25 @@ stylesheet created in a different thread.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id215">
+<div class="section" id="id220">
 <h1>2.2.6 (2010-03-02)</h1>
-<div class="section" id="id216">
+<div class="section" id="id221">
 <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="id217">
+<div class="section" id="id222">
 <h1>2.2.5 (2010-02-28)</h1>
-<div class="section" id="id218">
+<div class="section" id="id223">
 <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="id219">
+<div class="section" id="id224">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash in XPath evaluation when reading smart strings from a document
@@ -1684,21 +1708,21 @@ an element.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id220">
+<div class="section" id="id225">
 <h1>2.2.4 (2009-11-11)</h1>
-<div class="section" id="id221">
+<div class="section" id="id226">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Static build of libxml2/libxslt was broken.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id222">
+<div class="section" id="id227">
 <h1>2.2.3 (2009-10-30)</h1>
-<div class="section" id="id223">
+<div class="section" id="id228">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id224">
+<div class="section" id="id229">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The <tt class="docutils literal">resolve_entities</tt> option did not work in the incremental feed
@@ -1731,13 +1755,13 @@ namespaces when annotation is disabled.</li>
 <li>Diverting the error logging to Python's logging system was broken.</li>
 </ul>
 </div>
-<div class="section" id="id225">
+<div class="section" id="id230">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id226">
+<div class="section" id="id231">
 <h1>2.2.2 (2009-06-21)</h1>
-<div class="section" id="id227">
+<div class="section" id="id232">
 <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>,
@@ -1745,7 +1769,7 @@ namespaces when annotation is disabled.</li>
 from a subtree.</li>
 </ul>
 </div>
-<div class="section" id="id228">
+<div class="section" id="id233">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Namespace cleanup on subtree insertions could result in missing
@@ -1759,13 +1783,13 @@ BoolElement ({True, False, T, F, t, f} not any more), restoring lxml &lt;= 2.0
 behaviour.</li>
 </ul>
 </div>
-<div class="section" id="id229">
+<div class="section" id="id234">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id230">
+<div class="section" id="id235">
 <h1>2.2.1 (2009-06-02)</h1>
-<div class="section" id="id231">
+<div class="section" id="id236">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Injecting default attributes into a document during XML Schema
@@ -1774,7 +1798,7 @@ validation (also at parse time).</li>
 restrictions imposed by libxml2 2.7.</li>
 </ul>
 </div>
-<div class="section" id="id232">
+<div class="section" id="id237">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The script for statically building libxml2 and libxslt didn't work
@@ -1783,13 +1807,13 @@ in Py3.</li>
 for parsing (which could lead to a crash before release 2.6.24).</li>
 </ul>
 </div>
-<div class="section" id="id233">
+<div class="section" id="id238">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id234">
+<div class="section" id="id239">
 <h1>2.2 (2009-03-21)</h1>
-<div class="section" id="id235">
+<div class="section" id="id240">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for <tt class="docutils literal">standalone</tt> flag in XML declaration through
@@ -1797,7 +1821,7 @@ for parsing (which could lead to a crash before release 2.6.24).</li>
 on serialisation.</li>
 </ul>
 </div>
-<div class="section" id="id236">
+<div class="section" id="id241">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing an XML Schema with external imports from a
@@ -1807,7 +1831,7 @@ filename.</li>
 </div>
 <div class="section" id="beta4-2009-02-27">
 <h1>2.2beta4 (2009-02-27)</h1>
-<div class="section" id="id237">
+<div class="section" id="id242">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support strings and instantiable Element classes as child arguments
@@ -1816,7 +1840,7 @@ to the constructor of custom Element classes.</li>
 objects.</li>
 </ul>
 </div>
-<div class="section" id="id238">
+<div class="section" id="id243">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Deep-copying an ElementTree copied neither its sibling PIs and
@@ -1831,7 +1855,7 @@ to a problem in Cython, not lxml itself.</li>
 was evaluated incorrectly.</li>
 </ul>
 </div>
-<div class="section" id="id239">
+<div class="section" id="id244">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Official support for Python 3.0.1.</li>
@@ -1842,14 +1866,14 @@ for Elements without text content.</li>
 </div>
 <div class="section" id="beta3-2009-02-17">
 <h1>2.2beta3 (2009-02-17)</h1>
-<div class="section" id="id240">
+<div class="section" id="id245">
 <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="id241">
+<div class="section" id="id246">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in XPath evaluators.</li>
@@ -1861,7 +1885,7 @@ string failed.</li>
 <li>Minor fixes for Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id242">
+<div class="section" id="id247">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The global error log (which is copied into the exception log) is now
@@ -1872,7 +1896,7 @@ local to a thread, which fixes some race conditions.</li>
 </div>
 <div class="section" id="beta2-2009-01-25">
 <h1>2.2beta2 (2009-01-25)</h1>
-<div class="section" id="id243">
+<div class="section" id="id248">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1884,9 +1908,9 @@ problem in Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id244">
+<div class="section" id="id249">
 <h1>2.1.5 (2009-01-06)</h1>
-<div class="section" id="id245">
+<div class="section" id="id250">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Potential memory leak on exception handling.  This was due to a
@@ -1897,39 +1921,39 @@ problem in Cython, not lxml itself.</li>
 </div>
 <div class="section" id="beta1-2008-12-12">
 <h1>2.2beta1 (2008-12-12)</h1>
-<div class="section" id="id246">
+<div class="section" id="id251">
 <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="id247">
+<div class="section" id="id252">
 <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="id248">
+<div class="section" id="id253">
 <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="id249">
+<div class="section" id="id254">
 <h1>2.1.4 (2008-12-12)</h1>
-<div class="section" id="id250">
+<div class="section" id="id255">
 <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="id251">
+<div class="section" id="id256">
 <h1>2.0.11 (2008-12-12)</h1>
-<div class="section" id="id252">
+<div class="section" id="id257">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when using an XPath evaluator in multiple threads.</li>
@@ -1938,7 +1962,7 @@ just HTML strings.</li>
 </div>
 <div class="section" id="alpha1-2008-11-23">
 <h1>2.2alpha1 (2008-11-23)</h1>
-<div class="section" id="id253">
+<div class="section" id="id258">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for XSLT result tree fragments in XPath/XSLT extension
@@ -1948,7 +1972,7 @@ functions.</li>
 <li>Instantiating a custom Element classes creates a new Element.</li>
 </ul>
 </div>
-<div class="section" id="id254">
+<div class="section" id="id259">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>XSLT didn't inherit the parse options of the input document.</li>
@@ -1959,16 +1983,16 @@ that end in a parenthesis, will be linked in their entirety (typical
 with Wikipedia links).</li>
 </ul>
 </div>
-<div class="section" id="id255">
+<div class="section" id="id260">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id256">
+<div class="section" id="id261">
 <h1>2.1.3 (2008-11-17)</h1>
-<div class="section" id="id257">
+<div class="section" id="id262">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id258">
+<div class="section" id="id263">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Ref-count leaks when lxml enters a try-except statement while an
@@ -1987,13 +2011,13 @@ ElementTrees.</li>
 <li>Overriding the parser encoding didn't work for many encodings.</li>
 </ul>
 </div>
-<div class="section" id="id259">
+<div class="section" id="id264">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id260">
+<div class="section" id="id265">
 <h1>2.0.10 (2008-11-17)</h1>
-<div class="section" id="id261">
+<div class="section" id="id266">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Ref-count leaks when lxml enters a try-except statement while an
@@ -2002,9 +2026,9 @@ Cython, not lxml itself.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id262">
+<div class="section" id="id267">
 <h1>2.1.2 (2008-09-05)</h1>
-<div class="section" id="id263">
+<div class="section" id="id268">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.etree now tries to find the absolute path name of files when
@@ -2013,7 +2037,7 @@ resolving relative URLs, as lixbml2 can prepend them with the path
 of the source document.</li>
 </ul>
 </div>
-<div class="section" id="id264">
+<div class="section" id="id269">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -2021,13 +2045,13 @@ of the source document.</li>
 exception instead of calling <tt class="docutils literal">.close()</tt> on the target.</li>
 </ul>
 </div>
-<div class="section" id="id265">
+<div class="section" id="id270">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id266">
+<div class="section" id="id271">
 <h1>2.0.9 (2008-09-05)</h1>
-<div class="section" id="id267">
+<div class="section" id="id272">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory problem when passing documents between threads.</li>
@@ -2036,12 +2060,12 @@ exception instead of calling <tt class="docutils literal">.close()</tt> on the t
 </ul>
 </div>
 </div>
-<div class="section" id="id268">
+<div class="section" id="id273">
 <h1>2.1.1 (2008-07-24)</h1>
-<div class="section" id="id269">
+<div class="section" id="id274">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id270">
+<div class="section" id="id275">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -2050,20 +2074,20 @@ another.</li>
 Python 3.</li>
 </ul>
 </div>
-<div class="section" id="id271">
+<div class="section" id="id276">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id272">
+<div class="section" id="id277">
 <h1>2.0.8 (2008-07-24)</h1>
-<div class="section" id="id273">
+<div class="section" id="id278">
 <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="id274">
+<div class="section" id="id279">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when parsing XSLT stylesheets in a thread and using them in
@@ -2072,13 +2096,13 @@ another.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id275">
+<div class="section" id="id280">
 <h2>Other changes</h2>
 </div>
 </div>
-<div class="section" id="id276">
+<div class="section" id="id281">
 <h1>2.1 (2008-07-09)</h1>
-<div class="section" id="id277">
+<div class="section" id="id282">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Smart strings can be switched off in XPath (<tt class="docutils literal">smart_strings</tt>
@@ -2087,7 +2111,7 @@ keyword option).</li>
 with whitespace in URL attributes.</li>
 </ul>
 </div>
-<div class="section" id="id278">
+<div class="section" id="id283">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Custom resolvers were not used for XMLSchema includes/imports and
@@ -2096,7 +2120,7 @@ XInclude processing.</li>
 with parameters.</li>
 </ul>
 </div>
-<div class="section" id="id279">
+<div class="section" id="id284">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">objectify.enableRecursiveStr()</tt> was removed, use
@@ -2105,15 +2129,15 @@ with parameters.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id280">
+<div class="section" id="id285">
 <h1>2.0.7 (2008-06-20)</h1>
-<div class="section" id="id281">
+<div class="section" id="id286">
 <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="id282">
+<div class="section" id="id287">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Descending dot-separated classes in CSS selectors were not resolved
@@ -2124,7 +2148,7 @@ correctly.</li>
 the super class is not called from Python subclasses.</li>
 </ul>
 </div>
-<div class="section" id="id283">
+<div class="section" id="id288">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -2134,7 +2158,7 @@ serialisation.</li>
 </div>
 <div class="section" id="beta3-2008-06-19">
 <h1>2.1beta3 (2008-06-19)</h1>
-<div class="section" id="id284">
+<div class="section" id="id289">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Major overhaul of <tt class="docutils literal">tools/xpathgrep.py</tt> script.</li>
@@ -2160,7 +2184,7 @@ lxml.html (experimental).</li>
 (experimental).</li>
 </ul>
 </div>
-<div class="section" id="id285">
+<div class="section" id="id290">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">ElementTree.parse()</tt> didn't handle target parser result.</li>
@@ -2175,7 +2199,7 @@ platform.</li>
 <li>Rare crash when serialising to a file object with certain encodings.</li>
 </ul>
 </div>
-<div class="section" id="id286">
+<div class="section" id="id291">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Non-ASCII characters in attribute values are no longer escaped on
@@ -2188,12 +2212,12 @@ lxml.objectify.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id287">
+<div class="section" id="id292">
 <h1>2.0.6 (2008-05-31)</h1>
-<div class="section" id="id288">
+<div class="section" id="id293">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id289">
+<div class="section" id="id294">
 <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>
@@ -2204,7 +2228,7 @@ document is deleted while the subtree is still in use.</li>
 <li>Rare crash when serialising to a file object with certain encodings.</li>
 </ul>
 </div>
-<div class="section" id="id290">
+<div class="section" id="id295">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml should now build without problems on MacOS-X.</li>
@@ -2213,7 +2237,7 @@ document is deleted while the subtree is still in use.</li>
 </div>
 <div class="section" id="beta2-2008-05-02">
 <h1>2.1beta2 (2008-05-02)</h1>
-<div class="section" id="id291">
+<div class="section" id="id296">
 <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>
@@ -2222,7 +2246,7 @@ attribute <tt class="docutils literal">xhtml_parser</tt> that provide XML parser
 pre-configured for the lxml.html package.</li>
 </ul>
 </div>
-<div class="section" id="id292">
+<div class="section" id="id297">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Moving a subtree from a document created in one thread into a
@@ -2233,7 +2257,7 @@ redundantly defined namespace URIs.  This prevented the definition
 of more than one prefix for a namespace on the same Element.</li>
 </ul>
 </div>
-<div class="section" id="id293">
+<div class="section" id="id298">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>If the default namespace is redundantly defined with a prefix on the
@@ -2245,12 +2269,12 @@ namespace (i.e. they would end up in the wrong namespace).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id294">
+<div class="section" id="id299">
 <h1>2.0.5 (2008-05-01)</h1>
-<div class="section" id="id295">
+<div class="section" id="id300">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id296">
+<div class="section" id="id301">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -2259,13 +2283,13 @@ let some XSLT errors pass silently.</li>
 <li>Memory leak in Schematron with libxml2 &gt;= 2.6.31.</li>
 </ul>
 </div>
-<div class="section" id="id297">
+<div class="section" id="id302">
 <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="id298">
+<div class="section" id="id303">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging in Schematron (requires libxml2 2.6.32 or later).</li>
@@ -2275,7 +2299,7 @@ sections by their text content.</li>
 <li><tt class="docutils literal">CDATA()</tt> factory to wrap string content as CDATA section.</li>
 </ul>
 </div>
-<div class="section" id="id299">
+<div class="section" id="id304">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Resolving to a filename in custom resolvers didn't work.</li>
@@ -2285,7 +2309,7 @@ let some XSLT errors pass silently.</li>
 <li>lxml.etree accepted non well-formed namespace prefix names.</li>
 </ul>
 </div>
-<div class="section" id="id300">
+<div class="section" id="id305">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Major cleanup in internal <tt class="docutils literal">moveNodeToDocument()</tt> function, which
@@ -2299,12 +2323,12 @@ context.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id301">
+<div class="section" id="id306">
 <h1>2.0.4 (2008-04-13)</h1>
-<div class="section" id="id302">
+<div class="section" id="id307">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id303">
+<div class="section" id="id308">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Hanging thread in conjunction with GTK threading.</li>
@@ -2313,13 +2337,13 @@ context.</li>
 <li><tt class="docutils literal"><span class="pre">ElementTree.find*()</span></tt> didn't accept QName objects.</li>
 </ul>
 </div>
-<div class="section" id="id304">
+<div class="section" id="id309">
 <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="id305">
+<div class="section" id="id310">
 <h2>Features added</h2>
 <ul class="simple">
 <li>New event types 'comment' and 'pi' in <tt class="docutils literal">iterparse()</tt>.</li>
@@ -2333,14 +2357,14 @@ an Element.</li>
 <li><tt class="docutils literal">docinfo.URL</tt> property is writable.</li>
 </ul>
 </div>
-<div class="section" id="id306">
+<div class="section" id="id311">
 <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="id307">
+<div class="section" id="id312">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Minor API speed-ups.</li>
@@ -2384,9 +2408,9 @@ instead.</p>
 </ul>
 </div>
 </div>
-<div class="section" id="id308">
+<div class="section" id="id313">
 <h1>2.0.3 (2008-03-26)</h1>
-<div class="section" id="id309">
+<div class="section" id="id314">
 <h2>Features added</h2>
 <ul class="simple">
 <li>soupparser.parse() allows passing keyword arguments on to
@@ -2394,7 +2418,7 @@ BeautifulSoup.</li>
 <li><tt class="docutils literal">fromstring()</tt> method in <tt class="docutils literal">lxml.html.soupparser</tt>.</li>
 </ul>
 </div>
-<div class="section" id="id310">
+<div class="section" id="id315">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.diff</tt> didn't treat empty tags properly (e.g.,
@@ -2407,7 +2431,7 @@ which made them turn up in text content.</li>
 correctly serialise the value to a string.</li>
 </ul>
 </div>
-<div class="section" id="id311">
+<div class="section" id="id316">
 <h2>Other changes</h2>
 <ul class="simple">
 <li><tt class="docutils literal">lxml.html.ElementSoup</tt> was replaced by a new module
@@ -2423,16 +2447,16 @@ option.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id312">
+<div class="section" id="id317">
 <h1>2.0.2 (2008-02-22)</h1>
-<div class="section" id="id313">
+<div class="section" id="id318">
 <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="id314">
+<div class="section" id="id319">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The prefix for objectify's pytype namespace was missing from the set
@@ -2442,7 +2466,7 @@ of default prefixes.</li>
 <li>Slice deletion bug fixed in objectify.</li>
 </ul>
 </div>
-<div class="section" id="id315">
+<div class="section" id="id320">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Enabled doctests for some Python modules (especially <tt class="docutils literal">lxml.html</tt>).</li>
@@ -2453,9 +2477,9 @@ of default prefixes.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id316">
+<div class="section" id="id321">
 <h1>2.0.1 (2008-02-13)</h1>
-<div class="section" id="id317">
+<div class="section" id="id322">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Child iteration in <tt class="docutils literal">lxml.pyclasslookup</tt>.</li>
@@ -2463,7 +2487,7 @@ of default prefixes.</li>
 methods to make them visible in API docs and <tt class="docutils literal">help()</tt></li>
 </ul>
 </div>
-<div class="section" id="id318">
+<div class="section" id="id323">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>The module <tt class="docutils literal">lxml.html.builder</tt> was duplicated as
@@ -2475,7 +2499,7 @@ ignored.</li>
 elements at the wrong position.</li>
 </ul>
 </div>
-<div class="section" id="id319">
+<div class="section" id="id324">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>The generated API documentation was cleaned up and disburdened from
@@ -2490,9 +2514,9 @@ compiler options.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id320">
+<div class="section" id="id325">
 <h1>2.0 (2008-02-01)</h1>
-<div class="section" id="id321">
+<div class="section" id="id326">
 <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
@@ -2597,7 +2621,7 @@ instead of a string</li>
 <li>EXSLT RegExp support in standard XPath (not only XSLT)</li>
 </ul>
 </div>
-<div class="section" id="id322">
+<div class="section" id="id327">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Missing import in <tt class="docutils literal">lxml.html.clean</tt>.</li>
@@ -2634,7 +2658,7 @@ evaluators now reports the first error that occurred instead of the last</li>
 <li>Thread safety in XPath evaluators</li>
 </ul>
 </div>
-<div class="section" id="id323">
+<div class="section" id="id328">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>Exceptions carry only the part of the error log that is related to
@@ -2692,16 +2716,16 @@ generic <tt class="docutils literal">findOrBuildNodeNsPrefix</tt></li>
 </ul>
 </div>
 </div>
-<div class="section" id="id324">
+<div class="section" id="id329">
 <h1>1.3.6 (2007-10-29)</h1>
-<div class="section" id="id325">
+<div class="section" id="id330">
 <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="id326">
+<div class="section" id="id331">
 <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>
@@ -2711,12 +2735,12 @@ problems that would otherwise appear in later tests.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id327">
+<div class="section" id="id332">
 <h1>1.3.5 (2007-10-22)</h1>
-<div class="section" id="id328">
+<div class="section" id="id333">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id329">
+<div class="section" id="id334">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.etree could crash when adding more than 10000 namespaces to a
@@ -2726,9 +2750,9 @@ than the root node of a tree</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id330">
+<div class="section" id="id335">
 <h1>1.3.4 (2007-08-30)</h1>
-<div class="section" id="id331">
+<div class="section" id="id336">
 <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
@@ -2742,13 +2766,13 @@ part of the document, as well as comments and PIs that are siblings of the
 root node.</li>
 </ul>
 </div>
-<div class="section" id="id332">
+<div class="section" id="id337">
 <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="id333">
+<div class="section" id="id338">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>lxml now raises a TagNameWarning about tag names containing ':' instead of
@@ -2764,9 +2788,9 @@ ElementTree serialisation includes them).</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id334">
+<div class="section" id="id339">
 <h1>1.3.3 (2007-07-26)</h1>
-<div class="section" id="id335">
+<div class="section" id="id340">
 <h2>Features added</h2>
 <ul class="simple">
 <li>ElementTree compatible parser <tt class="docutils literal">ETCompatXMLParser</tt> strips processing
@@ -2777,7 +2801,7 @@ the parser you pass.</li>
 <li>Support <tt class="docutils literal">base_url</tt> keyword argument in <tt class="docutils literal">HTML()</tt> and <tt class="docutils literal">XML()</tt></li>
 </ul>
 </div>
-<div class="section" id="id336">
+<div class="section" id="id341">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parsing from Python Unicode strings failed on some platforms</li>
@@ -2787,21 +2811,21 @@ the parser you pass.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id337">
+<div class="section" id="id342">
 <h1>1.3.2 (2007-07-03)</h1>
-<div class="section" id="id338">
+<div class="section" id="id343">
 <h2>Features added</h2>
 </div>
-<div class="section" id="id339">
+<div class="section" id="id344">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>&quot;deallocating None&quot; crash bug</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id340">
+<div class="section" id="id345">
 <h1>1.3.1 (2007-07-02)</h1>
-<div class="section" id="id341">
+<div class="section" id="id346">
 <h2>Features added</h2>
 <ul class="simple">
 <li>objectify.DataElement now supports setting values from existing data
@@ -2809,7 +2833,7 @@ elements (not just plain Python types) and reuses defined namespaces etc.</li>
 <li>E-factory support for lxml.objectify (<tt class="docutils literal">objectify.E</tt>)</li>
 </ul>
 </div>
-<div class="section" id="id342">
+<div class="section" id="id347">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Better way to prevent crashes in Element proxy cleanup code</li>
@@ -2819,9 +2843,9 @@ elements (not just plain Python types) and reuses defined namespaces etc.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id343">
+<div class="section" id="id348">
 <h1>1.3 (2007-06-24)</h1>
-<div class="section" id="id344">
+<div class="section" id="id349">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Module <tt class="docutils literal">lxml.pyclasslookup</tt> module implements an Element class lookup
@@ -2850,7 +2874,7 @@ keys/values/items for a libxml2 node</li>
 a better handling of namespaces when moving elements between documents.</li>
 </ul>
 </div>
-<div class="section" id="id345">
+<div class="section" id="id350">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Removing Elements from a tree could make them lose their namespace
@@ -2874,16 +2898,16 @@ PIs are copied.</li>
 documents</li>
 </ul>
 </div>
-<div class="section" id="id346">
+<div class="section" id="id351">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>major restructuring in the documentation</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id347">
+<div class="section" id="id352">
 <h1>1.2.1 (2007-02-27)</h1>
-<div class="section" id="id348">
+<div class="section" id="id353">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Build fixes for MS compiler</li>
@@ -2894,9 +2918,9 @@ to access</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id349">
+<div class="section" id="id354">
 <h1>1.2 (2007-02-20)</h1>
-<div class="section" id="id350">
+<div class="section" id="id355">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Rich comparison of QName objects</li>
@@ -2912,7 +2936,7 @@ possible to pass an --rpath directly to distutils; previously this was being
 shadowed.</li>
 </ul>
 </div>
-<div class="section" id="id351">
+<div class="section" id="id356">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Element instantiation now uses locks to prevent race conditions with threads</li>
@@ -2922,7 +2946,7 @@ support in these environments</li>
 <li>Element.find*() did not accept QName objects as path</li>
 </ul>
 </div>
-<div class="section" id="id352">
+<div class="section" id="id357">
 <h2>Other changes</h2>
 <ul class="simple">
 <li>code cleanup: redundant _NodeBase super class merged into _Element class
@@ -2931,9 +2955,9 @@ the compatibility of the public C-API</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id353">
+<div class="section" id="id358">
 <h1>1.1.2 (2006-10-30)</h1>
-<div class="section" id="id354">
+<div class="section" id="id359">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Data elements in objectify support repr(), which is now used by dump()</li>
@@ -2944,7 +2968,7 @@ tail, attributes and namespaces</li>
 <li>Simplified support for handling XSLT processing instructions</li>
 </ul>
 </div>
-<div class="section" id="id355">
+<div class="section" id="id360">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Parser resources were not freed before the next parser run</li>
@@ -2960,9 +2984,9 @@ closed/freed</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id356">
+<div class="section" id="id361">
 <h1>1.1.1 (2006-09-21)</h1>
-<div class="section" id="id357">
+<div class="section" id="id362">
 <h2>Features added</h2>
 <ul class="simple">
 <li>XSLT profiling support (<tt class="docutils literal">profile_run</tt> keyword)</li>
@@ -2970,7 +2994,7 @@ closed/freed</li>
 <li>Support custom elements for tree nodes in lxml.objectify</li>
 </ul>
 </div>
-<div class="section" id="id358">
+<div class="section" id="id363">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>lxml.objectify failed to support long data values (e.g., &quot;123L&quot;)</li>
@@ -2985,9 +3009,9 @@ elements)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id359">
+<div class="section" id="id364">
 <h1>1.1 (2006-09-13)</h1>
-<div class="section" id="id360">
+<div class="section" id="id365">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Comments and processing instructions return '&lt;!-- comment --&gt;' and
@@ -3040,7 +3064,7 @@ generated elements</li>
 element</li>
 </ul>
 </div>
-<div class="section" id="id361">
+<div class="section" id="id366">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>filenames with local 8-bit encoding were not supported</li>
@@ -3064,30 +3088,30 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id362">
+<div class="section" id="id367">
 <h1>1.0.4 (2006-09-09)</h1>
-<div class="section" id="id363">
+<div class="section" id="id368">
 <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="id364">
+<div class="section" id="id369">
 <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="id365">
+<div class="section" id="id370">
 <h1>1.0.3 (2006-08-08)</h1>
-<div class="section" id="id366">
+<div class="section" id="id371">
 <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="id367">
+<div class="section" id="id372">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Crash when mixing elements from XSLT results into other trees</li>
@@ -3097,16 +3121,16 @@ change from 1.0.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id368">
+<div class="section" id="id373">
 <h1>1.0.2 (2006-06-27)</h1>
-<div class="section" id="id369">
+<div class="section" id="id374">
 <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="id370">
+<div class="section" id="id375">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Rare exceptions in Python list functions were not handled</li>
@@ -3118,15 +3142,15 @@ cases</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id371">
+<div class="section" id="id376">
 <h1>1.0.1 (2006-06-09)</h1>
-<div class="section" id="id372">
+<div class="section" id="id377">
 <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="id373">
+<div class="section" id="id378">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Document deallocation could crash in certain garbage collection scenarios</li>
@@ -3142,9 +3166,9 @@ stylesheet and crash on repeated calls</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id374">
+<div class="section" id="id379">
 <h1>1.0 (2006-06-01)</h1>
-<div class="section" id="id375">
+<div class="section" id="id380">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Element.getiterator() and the findall() methods support finding arbitrary
@@ -3191,7 +3215,7 @@ enabled by default, can be switched off with 'regexp=False' keyword argument</li
 implementation of libxml2 (as opposed to ET compatible XMLID)</li>
 </ul>
 </div>
-<div class="section" id="id376">
+<div class="section" id="id381">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory leak in Element.__setitem__</li>
@@ -3233,9 +3257,9 @@ ElementTree root node as reference point</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id377">
+<div class="section" id="id382">
 <h1>0.9.2 (2006-05-10)</h1>
-<div class="section" id="id378">
+<div class="section" id="id383">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Speedup for Element.makeelement(): the new element reuses the original
@@ -3245,7 +3269,7 @@ libxml2 document instead of creating a new empty one</li>
 <li>RelaxNG and XMLSchema accept any Element, not only ElementTrees</li>
 </ul>
 </div>
-<div class="section" id="id379">
+<div class="section" id="id384">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>str(xslt_result) was broken for XSLT output other than UTF-8</li>
@@ -3255,9 +3279,9 @@ libxml2 document instead of creating a new empty one</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id380">
+<div class="section" id="id385">
 <h1>0.9.1 (2006-03-30)</h1>
-<div class="section" id="id381">
+<div class="section" id="id386">
 <h2>Features added</h2>
 <ul class="simple">
 <li>lxml.sax.ElementTreeContentHandler checks closing elements and raises
@@ -3269,7 +3293,7 @@ argument)</li>
 <li>Minor API performance improvements</li>
 </ul>
 </div>
-<div class="section" id="id382">
+<div class="section" id="id387">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Memory deallocation bug when using XSLT output method &quot;html&quot;</li>
@@ -3278,9 +3302,9 @@ argument)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id383">
+<div class="section" id="id388">
 <h1>0.9 (2006-03-20)</h1>
-<div class="section" id="id384">
+<div class="section" id="id389">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Error logging API for libxml2 error messages</li>
@@ -3305,7 +3329,7 @@ parent element.</li>
 doc/sax.txt for more information.</li>
 </ul>
 </div>
-<div class="section" id="id385">
+<div class="section" id="id390">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Segfaults and memory leaks in various API functions of Element</li>
@@ -3317,9 +3341,9 @@ cannot support this due to libxslt deficiencies)</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id386">
+<div class="section" id="id391">
 <h1>0.8 (2005-11-03)</h1>
-<div class="section" id="id387">
+<div class="section" id="id392">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Support for copy.deepcopy() on elements. copy.copy() works also, but
@@ -3333,7 +3357,7 @@ supported and parsing of gzipped XML files works.</li>
 SubElement.</li>
 </ul>
 </div>
-<div class="section" id="id388">
+<div class="section" id="id393">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Use xslt-config instead of xml2-config to find out libxml2
@@ -3356,9 +3380,9 @@ fixed.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id389">
+<div class="section" id="id394">
 <h1>0.7 (2005-06-15)</h1>
-<div class="section" id="id390">
+<div class="section" id="id395">
 <h2>Features added</h2>
 <ul class="simple">
 <li>parameters (XPath expressions) can be passed to XSLT using keyword
@@ -3388,7 +3412,7 @@ prefix declarations on these elements and these prefixes will show up
 in XML serialization.</li>
 </ul>
 </div>
-<div class="section" id="id391">
+<div class="section" id="id396">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Killed yet another memory management related bug: trees created
@@ -3409,9 +3433,9 @@ test both serializing to StringIO as well as serializing to a real file.</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id392">
+<div class="section" id="id397">
 <h1>0.6 (2005-05-14)</h1>
-<div class="section" id="id393">
+<div class="section" id="id398">
 <h2>Features added</h2>
 <ul class="simple">
 <li>Changed setup.py so that library_dirs is also guessed. This should
@@ -3420,7 +3444,7 @@ wrong library (shipping with the OS) could be picked up.</li>
 <li>Tweaked setup.py so that it picks up the version from version.txt.</li>
 </ul>
 </div>
-<div class="section" id="id394">
+<div class="section" id="id399">
 <h2>Bugs fixed</h2>
 <ul class="simple">
 <li>Do the right thing when handling namespaced attributes.</li>
@@ -3429,7 +3453,7 @@ had very nasty side-effects before this fix, sorry!</li>
 </ul>
 </div>
 </div>
-<div class="section" id="id395">
+<div class="section" id="id400">
 <h1>0.5.1 (2005-04-09)</h1>
 <ul class="simple">
 <li>Python 2.2 compatibility fixes.</li>
@@ -3437,14 +3461,14 @@ had very nasty side-effects before this fix, sorry!</li>
 input wasn't properly being UTF-8 encoded.</li>
 </ul>
 </div>
-<div class="section" id="id396">
+<div class="section" id="id401">
 <h1>0.5 (2005-04-08)</h1>
 <p>Initial public release.</p>
 </div>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index b67bcc9..c01f071 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 40b647b..7421953 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index bfdd928..e8238cd 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 1c25959..0e8616b 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 736ffae..5d05af7 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 7de203b..84c1543 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index c448e38..67ed302 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 6d7fcba..f644b29 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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>
@@ -72,7 +72,7 @@ Jetbrains supports the lxml project by donating free licenses of their
 </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.3.1.pdf">PDF
+<p>The complete lxml documentation is available for download as <a class="reference external" href="lxmldoc-4.3.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">
@@ -135,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.3.1.tgz">lxml 4.3.1</a>, released 2019-02-08
-(<a class="reference external" href="/changes-4.3.1.html">changes for 4.3.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.3.2.tgz">lxml 4.3.2</a>, released 2019-02-29
+(<a class="reference external" href="/changes-4.3.2.html">changes for 4.3.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>
@@ -144,7 +144,7 @@ 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.3.1.pdf">PDF documentation</a>.</p>
+<a class="reference external" href="lxmldoc-4.3.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
@@ -202,6 +202,7 @@ obstacle to using lxml in your codebase.</p>
 <a class="reference external" href="http://lxml.de/4.1/">4.1</a>
 <a class="reference external" href="http://lxml.de/4.2/">4.2</a></p>
 <ul class="simple">
+<li><a class="reference external" href="/files/lxml-4.3.2.tgz">lxml 4.3.2</a>, released 2019-02-29 (<a class="reference external" href="/changes-4.3.2.html">changes for 4.3.2</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.3.1.tgz">lxml 4.3.1</a>, released 2019-02-08 (<a class="reference external" href="/changes-4.3.1.html">changes for 4.3.1</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.3.0.tgz">lxml 4.3.0</a>, released 2019-01-04 (<a class="reference external" href="/changes-4.3.0.html">changes for 4.3.0</a>)</li>
 <li><a class="reference external" href="/files/lxml-4.2.6.tgz">lxml 4.2.6</a>, released 2019-01-03 (<a class="reference external" href="/changes-4.2.6.html">changes for 4.2.6</a>)</li>
@@ -238,7 +239,7 @@ donation is non-refundable.</p>
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index e769f8d..ccc7b7d 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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>
@@ -208,7 +208,7 @@ read the
 </div>
 <div class="footer">
 <hr class="footer" />
-Generated on: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index fdf0f2d..38db610 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index db3d694..60d2f52 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 85f0498..17fc2ee 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index a9c8a44..9c79143 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 5094e3c..3526930 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index e4dd813..a3ac32e 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 148b37b..6b029ca 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 6c21d89..30c4bf9 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 23fe82c..9d16604 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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 8868a93..6973861 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 2de5ecc..840ddab 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index e911844..345c664 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 3 1-menu"><li class="menu title"><a href="changes-4.3.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="/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#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 3 2-menu"><li class="menu title"><a href="changes-4.3.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: 2019-02-08.
+Generated on: 2019-02-28.
 
 </div>
 </body>
index 90dbab5..c3a8e46 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.3.1`_, released 2019-02-08
-(`changes for 4.3.1`_).  `Older versions <#old-versions>`_
+The latest version is `lxml 4.3.2`_, released 2019-02-29
+(`changes for 4.3.2`_).  `Older versions <#old-versions>`_
 are listed below.
 
 Please take a look at the
@@ -251,7 +251,9 @@ See the websites of lxml
 ..
    and the `latest in-development version <http://lxml.de/dev/>`_.
 
-.. _`PDF documentation`: lxmldoc-4.3.1.pdf
+.. _`PDF documentation`: lxmldoc-4.3.2.pdf
+
+* `lxml 4.3.2`_, released 2019-02-29 (`changes for 4.3.2`_)
 
 * `lxml 4.3.1`_, released 2019-02-08 (`changes for 4.3.1`_)
 
@@ -281,6 +283,7 @@ See the websites of lxml
 
 * `older releases <http://lxml.de/3.7/#old-versions>`_
 
+.. _`lxml 4.3.2`: /files/lxml-4.3.2.tgz
 .. _`lxml 4.3.1`: /files/lxml-4.3.1.tgz
 .. _`lxml 4.3.0`: /files/lxml-4.3.0.tgz
 .. _`lxml 4.2.6`: /files/lxml-4.2.6.tgz
@@ -295,6 +298,7 @@ See the websites of lxml
 .. _`lxml 4.0.0`: /files/lxml-4.0.0.tgz
 .. _`lxml 3.8.0`: /files/lxml-3.8.0.tgz
 
+.. _`changes for 4.3.2`: /changes-4.3.2.html
 .. _`changes for 4.3.1`: /changes-4.3.1.html
 .. _`changes for 4.3.0`: /changes-4.3.0.html
 .. _`changes for 4.2.6`: /changes-4.2.6.html
index d4074f1..0b90e60 100644 (file)
@@ -1,6 +1,6 @@
 Metadata-Version: 2.1
 Name: lxml
-Version: 4.3.1
+Version: 4.3.2
 Summary: Powerful and Pythonic XML processing library combining libxml2/libxslt with the ElementTree API.
 Home-page: http://lxml.de/
 Author: lxml dev team
@@ -38,11 +38,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.3.1 (2019-02-08)
+        4.3.2 (2019-02-29)
         ==================
         
-        * LP#1814522: Crash when appending a child subtree that contains unsubstituted
-          entity references.
+        Bugs fixed
+        ----------
+        
+        * Crash in 4.3.1 when appending a child subtree with certain text nodes.
+        
+        Other changes
+        -------------
+        
+        * Built with Cython 0.29.6.
         
         
         
index 1cbab13..940a9ce 100644 (file)
@@ -56,7 +56,7 @@ doc/html/FAQ.html
 doc/html/api.html
 doc/html/build.html
 doc/html/capi.html
-doc/html/changes-4.3.1.html
+doc/html/changes-4.3.2.html
 doc/html/compatibility.html
 doc/html/credits.html
 doc/html/cssselect.html
index 6140e15..cdd88d5 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -33,8 +33,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -626,7 +626,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -1275,7 +1276,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallMethO(PyObject *func, PyObject
 static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObject *arg);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -13759,22 +13760,26 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallOneArg(PyObject *func, PyObjec
 #endif
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
index bccf5fb..cf932d4 100644 (file)
@@ -1269,7 +1269,7 @@ cdef int _replaceSlice(_Element parent, xmlNode* c_node,
 
 
 cdef int _linkChild(xmlNode* c_parent, xmlNode* c_node) except -1:
-    """Simple version of 'xmlAddChild()' that does not deep-fix the document links.
+    """Adaptation of 'xmlAddChild()' that deep-fix the document links iteratively.
     """
     assert _isElement(c_node)
     c_node.parent = c_parent
@@ -1279,6 +1279,8 @@ cdef int _linkChild(xmlNode* c_parent, xmlNode* c_node) except -1:
         c_node.prev = c_parent.last
         c_parent.last.next = c_node
         c_parent.last = c_node
+
+    _setTreeDoc(c_node, c_parent.doc)
     return 0
 
 
index ad1c715..9cadf07 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -33,8 +33,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -626,7 +626,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -1111,7 +1112,7 @@ static CYTHON_INLINE int __Pyx_IterFinish(void);
 static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -6769,22 +6770,26 @@ static int __Pyx_IternextUnpackEndCheck(PyObject *retval, Py_ssize_t expected) {
 }
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
index 6ea9e69..ca4df70 100644 (file)
@@ -28,64 +28,64 @@ cdef class _DTDElementContentDecl:
     def __repr__(self):
         return "<%s.%s object name=%r type=%r occur=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.type, self.occur, id(self))
 
-    property name:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.name) if self._c_node.name is not NULL else None
-
-    property type:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef int type = self._c_node.type
-           if type == tree.XML_ELEMENT_CONTENT_PCDATA:
-               return "pcdata"
-           elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
-               return "element"
-           elif type == tree.XML_ELEMENT_CONTENT_SEQ:
-               return "seq"
-           elif type == tree.XML_ELEMENT_CONTENT_OR:
-               return "or"
-           else:
-               return None
-
-    property occur:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef int occur = self._c_node.ocur
-           if occur == tree.XML_ELEMENT_CONTENT_ONCE:
-               return "once"
-           elif occur == tree.XML_ELEMENT_CONTENT_OPT:
-               return "opt"
-           elif occur == tree.XML_ELEMENT_CONTENT_MULT:
-               return "mult"
-           elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
-               return "plus"
-           else:
-               return None
-
-    property left:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           c1 = self._c_node.c1
-           if c1:
-               node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
-               node._dtd = self._dtd
-               node._c_node = <tree.xmlElementContent*>c1
-               return node
-           else:
-               return None
-
-    property right:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           c2 = self._c_node.c2
-           if c2:
-               node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
-               node._dtd = self._dtd
-               node._c_node = <tree.xmlElementContent*>c2
-               return node
-           else:
-               return None
+    @property
+    def name(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+
+    @property
+    def type(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef int type = self._c_node.type
+       if type == tree.XML_ELEMENT_CONTENT_PCDATA:
+           return "pcdata"
+       elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+           return "element"
+       elif type == tree.XML_ELEMENT_CONTENT_SEQ:
+           return "seq"
+       elif type == tree.XML_ELEMENT_CONTENT_OR:
+           return "or"
+       else:
+           return None
+
+    @property
+    def occur(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef int occur = self._c_node.ocur
+       if occur == tree.XML_ELEMENT_CONTENT_ONCE:
+           return "once"
+       elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+           return "opt"
+       elif occur == tree.XML_ELEMENT_CONTENT_MULT:
+           return "mult"
+       elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
+           return "plus"
+       else:
+           return None
+
+    @property
+    def left(self):
+       _assertValidDTDNode(self, self._c_node)
+       c1 = self._c_node.c1
+       if c1:
+           node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+           node._dtd = self._dtd
+           node._c_node = <tree.xmlElementContent*>c1
+           return node
+       else:
+           return None
+
+    @property
+    def right(self):
+       _assertValidDTDNode(self, self._c_node)
+       c2 = self._c_node.c2
+       if c2:
+           node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+           node._dtd = self._dtd
+           node._c_node = <tree.xmlElementContent*>c2
+           return node
+       else:
+           return None
 
 
 @cython.final
@@ -98,67 +98,67 @@ cdef class _DTDAttributeDecl:
     def __repr__(self):
         return "<%s.%s object name=%r elemname=%r prefix=%r type=%r default=%r default_value=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.elemname, self.prefix, self.type, self.default, self.default_value, id(self))
 
-    property name:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.name) if self._c_node.name is not NULL else None
-
-    property elemname:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
-
-    property prefix:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
-
-    property type:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef int type = self._c_node.atype
-           if type == tree.XML_ATTRIBUTE_CDATA:
-               return "cdata"
-           elif type == tree.XML_ATTRIBUTE_ID:
-               return "id"
-           elif type == tree.XML_ATTRIBUTE_IDREF:
-               return "idref"
-           elif type == tree.XML_ATTRIBUTE_IDREFS:
-               return "idrefs"
-           elif type == tree.XML_ATTRIBUTE_ENTITY:
-               return "entity"
-           elif type == tree.XML_ATTRIBUTE_ENTITIES:
-               return "entities"
-           elif type == tree.XML_ATTRIBUTE_NMTOKEN:
-               return "nmtoken"
-           elif type == tree.XML_ATTRIBUTE_NMTOKENS:
-               return "nmtokens"
-           elif type == tree.XML_ATTRIBUTE_ENUMERATION:
-               return "enumeration"
-           elif type == tree.XML_ATTRIBUTE_NOTATION:
-               return "notation"
-           else:
-               return None
-
-    property default:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef int default = self._c_node.def_
-           if default == tree.XML_ATTRIBUTE_NONE:
-               return "none"
-           elif default == tree.XML_ATTRIBUTE_REQUIRED:
-               return "required"
-           elif default == tree.XML_ATTRIBUTE_IMPLIED:
-               return "implied"
-           elif default == tree.XML_ATTRIBUTE_FIXED:
-               return "fixed"
-           else:
-               return None
-
-    property default_value:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+    @property
+    def name(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+
+    @property
+    def elemname(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
+
+    @property
+    def prefix(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+
+    @property
+    def type(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef int type = self._c_node.atype
+       if type == tree.XML_ATTRIBUTE_CDATA:
+           return "cdata"
+       elif type == tree.XML_ATTRIBUTE_ID:
+           return "id"
+       elif type == tree.XML_ATTRIBUTE_IDREF:
+           return "idref"
+       elif type == tree.XML_ATTRIBUTE_IDREFS:
+           return "idrefs"
+       elif type == tree.XML_ATTRIBUTE_ENTITY:
+           return "entity"
+       elif type == tree.XML_ATTRIBUTE_ENTITIES:
+           return "entities"
+       elif type == tree.XML_ATTRIBUTE_NMTOKEN:
+           return "nmtoken"
+       elif type == tree.XML_ATTRIBUTE_NMTOKENS:
+           return "nmtokens"
+       elif type == tree.XML_ATTRIBUTE_ENUMERATION:
+           return "enumeration"
+       elif type == tree.XML_ATTRIBUTE_NOTATION:
+           return "notation"
+       else:
+           return None
+
+    @property
+    def default(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef int default = self._c_node.def_
+       if default == tree.XML_ATTRIBUTE_NONE:
+           return "none"
+       elif default == tree.XML_ATTRIBUTE_REQUIRED:
+           return "required"
+       elif default == tree.XML_ATTRIBUTE_IMPLIED:
+           return "implied"
+       elif default == tree.XML_ATTRIBUTE_FIXED:
+           return "fixed"
+       else:
+           return None
+
+    @property
+    def default_value(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
 
     def itervalues(self):
         _assertValidDTDNode(self, self._c_node)
@@ -181,44 +181,44 @@ cdef class _DTDElementDecl:
     def __repr__(self):
         return "<%s.%s object name=%r prefix=%r type=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.prefix, self.type, id(self))
 
-    property name:
-        def __get__(self):
-            _assertValidDTDNode(self, self._c_node)
-            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
-
-    property prefix:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
-
-    property type:
-        def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef int type = self._c_node.etype
-           if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
-               return "undefined"
-           elif type == tree.XML_ELEMENT_TYPE_EMPTY:
-               return "empty"
-           elif type == tree.XML_ELEMENT_TYPE_ANY:
-               return "any"
-           elif type == tree.XML_ELEMENT_TYPE_MIXED:
-               return "mixed"
-           elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
-               return "element"
-           else:
-               return None
-
-    property content:
-       def __get__(self):
-           _assertValidDTDNode(self, self._c_node)
-           cdef tree.xmlElementContent *content = self._c_node.content
-           if content:
-               node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
-               node._dtd = self._dtd
-               node._c_node = content
-               return node
-           else:
-               return None
+    @property
+    def name(self):
+        _assertValidDTDNode(self, self._c_node)
+        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+
+    @property
+    def prefix(self):
+       _assertValidDTDNode(self, self._c_node)
+       return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+
+    @property
+    def type(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef int type = self._c_node.etype
+       if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
+           return "undefined"
+       elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+           return "empty"
+       elif type == tree.XML_ELEMENT_TYPE_ANY:
+           return "any"
+       elif type == tree.XML_ELEMENT_TYPE_MIXED:
+           return "mixed"
+       elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
+           return "element"
+       else:
+           return None
+
+    @property
+    def content(self):
+       _assertValidDTDNode(self, self._c_node)
+       cdef tree.xmlElementContent *content = self._c_node.content
+       if content:
+           node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+           node._dtd = self._dtd
+           node._c_node = content
+           return node
+       else:
+           return None
 
     def iterattributes(self):
         _assertValidDTDNode(self, self._c_node)
@@ -243,20 +243,20 @@ cdef class _DTDEntityDecl:
     def __repr__(self):
         return "<%s.%s object name=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, id(self))
 
-    property name:
-        def __get__(self):
-            _assertValidDTDNode(self, self._c_node)
-            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+    @property
+    def name(self):
+        _assertValidDTDNode(self, self._c_node)
+        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
 
-    property orig:
-        def __get__(self):
-            _assertValidDTDNode(self, self._c_node)
-            return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
+    @property
+    def orig(self):
+        _assertValidDTDNode(self, self._c_node)
+        return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
 
-    property content:
-        def __get__(self):
-            _assertValidDTDNode(self, self._c_node)
-            return funicode(self._c_node.content) if self._c_node.content is not NULL else None
+    @property
+    def content(self):
+        _assertValidDTDNode(self, self._c_node)
+        return funicode(self._c_node.content) if self._c_node.content is not NULL else None
 
 
 ################################################################################
@@ -293,23 +293,23 @@ cdef class DTD(_Validator):
                 self._error_log._buildExceptionMessage(u"error parsing DTD"),
                 self._error_log)
 
-    property name:
-       def __get__(self):
-           if self._c_dtd is NULL:
-               return None
-           return funicodeOrNone(self._c_dtd.name)
-
-    property external_id:
-       def __get__(self):
-           if self._c_dtd is NULL:
-               return None
-           return funicodeOrNone(self._c_dtd.ExternalID)
-
-    property system_url:
-       def __get__(self):
-           if self._c_dtd is NULL:
-               return None
-           return funicodeOrNone(self._c_dtd.SystemID)
+    @property
+    def name(self):
+       if self._c_dtd is NULL:
+           return None
+       return funicodeOrNone(self._c_dtd.name)
+
+    @property
+    def external_id(self):
+       if self._c_dtd is NULL:
+           return None
+       return funicodeOrNone(self._c_dtd.ExternalID)
+
+    @property
+    def system_url(self):
+       if self._c_dtd is NULL:
+           return None
+       return funicodeOrNone(self._c_dtd.SystemID)
 
     def iterelements(self):
         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
index c781f4d..0ab54e8 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -100,8 +100,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -740,7 +740,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -1288,7 +1289,7 @@ struct __pyx_t_4lxml_5etree__nscache {
   size_t last;
 };
 
-/* "src/lxml/proxy.pxi":582
+/* "src/lxml/proxy.pxi":590
  * # adopt an xmlDoc from an external libxml2 document source
  * 
  * cdef _Document _adoptForeignDoc(xmlDoc* c_doc, _BaseParser parser=None, bint is_owned=True):             # <<<<<<<<<<<<<<
@@ -1313,7 +1314,7 @@ struct __pyx_t_4lxml_5etree__ns_node_ref {
   xmlNode *node;
 };
 
-/* "src/lxml/xmlerror.pxi":676
+/* "src/lxml/xmlerror.pxi":680
  * 
  * 
  * cdef void _connectGenericErrorLog(log, int c_domain=-1):             # <<<<<<<<<<<<<<
@@ -1325,7 +1326,7 @@ struct __pyx_opt_args_4lxml_5etree__connectGenericErrorLog {
   int c_domain;
 };
 
-/* "lxml/etree.pyx":2725
+/* "lxml/etree.pyx":2736
  *                 self._storeTags(item, seen)
  * 
  *     cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:             # <<<<<<<<<<<<<<
@@ -1442,7 +1443,7 @@ struct __pyx_obj_4lxml_5etree__LogEntry {
 };
 
 
-/* "src/lxml/xmlerror.pxi":180
+/* "src/lxml/xmlerror.pxi":184
  * 
  * 
  * cdef class _BaseErrorLog:             # <<<<<<<<<<<<<<
@@ -1457,7 +1458,7 @@ struct __pyx_obj_4lxml_5etree__BaseErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":270
+/* "src/lxml/xmlerror.pxi":274
  *         return message
  * 
  * cdef class _ListErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -1471,7 +1472,7 @@ struct __pyx_obj_4lxml_5etree__ListErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":388
+/* "src/lxml/xmlerror.pxi":392
  * @cython.final
  * @cython.internal
  * cdef class _ErrorLogContext:             # <<<<<<<<<<<<<<
@@ -1489,7 +1490,7 @@ struct __pyx_obj_4lxml_5etree__ErrorLogContext {
 };
 
 
-/* "src/lxml/xmlerror.pxi":425
+/* "src/lxml/xmlerror.pxi":429
  * 
  * 
  * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
@@ -1502,7 +1503,7 @@ struct __pyx_obj_4lxml_5etree__ErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":478
+/* "src/lxml/xmlerror.pxi":482
  *         self._entries.append(entry)
  * 
  * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -1514,7 +1515,7 @@ struct __pyx_obj_4lxml_5etree__DomainErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":487
+/* "src/lxml/xmlerror.pxi":491
  *             _ErrorLog.receive(self, entry)
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -1527,7 +1528,7 @@ struct __pyx_obj_4lxml_5etree__RotatingErrorLog {
 };
 
 
-/* "src/lxml/xmlerror.pxi":505
+/* "src/lxml/xmlerror.pxi":509
  *                 del self._entries[:offset]
  * 
  * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -1590,7 +1591,7 @@ struct LxmlElement {
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementType;
 
-/* "lxml/etree.pyx":1623
+/* "lxml/etree.pyx":1634
  * 
  * @cython.internal
  * cdef class __ContentOnlyElement(_Element):             # <<<<<<<<<<<<<<
@@ -1603,43 +1604,43 @@ struct __pyx_obj_4lxml_5etree___ContentOnlyElement {
 };
 
 
-/* "lxml/etree.pyx":1690
+/* "lxml/etree.pyx":1701
  *         return []
  * 
  * cdef class _Comment(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 struct __pyx_obj_4lxml_5etree__Comment {
   struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
 };
 
 
-/* "lxml/etree.pyx":1698
+/* "lxml/etree.pyx":1709
  *         return "<!--%s-->" % strrepr(self.text)
  * 
  * cdef class _ProcessingInstruction(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 struct __pyx_obj_4lxml_5etree__ProcessingInstruction {
   struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
 };
 
 
-/* "lxml/etree.pyx":1749
+/* "lxml/etree.pyx":1760
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  * 
  * cdef class _Entity(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 struct __pyx_obj_4lxml_5etree__Entity {
   struct __pyx_obj_4lxml_5etree___ContentOnlyElement __pyx_base;
 };
 
 
-/* "lxml/etree.pyx":1778
+/* "lxml/etree.pyx":1789
  * 
  * 
  * cdef class QName:             # <<<<<<<<<<<<<<
@@ -1654,7 +1655,7 @@ struct __pyx_obj_4lxml_5etree_QName {
 };
 
 
-/* "lxml/etree.pyx":1847
+/* "lxml/etree.pyx":1858
  * 
  * 
  * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
@@ -1670,7 +1671,7 @@ struct LxmlElementTree {
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTreeType;
 
-/* "lxml/etree.pyx":2395
+/* "lxml/etree.pyx":2406
  * @cython.final
  * @cython.freelist(16)
  * cdef class _Attrib:             # <<<<<<<<<<<<<<
@@ -1683,7 +1684,7 @@ struct __pyx_obj_4lxml_5etree__Attrib {
 };
 
 
-/* "lxml/etree.pyx":2533
+/* "lxml/etree.pyx":2544
  * @cython.final
  * @cython.internal
  * cdef class _AttribIterator:             # <<<<<<<<<<<<<<
@@ -1698,7 +1699,7 @@ struct __pyx_obj_4lxml_5etree__AttribIterator {
 };
 
 
-/* "lxml/etree.pyx":2574
+/* "lxml/etree.pyx":2585
  * 
  * 
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
@@ -1716,7 +1717,7 @@ struct LxmlElementTagMatcher {
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTagMatcherType;
 
-/* "lxml/etree.pyx":2605
+/* "lxml/etree.pyx":2616
  *                 self._name = NULL
  * 
  * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
@@ -1731,7 +1732,7 @@ struct LxmlElementIterator {
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementIteratorType;
 
-/* "lxml/etree.pyx":2642
+/* "lxml/etree.pyx":2653
  * @cython.final
  * @cython.internal
  * cdef class _MultiTagMatcher:             # <<<<<<<<<<<<<<
@@ -1750,7 +1751,7 @@ struct __pyx_obj_4lxml_5etree__MultiTagMatcher {
 };
 
 
-/* "lxml/etree.pyx":2779
+/* "lxml/etree.pyx":2790
  *         return False
  * 
  * cdef class _ElementMatchIterator:             # <<<<<<<<<<<<<<
@@ -1766,7 +1767,7 @@ struct __pyx_obj_4lxml_5etree__ElementMatchIterator {
 };
 
 
-/* "lxml/etree.pyx":2808
+/* "lxml/etree.pyx":2819
  *         return current_node
  * 
  * cdef class ElementChildIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -1778,7 +1779,7 @@ struct __pyx_obj_4lxml_5etree_ElementChildIterator {
 };
 
 
-/* "lxml/etree.pyx":2828
+/* "lxml/etree.pyx":2839
  *         self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None
  * 
  * cdef class SiblingsIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -1790,7 +1791,7 @@ struct __pyx_obj_4lxml_5etree_SiblingsIterator {
 };
 
 
-/* "lxml/etree.pyx":2843
+/* "lxml/etree.pyx":2854
  *         self._storeNext(node)
  * 
  * cdef class AncestorsIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -1802,7 +1803,7 @@ struct __pyx_obj_4lxml_5etree_AncestorsIterator {
 };
 
 
-/* "lxml/etree.pyx":2853
+/* "lxml/etree.pyx":2864
  *         self._storeNext(node)
  * 
  * cdef class ElementDepthFirstIterator:             # <<<<<<<<<<<<<<
@@ -1818,7 +1819,7 @@ struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator {
 };
 
 
-/* "lxml/etree.pyx":2929
+/* "lxml/etree.pyx":2940
  *         return NULL
  * 
  * cdef class ElementTextIterator:             # <<<<<<<<<<<<<<
@@ -1832,7 +1833,7 @@ struct __pyx_obj_4lxml_5etree_ElementTextIterator {
 };
 
 
-/* "lxml/etree.pyx":3055
+/* "lxml/etree.pyx":3066
  * 
  * 
  * cdef class CDATA:             # <<<<<<<<<<<<<<
@@ -1866,8 +1867,8 @@ struct __pyx_obj_4lxml_5etree__ReadOnlyProxy {
  * @cython.final
  * @cython.internal
  * cdef class _ReadOnlyPIProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for processing instructions (for internal use only!)"
- *     property target:
+ *     """A read-only proxy for processing instructions (for internal use only!)"""
+ *     @property
  */
 struct __pyx_obj_4lxml_5etree__ReadOnlyPIProxy {
   struct __pyx_obj_4lxml_5etree__ReadOnlyProxy __pyx_base;
@@ -1878,7 +1879,7 @@ struct __pyx_obj_4lxml_5etree__ReadOnlyPIProxy {
  * @cython.final
  * @cython.internal
  * cdef class _ReadOnlyEntityProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     """A read-only proxy for entity references (for internal use only!)"""
  *     property name:
  */
 struct __pyx_obj_4lxml_5etree__ReadOnlyEntityProxy {
@@ -1890,7 +1891,7 @@ struct __pyx_obj_4lxml_5etree__ReadOnlyEntityProxy {
  * 
  * @cython.internal
  * cdef class _ReadOnlyElementProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"The main read-only Element proxy class (for internal use only!)."
+ *     """The main read-only Element proxy class (for internal use only!)."""
  * 
  */
 struct __pyx_obj_4lxml_5etree__ReadOnlyElementProxy {
@@ -1940,7 +1941,7 @@ struct __pyx_obj_4lxml_5etree__ModifyContentOnlyProxy {
  * @cython.final
  * @cython.internal
  * cdef class _ModifyContentOnlyPIProxy(_ModifyContentOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"""A read-only proxy that allows changing the text/target content of a
+ *     """A read-only proxy that allows changing the text/target content of a
  *     processing instruction.
  */
 struct __pyx_obj_4lxml_5etree__ModifyContentOnlyPIProxy {
@@ -1952,7 +1953,7 @@ struct __pyx_obj_4lxml_5etree__ModifyContentOnlyPIProxy {
  * @cython.final
  * @cython.internal
  * cdef class _ModifyContentOnlyEntityProxy(_ModifyContentOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     "A read-only proxy for entity references (for internal use only!)"
  *     property name:
  */
 struct __pyx_obj_4lxml_5etree__ModifyContentOnlyEntityProxy {
@@ -3140,7 +3141,7 @@ struct __pyx_obj_4lxml_5etree_XSLTExtension {
 };
 
 
-/* "lxml/etree.pyx":3497
+/* "lxml/etree.pyx":3508
  * # Validation
  * 
  * cdef class DocumentInvalid(LxmlError):             # <<<<<<<<<<<<<<
@@ -3152,7 +3153,7 @@ struct __pyx_obj_4lxml_5etree_DocumentInvalid {
 };
 
 
-/* "lxml/etree.pyx":3505
+/* "lxml/etree.pyx":3516
  * 
  * 
  * cdef class _Validator:             # <<<<<<<<<<<<<<
@@ -3618,7 +3619,7 @@ struct __pyx_obj_4lxml_5etree___pyx_scope_struct_10___aexit__ {
 
 
 /* "src/lxml/dtd.pxi":163
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -3632,7 +3633,7 @@ struct __pyx_obj_4lxml_5etree___pyx_scope_struct_11_itervalues {
 
 
 /* "src/lxml/dtd.pxi":223
- *                return None
+ *            return None
  * 
  *     def iterattributes(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -3647,7 +3648,7 @@ struct __pyx_obj_4lxml_5etree___pyx_scope_struct_12_iterattributes {
 
 
 /* "src/lxml/dtd.pxi":314
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  *     def iterelements(self):             # <<<<<<<<<<<<<<
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
@@ -3729,7 +3730,7 @@ 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 *, int, int, int, int, PyObject *, PyObject *);
 
 
-/* "src/lxml/xmlerror.pxi":180
+/* "src/lxml/xmlerror.pxi":184
  * 
  * 
  * cdef class _BaseErrorLog:             # <<<<<<<<<<<<<<
@@ -3752,7 +3753,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 *, PyObject *);
 
 
-/* "src/lxml/xmlerror.pxi":270
+/* "src/lxml/xmlerror.pxi":274
  *         return message
  * 
  * cdef class _ListErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -3766,7 +3767,7 @@ struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__ListErrorLog *__pyx_vtabptr_4lxml_5etree__ListErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":388
+/* "src/lxml/xmlerror.pxi":392
  * @cython.final
  * @cython.internal
  * cdef class _ErrorLogContext:             # <<<<<<<<<<<<<<
@@ -3783,7 +3784,7 @@ 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 *);
 
 
-/* "src/lxml/xmlerror.pxi":425
+/* "src/lxml/xmlerror.pxi":429
  * 
  * 
  * cdef class _ErrorLog(_ListErrorLog):             # <<<<<<<<<<<<<<
@@ -3804,7 +3805,7 @@ 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 *);
 
 
-/* "src/lxml/xmlerror.pxi":478
+/* "src/lxml/xmlerror.pxi":482
  *         self._entries.append(entry)
  * 
  * cdef class _DomainErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -3818,7 +3819,7 @@ struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__DomainErrorLog *__pyx_vtabptr_4lxml_5etree__DomainErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":487
+/* "src/lxml/xmlerror.pxi":491
  *             _ErrorLog.receive(self, entry)
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):             # <<<<<<<<<<<<<<
@@ -3832,7 +3833,7 @@ struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog {
 static struct __pyx_vtabstruct_4lxml_5etree__RotatingErrorLog *__pyx_vtabptr_4lxml_5etree__RotatingErrorLog;
 
 
-/* "src/lxml/xmlerror.pxi":505
+/* "src/lxml/xmlerror.pxi":509
  *                 del self._entries[:offset]
  * 
  * cdef class PyErrorLog(_BaseErrorLog):             # <<<<<<<<<<<<<<
@@ -3891,7 +3892,7 @@ static struct __pyx_vtabstruct_4lxml_5etree_DocInfo *__pyx_vtabptr_4lxml_5etree_
 static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5etree_DocInfo *);
 
 
-/* "lxml/etree.pyx":1623
+/* "lxml/etree.pyx":1634
  * 
  * @cython.internal
  * cdef class __ContentOnlyElement(_Element):             # <<<<<<<<<<<<<<
@@ -3905,12 +3906,12 @@ struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement {
 static struct __pyx_vtabstruct_4lxml_5etree___ContentOnlyElement *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
 
 
-/* "lxml/etree.pyx":1690
+/* "lxml/etree.pyx":1701
  *         return []
  * 
  * cdef class _Comment(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 
 struct __pyx_vtabstruct_4lxml_5etree__Comment {
@@ -3919,12 +3920,12 @@ struct __pyx_vtabstruct_4lxml_5etree__Comment {
 static struct __pyx_vtabstruct_4lxml_5etree__Comment *__pyx_vtabptr_4lxml_5etree__Comment;
 
 
-/* "lxml/etree.pyx":1698
+/* "lxml/etree.pyx":1709
  *         return "<!--%s-->" % strrepr(self.text)
  * 
  * cdef class _ProcessingInstruction(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 
 struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction {
@@ -3933,12 +3934,12 @@ struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction {
 static struct __pyx_vtabstruct_4lxml_5etree__ProcessingInstruction *__pyx_vtabptr_4lxml_5etree__ProcessingInstruction;
 
 
-/* "lxml/etree.pyx":1749
+/* "lxml/etree.pyx":1760
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  * 
  * cdef class _Entity(__ContentOnlyElement):             # <<<<<<<<<<<<<<
- *     property tag:
- *         def __get__(self):
+ *     @property
+ *     def tag(self):
  */
 
 struct __pyx_vtabstruct_4lxml_5etree__Entity {
@@ -3948,7 +3949,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__Entity *__pyx_vtabptr_4lxml_5etree_
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTreeType;
 
-/* "lxml/etree.pyx":1847
+/* "lxml/etree.pyx":1858
  * 
  * 
  * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
@@ -3964,7 +3965,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementTagMatcherType;
 
-/* "lxml/etree.pyx":2574
+/* "lxml/etree.pyx":2585
  * 
  * 
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
@@ -3979,7 +3980,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__ElementTagMatcher *__pyx_vtabptr_4l
 
 __PYX_EXTERN_C DL_EXPORT(PyTypeObject) LxmlElementIteratorType;
 
-/* "lxml/etree.pyx":2605
+/* "lxml/etree.pyx":2616
  *                 self._name = NULL
  * 
  * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
@@ -3994,7 +3995,7 @@ struct __pyx_vtabstruct_4lxml_5etree__ElementIterator {
 static struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *__pyx_vtabptr_4lxml_5etree__ElementIterator;
 
 
-/* "lxml/etree.pyx":2642
+/* "lxml/etree.pyx":2653
  * @cython.final
  * @cython.internal
  * cdef class _MultiTagMatcher:             # <<<<<<<<<<<<<<
@@ -4027,7 +4028,7 @@ 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 *, xmlAttr *);
 
 
-/* "lxml/etree.pyx":2779
+/* "lxml/etree.pyx":2790
  *         return False
  * 
  * cdef class _ElementMatchIterator:             # <<<<<<<<<<<<<<
@@ -4044,7 +4045,7 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
 static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *, struct LxmlElement *);
 
 
-/* "lxml/etree.pyx":2808
+/* "lxml/etree.pyx":2819
  *         return current_node
  * 
  * cdef class ElementChildIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -4058,7 +4059,7 @@ struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator {
 static struct __pyx_vtabstruct_4lxml_5etree_ElementChildIterator *__pyx_vtabptr_4lxml_5etree_ElementChildIterator;
 
 
-/* "lxml/etree.pyx":2828
+/* "lxml/etree.pyx":2839
  *         self._node = _elementFactory(node._doc, c_node) if c_node is not NULL else None
  * 
  * cdef class SiblingsIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -4072,7 +4073,7 @@ struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator {
 static struct __pyx_vtabstruct_4lxml_5etree_SiblingsIterator *__pyx_vtabptr_4lxml_5etree_SiblingsIterator;
 
 
-/* "lxml/etree.pyx":2843
+/* "lxml/etree.pyx":2854
  *         self._storeNext(node)
  * 
  * cdef class AncestorsIterator(_ElementMatchIterator):             # <<<<<<<<<<<<<<
@@ -4086,7 +4087,7 @@ struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator {
 static struct __pyx_vtabstruct_4lxml_5etree_AncestorsIterator *__pyx_vtabptr_4lxml_5etree_AncestorsIterator;
 
 
-/* "lxml/etree.pyx":2853
+/* "lxml/etree.pyx":2864
  *         self._storeNext(node)
  * 
  * cdef class ElementDepthFirstIterator:             # <<<<<<<<<<<<<<
@@ -4125,8 +4126,8 @@ static struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyProxy *__pyx_vtabptr_4lxml_
  * @cython.final
  * @cython.internal
  * cdef class _ReadOnlyPIProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for processing instructions (for internal use only!)"
- *     property target:
+ *     """A read-only proxy for processing instructions (for internal use only!)"""
+ *     @property
  */
 
 struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyPIProxy {
@@ -4139,7 +4140,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyPIProxy *__pyx_vtabptr_4lxm
  * @cython.final
  * @cython.internal
  * cdef class _ReadOnlyEntityProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     """A read-only proxy for entity references (for internal use only!)"""
  *     property name:
  */
 
@@ -4153,7 +4154,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__ReadOnlyEntityProxy *__pyx_vtabptr_
  * 
  * @cython.internal
  * cdef class _ReadOnlyElementProxy(_ReadOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"The main read-only Element proxy class (for internal use only!)."
+ *     """The main read-only Element proxy class (for internal use only!)."""
  * 
  */
 
@@ -4198,7 +4199,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyProxy *__pyx_vtabp
  * @cython.final
  * @cython.internal
  * cdef class _ModifyContentOnlyPIProxy(_ModifyContentOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"""A read-only proxy that allows changing the text/target content of a
+ *     """A read-only proxy that allows changing the text/target content of a
  *     processing instruction.
  */
 
@@ -4212,7 +4213,7 @@ static struct __pyx_vtabstruct_4lxml_5etree__ModifyContentOnlyPIProxy *__pyx_vta
  * @cython.final
  * @cython.internal
  * cdef class _ModifyContentOnlyEntityProxy(_ModifyContentOnlyProxy):             # <<<<<<<<<<<<<<
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     "A read-only proxy for entity references (for internal use only!)"
  *     property name:
  */
 
@@ -5146,7 +5147,7 @@ struct __pyx_vtabstruct_4lxml_5etree_XSLTExtension {
 static struct __pyx_vtabstruct_4lxml_5etree_XSLTExtension *__pyx_vtabptr_4lxml_5etree_XSLTExtension;
 
 
-/* "lxml/etree.pyx":3505
+/* "lxml/etree.pyx":3516
  * 
  * 
  * cdef class _Validator:             # <<<<<<<<<<<<<<
@@ -5716,7 +5717,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObj
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -6219,7 +6220,7 @@ static PyObject *__Pyx__GetNameInClass(PyObject *nmspace, PyObject *name);
 
 /* ClassMethod.proto */
 #include "descrobject.h"
-static PyObject* __Pyx_Method_ClassMethod(PyObject *method);
+static CYTHON_UNUSED PyObject* __Pyx_Method_ClassMethod(PyObject *method);
 
 /* RegisterModuleCleanup.proto */
 static void __pyx_module_cleanup(PyObject *self);
@@ -6837,6 +6838,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__appendToNsCache(__pyx_t_4lxml_5et
 static int __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(xmlNode *, __pyx_t_4lxml_5etree__nscache *, xmlNs **); /*proto*/
 static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *, __pyx_t_4lxml_5etree__nscache *, xmlNs *); /*proto*/
 static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *, xmlDoc *, xmlNode *); /*proto*/
+static void __pyx_f_4lxml_5etree__setTreeDoc(xmlNode *, xmlDoc *); /*proto*/
 static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixDocChildren(xmlNode *, xmlDoc *); /*proto*/
 static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *, xmlNode *, xmlNode *, __pyx_t_4lxml_5etree__nscache *, xmlNs *); /*proto*/
 static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *, struct LxmlDocument *, size_t); /*proto*/
@@ -7856,7 +7858,7 @@ static const char __pyx_k_StopIteration[] = "StopIteration";
 static const char __pyx_k_Unknown_error[] = "\077\077 Unknown error \077\077\n";
 static const char __pyx_k_XIncludeError[] = "XIncludeError";
 static const char __pyx_k_XMLPullParser[] = "XMLPullParser";
-static const char __pyx_k_XML_line_3165[] = "XML (line 3165)";
+static const char __pyx_k_XML_line_3176[] = "XML (line 3176)";
 static const char __pyx_k_XSLTExtension[] = "XSLTExtension";
 static const char __pyx_k_XSLTSaveError[] = "XSLTSaveError";
 static const char __pyx_k_XSLT_strparam[] = "XSLT.strparam";
@@ -9036,7 +9038,7 @@ static PyObject *__pyx_n_s_XMLSchemaValidateError;
 static PyObject *__pyx_n_s_XMLSyntaxError;
 static PyObject *__pyx_n_s_XMLTreeBuilder;
 static PyObject *__pyx_kp_s_XML_declaration_already_written;
-static PyObject *__pyx_kp_u_XML_line_3165;
+static PyObject *__pyx_kp_u_XML_line_3176;
 static PyObject *__pyx_kp_u_XML_text_parser_None_base_url_No;
 static PyObject *__pyx_n_u_XPATH_LOCATIONSET;
 static PyObject *__pyx_n_u_XPATH_POINT;
@@ -15818,8 +15820,7 @@ static void __pyx_f_4lxml_5etree__cleanUpFromNamespaceAdaptation(xmlNode *__pyx_
 static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_doc, xmlDoc *__pyx_v_c_source_doc, xmlNode *__pyx_v_c_element) {
   xmlNode *__pyx_v_c_start_node;
   xmlNode *__pyx_v_c_node;
-  xmlDoc *__pyx_v_c_doc;
-  xmlAttr *__pyx_v_c_attr;
+  CYTHON_UNUSED xmlDoc *__pyx_v_c_doc;
   __pyx_t_4lxml_5etree__nscache __pyx_v_c_ns_cache;
   xmlNs *__pyx_v_c_del_ns_list;
   PyObject *__pyx_v_proxy_count = 0;
@@ -15924,23 +15925,14 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     c_start_node = c_element
  * 
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)             # <<<<<<<<<<<<<<
- *     # 0) set C doc link
- *     c_element.doc = c_doc
- */
-  BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);
-
-  /* "src/lxml/proxy.pxi":341
- *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
- *     # 0) set C doc link
- *     c_element.doc = c_doc             # <<<<<<<<<<<<<<
- * 
  *     if tree._isElementOrXInclude(c_element):
+ *         if hasProxy(c_element):
  */
-  __pyx_v_c_element->doc = __pyx_v_c_doc;
+  BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_element, 1);
 
-  /* "src/lxml/proxy.pxi":343
- *     c_element.doc = c_doc
+  /* "src/lxml/proxy.pxi":340
  * 
+ *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
  *     if tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
  *         if hasProxy(c_element):
  *             proxy_count += 1
@@ -15948,8 +15940,8 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   __pyx_t_3 = (_isElementOrXInclude(__pyx_v_c_element) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":344
- * 
+    /* "src/lxml/proxy.pxi":341
+ *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
  *     if tree._isElementOrXInclude(c_element):
  *         if hasProxy(c_element):             # <<<<<<<<<<<<<<
  *             proxy_count += 1
@@ -15958,20 +15950,20 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
     __pyx_t_3 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_element) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":345
+      /* "src/lxml/proxy.pxi":342
  *     if tree._isElementOrXInclude(c_element):
  *         if hasProxy(c_element):
  *             proxy_count += 1             # <<<<<<<<<<<<<<
  * 
  *         # 1) cut out namespaces defined here that are already known by
  */
-      __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_proxy_count, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 345, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyInt_AddObjC(__pyx_v_proxy_count, __pyx_int_1, 1, 1, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(4, 342, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_proxy_count, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/proxy.pxi":344
- * 
+      /* "src/lxml/proxy.pxi":341
+ *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
  *     if tree._isElementOrXInclude(c_element):
  *         if hasProxy(c_element):             # <<<<<<<<<<<<<<
  *             proxy_count += 1
@@ -15979,7 +15971,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     }
 
-    /* "src/lxml/proxy.pxi":349
+    /* "src/lxml/proxy.pxi":346
  *         # 1) cut out namespaces defined here that are already known by
  *         #    the ancestors
  *         if c_element.nsDef is not NULL:             # <<<<<<<<<<<<<<
@@ -15989,7 +15981,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
     __pyx_t_3 = ((__pyx_v_c_element->nsDef != NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":350
+      /* "src/lxml/proxy.pxi":347
  *         #    the ancestors
  *         if c_element.nsDef is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -16005,16 +15997,16 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
         __Pyx_XGOTREF(__pyx_t_7);
         /*try:*/ {
 
-          /* "src/lxml/proxy.pxi":351
+          /* "src/lxml/proxy.pxi":348
  *         if c_element.nsDef is not NULL:
  *             try:
  *                 _stripRedundantNamespaceDeclarations(c_element, &c_ns_cache, &c_del_ns_list)             # <<<<<<<<<<<<<<
  *             except:
  *                 _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  */
-          __pyx_t_8 = __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(__pyx_v_c_element, (&__pyx_v_c_ns_cache), (&__pyx_v_c_del_ns_list)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 351, __pyx_L7_error)
+          __pyx_t_8 = __pyx_f_4lxml_5etree__stripRedundantNamespaceDeclarations(__pyx_v_c_element, (&__pyx_v_c_ns_cache), (&__pyx_v_c_del_ns_list)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 348, __pyx_L7_error)
 
-          /* "src/lxml/proxy.pxi":350
+          /* "src/lxml/proxy.pxi":347
  *         #    the ancestors
  *         if c_element.nsDef is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -16029,7 +16021,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
         __pyx_L7_error:;
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "src/lxml/proxy.pxi":352
+        /* "src/lxml/proxy.pxi":349
  *             try:
  *                 _stripRedundantNamespaceDeclarations(c_element, &c_ns_cache, &c_del_ns_list)
  *             except:             # <<<<<<<<<<<<<<
@@ -16038,12 +16030,12 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
         /*except:*/ {
           __Pyx_AddTraceback("lxml.etree.moveNodeToDocument", __pyx_clineno, __pyx_lineno, __pyx_filename);
-          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(4, 352, __pyx_L9_except_error)
+          if (__Pyx_GetException(&__pyx_t_4, &__pyx_t_9, &__pyx_t_10) < 0) __PYX_ERR(4, 349, __pyx_L9_except_error)
           __Pyx_GOTREF(__pyx_t_4);
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_GOTREF(__pyx_t_10);
 
-          /* "src/lxml/proxy.pxi":353
+          /* "src/lxml/proxy.pxi":350
  *                 _stripRedundantNamespaceDeclarations(c_element, &c_ns_cache, &c_del_ns_list)
  *             except:
  *                 _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)             # <<<<<<<<<<<<<<
@@ -16052,7 +16044,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
           __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":354
+          /* "src/lxml/proxy.pxi":351
  *             except:
  *                 _cleanUpFromNamespaceAdaptation(c_start_node, &c_ns_cache, c_del_ns_list)
  *                 raise             # <<<<<<<<<<<<<<
@@ -16064,11 +16056,11 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
           __Pyx_XGIVEREF(__pyx_t_10);
           __Pyx_ErrRestoreWithState(__pyx_t_4, __pyx_t_9, __pyx_t_10);
           __pyx_t_4 = 0; __pyx_t_9 = 0; __pyx_t_10 = 0; 
-          __PYX_ERR(4, 354, __pyx_L9_except_error)
+          __PYX_ERR(4, 351, __pyx_L9_except_error)
         }
         __pyx_L9_except_error:;
 
-        /* "src/lxml/proxy.pxi":350
+        /* "src/lxml/proxy.pxi":347
  *         #    the ancestors
  *         if c_element.nsDef is not NULL:
  *             try:             # <<<<<<<<<<<<<<
@@ -16083,7 +16075,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
         __pyx_L12_try_end:;
       }
 
-      /* "src/lxml/proxy.pxi":349
+      /* "src/lxml/proxy.pxi":346
  *         # 1) cut out namespaces defined here that are already known by
  *         #    the ancestors
  *         if c_element.nsDef is not NULL:             # <<<<<<<<<<<<<<
@@ -16092,7 +16084,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     }
 
-    /* "src/lxml/proxy.pxi":358
+    /* "src/lxml/proxy.pxi":355
  *         # 2) make sure the namespaces of an element and its attributes
  *         #    are declared in this document (i.e. on the node or its parents)
  *         if c_element.ns is not NULL:             # <<<<<<<<<<<<<<
@@ -16102,16 +16094,16 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
     __pyx_t_3 = ((__pyx_v_c_element->ns != NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":359
+      /* "src/lxml/proxy.pxi":356
  *         #    are declared in this document (i.e. on the node or its parents)
  *         if c_element.ns is not NULL:
  *             _fixCNs(doc, c_start_node, c_element, &c_ns_cache, c_del_ns_list)             # <<<<<<<<<<<<<<
  * 
  *         c_node = <xmlNode*>c_element.properties
  */
-      __pyx_t_8 = __pyx_f_4lxml_5etree__fixCNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_element, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 359, __pyx_L1_error)
+      __pyx_t_8 = __pyx_f_4lxml_5etree__fixCNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_element, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 356, __pyx_L1_error)
 
-      /* "src/lxml/proxy.pxi":358
+      /* "src/lxml/proxy.pxi":355
  *         # 2) make sure the namespaces of an element and its attributes
  *         #    are declared in this document (i.e. on the node or its parents)
  *         if c_element.ns is not NULL:             # <<<<<<<<<<<<<<
@@ -16120,7 +16112,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     }
 
-    /* "src/lxml/proxy.pxi":361
+    /* "src/lxml/proxy.pxi":358
  *             _fixCNs(doc, c_start_node, c_element, &c_ns_cache, c_del_ns_list)
  * 
  *         c_node = <xmlNode*>c_element.properties             # <<<<<<<<<<<<<<
@@ -16129,7 +16121,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     __pyx_v_c_node = ((xmlNode *)__pyx_v_c_element->properties);
 
-    /* "src/lxml/proxy.pxi":362
+    /* "src/lxml/proxy.pxi":359
  * 
  *         c_node = <xmlNode*>c_element.properties
  *         while c_node is not NULL:             # <<<<<<<<<<<<<<
@@ -16140,92 +16132,37 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_3) break;
 
-      /* "src/lxml/proxy.pxi":363
+      /* "src/lxml/proxy.pxi":360
  *         c_node = <xmlNode*>c_element.properties
  *         while c_node is not NULL:
  *             if c_node.ns is not NULL:             # <<<<<<<<<<<<<<
  *                 _fixCNs(doc, c_start_node, c_node, &c_ns_cache, c_del_ns_list)
- * 
+ *             c_node = c_node.next
  */
       __pyx_t_3 = ((__pyx_v_c_node->ns != NULL) != 0);
       if (__pyx_t_3) {
 
-        /* "src/lxml/proxy.pxi":364
+        /* "src/lxml/proxy.pxi":361
  *         while c_node is not NULL:
  *             if c_node.ns is not NULL:
  *                 _fixCNs(doc, c_start_node, c_node, &c_ns_cache, c_del_ns_list)             # <<<<<<<<<<<<<<
+ *             c_node = c_node.next
  * 
- *             # remove attribute from ID table (see xmlSetTreeDoc() in libxml2's tree.c)
  */
-        __pyx_t_8 = __pyx_f_4lxml_5etree__fixCNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_node, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 364, __pyx_L1_error)
+        __pyx_t_8 = __pyx_f_4lxml_5etree__fixCNs(__pyx_v_doc, __pyx_v_c_start_node, __pyx_v_c_node, (&__pyx_v_c_ns_cache), __pyx_v_c_del_ns_list); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(4, 361, __pyx_L1_error)
 
-        /* "src/lxml/proxy.pxi":363
+        /* "src/lxml/proxy.pxi":360
  *         c_node = <xmlNode*>c_element.properties
  *         while c_node is not NULL:
  *             if c_node.ns is not NULL:             # <<<<<<<<<<<<<<
  *                 _fixCNs(doc, c_start_node, c_node, &c_ns_cache, c_del_ns_list)
- * 
- */
-      }
-
-      /* "src/lxml/proxy.pxi":367
- * 
- *             # remove attribute from ID table (see xmlSetTreeDoc() in libxml2's tree.c)
- *             c_attr = <tree.xmlAttr*>c_node             # <<<<<<<<<<<<<<
- *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
- *                 tree.xmlRemoveID(c_source_doc, c_attr)
- */
-      __pyx_v_c_attr = ((xmlAttr *)__pyx_v_c_node);
-
-      /* "src/lxml/proxy.pxi":368
- *             # remove attribute from ID table (see xmlSetTreeDoc() in libxml2's tree.c)
- *             c_attr = <tree.xmlAttr*>c_node
- *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
- *                 tree.xmlRemoveID(c_source_doc, c_attr)
- *             # set C doc link also for attributes
- */
-      __pyx_t_3 = ((__pyx_v_c_attr->atype == XML_ATTRIBUTE_ID) != 0);
-      if (__pyx_t_3) {
-
-        /* "src/lxml/proxy.pxi":369
- *             c_attr = <tree.xmlAttr*>c_node
- *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
- *                 tree.xmlRemoveID(c_source_doc, c_attr)             # <<<<<<<<<<<<<<
- *             # set C doc link also for attributes
- *             c_node.doc = c_doc
- */
-        (void)(xmlRemoveID(__pyx_v_c_source_doc, __pyx_v_c_attr));
-
-        /* "src/lxml/proxy.pxi":368
- *             # remove attribute from ID table (see xmlSetTreeDoc() in libxml2's tree.c)
- *             c_attr = <tree.xmlAttr*>c_node
- *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
- *                 tree.xmlRemoveID(c_source_doc, c_attr)
- *             # set C doc link also for attributes
- */
-      }
-
-      /* "src/lxml/proxy.pxi":371
- *                 tree.xmlRemoveID(c_source_doc, c_attr)
- *             # set C doc link also for attributes
- *             c_node.doc = c_doc             # <<<<<<<<<<<<<<
- *             _fixDocChildren(c_node.children, c_doc)
  *             c_node = c_node.next
  */
-      __pyx_v_c_node->doc = __pyx_v_c_doc;
-
-      /* "src/lxml/proxy.pxi":372
- *             # set C doc link also for attributes
- *             c_node.doc = c_doc
- *             _fixDocChildren(c_node.children, c_doc)             # <<<<<<<<<<<<<<
- *             c_node = c_node.next
- * 
- */
-      __pyx_f_4lxml_5etree__fixDocChildren(__pyx_v_c_node->children, __pyx_v_c_doc);
+      }
 
-      /* "src/lxml/proxy.pxi":373
- *             c_node.doc = c_doc
- *             _fixDocChildren(c_node.children, c_doc)
+      /* "src/lxml/proxy.pxi":362
+ *             if c_node.ns is not NULL:
+ *                 _fixCNs(doc, c_start_node, c_node, &c_ns_cache, c_del_ns_list)
  *             c_node = c_node.next             # <<<<<<<<<<<<<<
  * 
  *     tree.END_FOR_EACH_FROM(c_element)
@@ -16234,16 +16171,16 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
       __pyx_v_c_node = __pyx_t_11;
     }
 
-    /* "src/lxml/proxy.pxi":343
- *     c_element.doc = c_doc
+    /* "src/lxml/proxy.pxi":340
  * 
+ *     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
  *     if tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
  *         if hasProxy(c_element):
  *             proxy_count += 1
  */
   }
 
-  /* "src/lxml/proxy.pxi":375
+  /* "src/lxml/proxy.pxi":364
  *             c_node = c_node.next
  * 
  *     tree.END_FOR_EACH_FROM(c_element)             # <<<<<<<<<<<<<<
@@ -16252,7 +16189,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
   END_FOR_EACH_FROM(__pyx_v_c_element);
 
-  /* "src/lxml/proxy.pxi":378
+  /* "src/lxml/proxy.pxi":367
  * 
  *     # free now unused namespace declarations
  *     if c_del_ns_list is not NULL:             # <<<<<<<<<<<<<<
@@ -16262,7 +16199,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   __pyx_t_3 = ((__pyx_v_c_del_ns_list != NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":379
+    /* "src/lxml/proxy.pxi":368
  *     # free now unused namespace declarations
  *     if c_del_ns_list is not NULL:
  *         tree.xmlFreeNsList(c_del_ns_list)             # <<<<<<<<<<<<<<
@@ -16271,7 +16208,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     xmlFreeNsList(__pyx_v_c_del_ns_list);
 
-    /* "src/lxml/proxy.pxi":378
+    /* "src/lxml/proxy.pxi":367
  * 
  *     # free now unused namespace declarations
  *     if c_del_ns_list is not NULL:             # <<<<<<<<<<<<<<
@@ -16280,7 +16217,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
   }
 
-  /* "src/lxml/proxy.pxi":382
+  /* "src/lxml/proxy.pxi":371
  * 
  *     # cleanup
  *     if c_ns_cache.ns_map is not NULL:             # <<<<<<<<<<<<<<
@@ -16290,7 +16227,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   __pyx_t_3 = ((__pyx_v_c_ns_cache.ns_map != NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":383
+    /* "src/lxml/proxy.pxi":372
  *     # cleanup
  *     if c_ns_cache.ns_map is not NULL:
  *         python.lxml_free(c_ns_cache.ns_map)             # <<<<<<<<<<<<<<
@@ -16299,7 +16236,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     lxml_free(__pyx_v_c_ns_cache.ns_map);
 
-    /* "src/lxml/proxy.pxi":382
+    /* "src/lxml/proxy.pxi":371
  * 
  *     # cleanup
  *     if c_ns_cache.ns_map is not NULL:             # <<<<<<<<<<<<<<
@@ -16308,7 +16245,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
   }
 
-  /* "src/lxml/proxy.pxi":386
+  /* "src/lxml/proxy.pxi":375
  * 
  *     # 3) fix the names in the tree if we moved it from a different thread
  *     if doc._c_doc.dict is not c_source_doc.dict:             # <<<<<<<<<<<<<<
@@ -16318,7 +16255,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   __pyx_t_3 = ((__pyx_v_doc->_c_doc->dict != __pyx_v_c_source_doc->dict) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":387
+    /* "src/lxml/proxy.pxi":376
  *     # 3) fix the names in the tree if we moved it from a different thread
  *     if doc._c_doc.dict is not c_source_doc.dict:
  *         fixThreadDictNames(c_start_node, c_source_doc.dict, doc._c_doc.dict)             # <<<<<<<<<<<<<<
@@ -16327,7 +16264,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
     __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":386
+    /* "src/lxml/proxy.pxi":375
  * 
  *     # 3) fix the names in the tree if we moved it from a different thread
  *     if doc._c_doc.dict is not c_source_doc.dict:             # <<<<<<<<<<<<<<
@@ -16336,52 +16273,52 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
   }
 
-  /* "src/lxml/proxy.pxi":391
+  /* "src/lxml/proxy.pxi":380
  *     # 4) fix _Document references
  *     #    (and potentially deallocate the source document)
  *     if proxy_count > 0:             # <<<<<<<<<<<<<<
  *         if proxy_count == 1 and c_start_node._private is not NULL:
  *             proxy = getProxy(c_start_node)
  */
-  __pyx_t_10 = PyObject_RichCompare(__pyx_v_proxy_count, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 391, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(4, 391, __pyx_L1_error)
+  __pyx_t_10 = PyObject_RichCompare(__pyx_v_proxy_count, __pyx_int_0, Py_GT); __Pyx_XGOTREF(__pyx_t_10); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 380, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(4, 380, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":392
+    /* "src/lxml/proxy.pxi":381
  *     #    (and potentially deallocate the source document)
  *     if proxy_count > 0:
  *         if proxy_count == 1 and c_start_node._private is not NULL:             # <<<<<<<<<<<<<<
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:
  */
-    __pyx_t_10 = __Pyx_PyInt_EqObjC(__pyx_v_proxy_count, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 392, __pyx_L1_error)
+    __pyx_t_10 = __Pyx_PyInt_EqObjC(__pyx_v_proxy_count, __pyx_int_1, 1, 0); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 381, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_10);
-    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(4, 392, __pyx_L1_error)
+    __pyx_t_12 = __Pyx_PyObject_IsTrue(__pyx_t_10); if (unlikely(__pyx_t_12 < 0)) __PYX_ERR(4, 381, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
     if (__pyx_t_12) {
     } else {
       __pyx_t_3 = __pyx_t_12;
-      goto __pyx_L25_bool_binop_done;
+      goto __pyx_L24_bool_binop_done;
     }
     __pyx_t_12 = ((__pyx_v_c_start_node->_private != NULL) != 0);
     __pyx_t_3 = __pyx_t_12;
-    __pyx_L25_bool_binop_done:;
+    __pyx_L24_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":393
+      /* "src/lxml/proxy.pxi":382
  *     if proxy_count > 0:
  *         if proxy_count == 1 and c_start_node._private is not NULL:
  *             proxy = getProxy(c_start_node)             # <<<<<<<<<<<<<<
  *             if proxy is not None:
  *                 if proxy._doc is not doc:
  */
-      __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_start_node)); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 393, __pyx_L1_error)
+      __pyx_t_10 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_start_node)); if (unlikely(!__pyx_t_10)) __PYX_ERR(4, 382, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __pyx_v_proxy = ((struct LxmlElement *)__pyx_t_10);
       __pyx_t_10 = 0;
 
-      /* "src/lxml/proxy.pxi":394
+      /* "src/lxml/proxy.pxi":383
  *         if proxy_count == 1 and c_start_node._private is not NULL:
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:             # <<<<<<<<<<<<<<
@@ -16392,7 +16329,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
       __pyx_t_12 = (__pyx_t_3 != 0);
       if (__pyx_t_12) {
 
-        /* "src/lxml/proxy.pxi":395
+        /* "src/lxml/proxy.pxi":384
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:
  *                 if proxy._doc is not doc:             # <<<<<<<<<<<<<<
@@ -16403,7 +16340,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
         __pyx_t_3 = (__pyx_t_12 != 0);
         if (__pyx_t_3) {
 
-          /* "src/lxml/proxy.pxi":396
+          /* "src/lxml/proxy.pxi":385
  *             if proxy is not None:
  *                 if proxy._doc is not doc:
  *                     proxy._doc = doc             # <<<<<<<<<<<<<<
@@ -16416,7 +16353,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
           __Pyx_DECREF(((PyObject *)__pyx_v_proxy->_doc));
           __pyx_v_proxy->_doc = __pyx_v_doc;
 
-          /* "src/lxml/proxy.pxi":395
+          /* "src/lxml/proxy.pxi":384
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:
  *                 if proxy._doc is not doc:             # <<<<<<<<<<<<<<
@@ -16425,17 +16362,17 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
         }
 
-        /* "src/lxml/proxy.pxi":394
+        /* "src/lxml/proxy.pxi":383
  *         if proxy_count == 1 and c_start_node._private is not NULL:
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:             # <<<<<<<<<<<<<<
  *                 if proxy._doc is not doc:
  *                     proxy._doc = doc
  */
-        goto __pyx_L27;
+        goto __pyx_L26;
       }
 
-      /* "src/lxml/proxy.pxi":398
+      /* "src/lxml/proxy.pxi":387
  *                     proxy._doc = doc
  *             else:
  *                 fixElementDocument(c_start_node, doc, proxy_count)             # <<<<<<<<<<<<<<
@@ -16443,22 +16380,22 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *             fixElementDocument(c_start_node, doc, proxy_count)
  */
       /*else*/ {
-        __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_proxy_count); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 398, __pyx_L1_error)
+        __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_proxy_count); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 387, __pyx_L1_error)
         __pyx_f_4lxml_5etree_fixElementDocument(__pyx_v_c_start_node, __pyx_v_doc, __pyx_t_13);
       }
-      __pyx_L27:;
+      __pyx_L26:;
 
-      /* "src/lxml/proxy.pxi":392
+      /* "src/lxml/proxy.pxi":381
  *     #    (and potentially deallocate the source document)
  *     if proxy_count > 0:
  *         if proxy_count == 1 and c_start_node._private is not NULL:             # <<<<<<<<<<<<<<
  *             proxy = getProxy(c_start_node)
  *             if proxy is not None:
  */
-      goto __pyx_L24;
+      goto __pyx_L23;
     }
 
-    /* "src/lxml/proxy.pxi":400
+    /* "src/lxml/proxy.pxi":389
  *                 fixElementDocument(c_start_node, doc, proxy_count)
  *         else:
  *             fixElementDocument(c_start_node, doc, proxy_count)             # <<<<<<<<<<<<<<
@@ -16466,12 +16403,12 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  *     return 0
  */
     /*else*/ {
-      __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_proxy_count); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 400, __pyx_L1_error)
+      __pyx_t_13 = __Pyx_PyInt_As_size_t(__pyx_v_proxy_count); if (unlikely((__pyx_t_13 == (size_t)-1) && PyErr_Occurred())) __PYX_ERR(4, 389, __pyx_L1_error)
       __pyx_f_4lxml_5etree_fixElementDocument(__pyx_v_c_start_node, __pyx_v_doc, __pyx_t_13);
     }
-    __pyx_L24:;
+    __pyx_L23:;
 
-    /* "src/lxml/proxy.pxi":391
+    /* "src/lxml/proxy.pxi":380
  *     # 4) fix _Document references
  *     #    (and potentially deallocate the source document)
  *     if proxy_count > 0:             # <<<<<<<<<<<<<<
@@ -16480,7 +16417,7 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
  */
   }
 
-  /* "src/lxml/proxy.pxi":402
+  /* "src/lxml/proxy.pxi":391
  *             fixElementDocument(c_start_node, doc, proxy_count)
  * 
  *     return 0             # <<<<<<<<<<<<<<
@@ -16512,7 +16449,157 @@ static int __pyx_f_4lxml_5etree_moveNodeToDocument(struct LxmlDocument *__pyx_v_
   return __pyx_r;
 }
 
-/* "src/lxml/proxy.pxi":405
+/* "src/lxml/proxy.pxi":394
+ * 
+ * 
+ * cdef void _setTreeDoc(xmlNode* c_node, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
+ *     """Adaptation of 'xmlSetTreeDoc()' that deep-fix the document links iteratively.
+ *     It avoids https://gitlab.gnome.org/GNOME/libxml2/issues/42
+ */
+
+static void __pyx_f_4lxml_5etree__setTreeDoc(xmlNode *__pyx_v_c_node, xmlDoc *__pyx_v_c_doc) {
+  xmlAttr *__pyx_v_c_attr;
+  __Pyx_RefNannyDeclarations
+  int __pyx_t_1;
+  xmlAttr *__pyx_t_2;
+  __Pyx_RefNannySetupContext("_setTreeDoc", 0);
+
+  /* "src/lxml/proxy.pxi":398
+ *     It avoids https://gitlab.gnome.org/GNOME/libxml2/issues/42
+ *     """
+ *     tree.BEGIN_FOR_EACH_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
+ *     if c_node.type == tree.XML_ELEMENT_NODE:
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ */
+  BEGIN_FOR_EACH_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
+
+  /* "src/lxml/proxy.pxi":399
+ *     """
+ *     tree.BEGIN_FOR_EACH_FROM(c_node, c_node, 1)
+ *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ *         while c_attr:
+ */
+  __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
+  if (__pyx_t_1) {
+
+    /* "src/lxml/proxy.pxi":400
+ *     tree.BEGIN_FOR_EACH_FROM(c_node, c_node, 1)
+ *     if c_node.type == tree.XML_ELEMENT_NODE:
+ *         c_attr = <tree.xmlAttr*>c_node.properties             # <<<<<<<<<<<<<<
+ *         while c_attr:
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
+ */
+    __pyx_v_c_attr = ((xmlAttr *)__pyx_v_c_node->properties);
+
+    /* "src/lxml/proxy.pxi":401
+ *     if c_node.type == tree.XML_ELEMENT_NODE:
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ *         while c_attr:             # <<<<<<<<<<<<<<
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)
+ */
+    while (1) {
+      __pyx_t_1 = (__pyx_v_c_attr != 0);
+      if (!__pyx_t_1) break;
+
+      /* "src/lxml/proxy.pxi":402
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ *         while c_attr:
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)
+ *             c_attr.doc = c_doc
+ */
+      __pyx_t_1 = ((__pyx_v_c_attr->atype == XML_ATTRIBUTE_ID) != 0);
+      if (__pyx_t_1) {
+
+        /* "src/lxml/proxy.pxi":403
+ *         while c_attr:
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)             # <<<<<<<<<<<<<<
+ *             c_attr.doc = c_doc
+ *             _fixDocChildren(c_attr.children, c_doc)
+ */
+        (void)(xmlRemoveID(__pyx_v_c_node->doc, __pyx_v_c_attr));
+
+        /* "src/lxml/proxy.pxi":402
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ *         while c_attr:
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)
+ *             c_attr.doc = c_doc
+ */
+      }
+
+      /* "src/lxml/proxy.pxi":404
+ *             if c_attr.atype == tree.XML_ATTRIBUTE_ID:
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)
+ *             c_attr.doc = c_doc             # <<<<<<<<<<<<<<
+ *             _fixDocChildren(c_attr.children, c_doc)
+ *             c_attr = c_attr.next
+ */
+      __pyx_v_c_attr->doc = __pyx_v_c_doc;
+
+      /* "src/lxml/proxy.pxi":405
+ *                 tree.xmlRemoveID(c_node.doc, c_attr)
+ *             c_attr.doc = c_doc
+ *             _fixDocChildren(c_attr.children, c_doc)             # <<<<<<<<<<<<<<
+ *             c_attr = c_attr.next
+ *     # Set doc link for all nodes, not only elements.
+ */
+      __pyx_f_4lxml_5etree__fixDocChildren(__pyx_v_c_attr->children, __pyx_v_c_doc);
+
+      /* "src/lxml/proxy.pxi":406
+ *             c_attr.doc = c_doc
+ *             _fixDocChildren(c_attr.children, c_doc)
+ *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
+ *     # Set doc link for all nodes, not only elements.
+ *     c_node.doc = c_doc
+ */
+      __pyx_t_2 = __pyx_v_c_attr->next;
+      __pyx_v_c_attr = __pyx_t_2;
+    }
+
+    /* "src/lxml/proxy.pxi":399
+ *     """
+ *     tree.BEGIN_FOR_EACH_FROM(c_node, c_node, 1)
+ *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *         c_attr = <tree.xmlAttr*>c_node.properties
+ *         while c_attr:
+ */
+  }
+
+  /* "src/lxml/proxy.pxi":408
+ *             c_attr = c_attr.next
+ *     # Set doc link for all nodes, not only elements.
+ *     c_node.doc = c_doc             # <<<<<<<<<<<<<<
+ *     tree.END_FOR_EACH_FROM(c_node)
+ * 
+ */
+  __pyx_v_c_node->doc = __pyx_v_c_doc;
+
+  /* "src/lxml/proxy.pxi":409
+ *     # Set doc link for all nodes, not only elements.
+ *     c_node.doc = c_doc
+ *     tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
+ * 
+ * 
+ */
+  END_FOR_EACH_FROM(__pyx_v_c_node);
+
+  /* "src/lxml/proxy.pxi":394
+ * 
+ * 
+ * cdef void _setTreeDoc(xmlNode* c_node, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
+ *     """Adaptation of 'xmlSetTreeDoc()' that deep-fix the document links iteratively.
+ *     It avoids https://gitlab.gnome.org/GNOME/libxml2/issues/42
+ */
+
+  /* function exit code */
+  __Pyx_RefNannyFinishContext();
+}
+
+/* "src/lxml/proxy.pxi":412
  * 
  * 
  * cdef inline void _fixDocChildren(xmlNode* c_child, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
@@ -16526,38 +16613,57 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixDocChildren(xmlNode *__pyx_v_
   xmlNode *__pyx_t_2;
   __Pyx_RefNannySetupContext("_fixDocChildren", 0);
 
-  /* "src/lxml/proxy.pxi":406
+  /* "src/lxml/proxy.pxi":413
  * 
  * cdef inline void _fixDocChildren(xmlNode* c_child, xmlDoc* c_doc):
  *     while c_child:             # <<<<<<<<<<<<<<
  *         c_child.doc = c_doc
- *         _fixDocChildren(c_child.children, c_doc)
+ *         if c_child.children:
  */
   while (1) {
     __pyx_t_1 = (__pyx_v_c_child != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/proxy.pxi":407
+    /* "src/lxml/proxy.pxi":414
  * cdef inline void _fixDocChildren(xmlNode* c_child, xmlDoc* c_doc):
  *     while c_child:
  *         c_child.doc = c_doc             # <<<<<<<<<<<<<<
- *         _fixDocChildren(c_child.children, c_doc)
- *         c_child = c_child.next
+ *         if c_child.children:
+ *             _fixDocChildren(c_child.children, c_doc)
  */
     __pyx_v_c_child->doc = __pyx_v_c_doc;
 
-    /* "src/lxml/proxy.pxi":408
+    /* "src/lxml/proxy.pxi":415
  *     while c_child:
  *         c_child.doc = c_doc
- *         _fixDocChildren(c_child.children, c_doc)             # <<<<<<<<<<<<<<
+ *         if c_child.children:             # <<<<<<<<<<<<<<
+ *             _fixDocChildren(c_child.children, c_doc)
+ *         c_child = c_child.next
+ */
+    __pyx_t_1 = (__pyx_v_c_child->children != 0);
+    if (__pyx_t_1) {
+
+      /* "src/lxml/proxy.pxi":416
+ *         c_child.doc = c_doc
+ *         if c_child.children:
+ *             _fixDocChildren(c_child.children, c_doc)             # <<<<<<<<<<<<<<
  *         c_child = c_child.next
  * 
  */
-    __pyx_f_4lxml_5etree__fixDocChildren(__pyx_v_c_child->children, __pyx_v_c_doc);
+      __pyx_f_4lxml_5etree__fixDocChildren(__pyx_v_c_child->children, __pyx_v_c_doc);
 
-    /* "src/lxml/proxy.pxi":409
+      /* "src/lxml/proxy.pxi":415
+ *     while c_child:
  *         c_child.doc = c_doc
- *         _fixDocChildren(c_child.children, c_doc)
+ *         if c_child.children:             # <<<<<<<<<<<<<<
+ *             _fixDocChildren(c_child.children, c_doc)
+ *         c_child = c_child.next
+ */
+    }
+
+    /* "src/lxml/proxy.pxi":417
+ *         if c_child.children:
+ *             _fixDocChildren(c_child.children, c_doc)
  *         c_child = c_child.next             # <<<<<<<<<<<<<<
  * 
  * 
@@ -16566,7 +16672,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixDocChildren(xmlNode *__pyx_v_
     __pyx_v_c_child = __pyx_t_2;
   }
 
-  /* "src/lxml/proxy.pxi":405
+  /* "src/lxml/proxy.pxi":412
  * 
  * 
  * cdef inline void _fixDocChildren(xmlNode* c_child, xmlDoc* c_doc):             # <<<<<<<<<<<<<<
@@ -16578,7 +16684,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixDocChildren(xmlNode *__pyx_v_
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/proxy.pxi":412
+/* "src/lxml/proxy.pxi":420
  * 
  * 
  * cdef int _fixCNs(_Document doc, xmlNode* c_start_node, xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -16607,7 +16713,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   PyObject *__pyx_t_13 = NULL;
   __Pyx_RefNannySetupContext("_fixCNs", 0);
 
-  /* "src/lxml/proxy.pxi":414
+  /* "src/lxml/proxy.pxi":422
  * cdef int _fixCNs(_Document doc, xmlNode* c_start_node, xmlNode* c_node,
  *                  _nscache* c_ns_cache, xmlNs* c_del_ns_list) except -1:
  *     cdef xmlNs* c_ns = NULL             # <<<<<<<<<<<<<<
@@ -16616,7 +16722,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
   __pyx_v_c_ns = NULL;
 
-  /* "src/lxml/proxy.pxi":415
+  /* "src/lxml/proxy.pxi":423
  *                  _nscache* c_ns_cache, xmlNs* c_del_ns_list) except -1:
  *     cdef xmlNs* c_ns = NULL
  *     cdef bint is_prefixed_attr = (c_node.type == tree.XML_ATTRIBUTE_NODE and c_node.ns.prefix)             # <<<<<<<<<<<<<<
@@ -16634,7 +16740,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   __pyx_L3_bool_binop_done:;
   __pyx_v_is_prefixed_attr = __pyx_t_1;
 
-  /* "src/lxml/proxy.pxi":417
+  /* "src/lxml/proxy.pxi":425
  *     cdef bint is_prefixed_attr = (c_node.type == tree.XML_ATTRIBUTE_NODE and c_node.ns.prefix)
  * 
  *     for ns_map in c_ns_cache.ns_map[:c_ns_cache.last]:             # <<<<<<<<<<<<<<
@@ -16646,7 +16752,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
     __pyx_t_3 = __pyx_t_5;
     __pyx_v_ns_map = (__pyx_t_3[0]);
 
-    /* "src/lxml/proxy.pxi":418
+    /* "src/lxml/proxy.pxi":426
  * 
  *     for ns_map in c_ns_cache.ns_map[:c_ns_cache.last]:
  *         if c_node.ns is ns_map.old:             # <<<<<<<<<<<<<<
@@ -16656,7 +16762,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
     __pyx_t_1 = ((__pyx_v_c_node->ns == __pyx_v_ns_map.old) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/proxy.pxi":419
+      /* "src/lxml/proxy.pxi":427
  *     for ns_map in c_ns_cache.ns_map[:c_ns_cache.last]:
  *         if c_node.ns is ns_map.old:
  *             if is_prefixed_attr and not ns_map.new.prefix:             # <<<<<<<<<<<<<<
@@ -16674,7 +16780,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
       __pyx_L9_bool_binop_done:;
       if (__pyx_t_1) {
 
-        /* "src/lxml/proxy.pxi":421
+        /* "src/lxml/proxy.pxi":429
  *             if is_prefixed_attr and not ns_map.new.prefix:
  *                 # avoid dropping prefix from attributes
  *                 continue             # <<<<<<<<<<<<<<
@@ -16683,7 +16789,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
         goto __pyx_L5_continue;
 
-        /* "src/lxml/proxy.pxi":419
+        /* "src/lxml/proxy.pxi":427
  *     for ns_map in c_ns_cache.ns_map[:c_ns_cache.last]:
  *         if c_node.ns is ns_map.old:
  *             if is_prefixed_attr and not ns_map.new.prefix:             # <<<<<<<<<<<<<<
@@ -16692,7 +16798,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
       }
 
-      /* "src/lxml/proxy.pxi":422
+      /* "src/lxml/proxy.pxi":430
  *                 # avoid dropping prefix from attributes
  *                 continue
  *             c_ns = ns_map.new             # <<<<<<<<<<<<<<
@@ -16702,7 +16808,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
       __pyx_t_6 = __pyx_v_ns_map.new;
       __pyx_v_c_ns = __pyx_t_6;
 
-      /* "src/lxml/proxy.pxi":423
+      /* "src/lxml/proxy.pxi":431
  *                 continue
  *             c_ns = ns_map.new
  *             break             # <<<<<<<<<<<<<<
@@ -16711,7 +16817,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
       goto __pyx_L6_break;
 
-      /* "src/lxml/proxy.pxi":418
+      /* "src/lxml/proxy.pxi":426
  * 
  *     for ns_map in c_ns_cache.ns_map[:c_ns_cache.last]:
  *         if c_node.ns is ns_map.old:             # <<<<<<<<<<<<<<
@@ -16723,7 +16829,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   }
   __pyx_L6_break:;
 
-  /* "src/lxml/proxy.pxi":425
+  /* "src/lxml/proxy.pxi":433
  *             break
  * 
  *     if c_ns:             # <<<<<<<<<<<<<<
@@ -16733,7 +16839,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   __pyx_t_1 = (__pyx_v_c_ns != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":426
+    /* "src/lxml/proxy.pxi":434
  * 
  *     if c_ns:
  *         c_node.ns = c_ns             # <<<<<<<<<<<<<<
@@ -16742,7 +16848,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
     __pyx_v_c_node->ns = __pyx_v_c_ns;
 
-    /* "src/lxml/proxy.pxi":425
+    /* "src/lxml/proxy.pxi":433
  *             break
  * 
  *     if c_ns:             # <<<<<<<<<<<<<<
@@ -16752,7 +16858,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
     goto __pyx_L11;
   }
 
-  /* "src/lxml/proxy.pxi":430
+  /* "src/lxml/proxy.pxi":438
  *         # not in cache or not acceptable
  *         # => find a replacement from this document
  *         try:             # <<<<<<<<<<<<<<
@@ -16769,17 +16875,17 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
       __Pyx_XGOTREF(__pyx_t_9);
       /*try:*/ {
 
-        /* "src/lxml/proxy.pxi":431
+        /* "src/lxml/proxy.pxi":439
  *         # => find a replacement from this document
  *         try:
  *             c_ns = doc._findOrBuildNodeNs(             # <<<<<<<<<<<<<<
  *                 c_start_node, c_node.ns.href, c_node.ns.prefix,
  *                 c_node.type == tree.XML_ATTRIBUTE_NODE)
  */
-        __pyx_t_6 = __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_6 == ((xmlNs *)NULL))) __PYX_ERR(4, 431, __pyx_L12_error)
+        __pyx_t_6 = __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_6 == ((xmlNs *)NULL))) __PYX_ERR(4, 439, __pyx_L12_error)
         __pyx_v_c_ns = __pyx_t_6;
 
-        /* "src/lxml/proxy.pxi":434
+        /* "src/lxml/proxy.pxi":442
  *                 c_start_node, c_node.ns.href, c_node.ns.prefix,
  *                 c_node.type == tree.XML_ATTRIBUTE_NODE)
  *             c_node.ns = c_ns             # <<<<<<<<<<<<<<
@@ -16788,16 +16894,16 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
         __pyx_v_c_node->ns = __pyx_v_c_ns;
 
-        /* "src/lxml/proxy.pxi":435
+        /* "src/lxml/proxy.pxi":443
  *                 c_node.type == tree.XML_ATTRIBUTE_NODE)
  *             c_node.ns = c_ns
  *             _appendToNsCache(c_ns_cache, c_node.ns, c_ns)             # <<<<<<<<<<<<<<
  *         except:
  *             _cleanUpFromNamespaceAdaptation(c_start_node, c_ns_cache, c_del_ns_list)
  */
-        __pyx_t_10 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, __pyx_v_c_node->ns, __pyx_v_c_ns); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(4, 435, __pyx_L12_error)
+        __pyx_t_10 = __pyx_f_4lxml_5etree__appendToNsCache(__pyx_v_c_ns_cache, __pyx_v_c_node->ns, __pyx_v_c_ns); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(4, 443, __pyx_L12_error)
 
-        /* "src/lxml/proxy.pxi":430
+        /* "src/lxml/proxy.pxi":438
  *         # not in cache or not acceptable
  *         # => find a replacement from this document
  *         try:             # <<<<<<<<<<<<<<
@@ -16811,7 +16917,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
       goto __pyx_L17_try_end;
       __pyx_L12_error:;
 
-      /* "src/lxml/proxy.pxi":436
+      /* "src/lxml/proxy.pxi":444
  *             c_node.ns = c_ns
  *             _appendToNsCache(c_ns_cache, c_node.ns, c_ns)
  *         except:             # <<<<<<<<<<<<<<
@@ -16820,12 +16926,12 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
       /*except:*/ {
         __Pyx_AddTraceback("lxml.etree._fixCNs", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(4, 436, __pyx_L14_except_error)
+        if (__Pyx_GetException(&__pyx_t_11, &__pyx_t_12, &__pyx_t_13) < 0) __PYX_ERR(4, 444, __pyx_L14_except_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_GOTREF(__pyx_t_12);
         __Pyx_GOTREF(__pyx_t_13);
 
-        /* "src/lxml/proxy.pxi":437
+        /* "src/lxml/proxy.pxi":445
  *             _appendToNsCache(c_ns_cache, c_node.ns, c_ns)
  *         except:
  *             _cleanUpFromNamespaceAdaptation(c_start_node, c_ns_cache, c_del_ns_list)             # <<<<<<<<<<<<<<
@@ -16834,7 +16940,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
  */
         __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":438
+        /* "src/lxml/proxy.pxi":446
  *         except:
  *             _cleanUpFromNamespaceAdaptation(c_start_node, c_ns_cache, c_del_ns_list)
  *             raise             # <<<<<<<<<<<<<<
@@ -16846,11 +16952,11 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
         __Pyx_XGIVEREF(__pyx_t_13);
         __Pyx_ErrRestoreWithState(__pyx_t_11, __pyx_t_12, __pyx_t_13);
         __pyx_t_11 = 0; __pyx_t_12 = 0; __pyx_t_13 = 0; 
-        __PYX_ERR(4, 438, __pyx_L14_except_error)
+        __PYX_ERR(4, 446, __pyx_L14_except_error)
       }
       __pyx_L14_except_error:;
 
-      /* "src/lxml/proxy.pxi":430
+      /* "src/lxml/proxy.pxi":438
  *         # not in cache or not acceptable
  *         # => find a replacement from this document
  *         try:             # <<<<<<<<<<<<<<
@@ -16867,7 +16973,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   }
   __pyx_L11:;
 
-  /* "src/lxml/proxy.pxi":439
+  /* "src/lxml/proxy.pxi":447
  *             _cleanUpFromNamespaceAdaptation(c_start_node, c_ns_cache, c_del_ns_list)
  *             raise
  *     return 0             # <<<<<<<<<<<<<<
@@ -16877,7 +16983,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/proxy.pxi":412
+  /* "src/lxml/proxy.pxi":420
  * 
  * 
  * cdef int _fixCNs(_Document doc, xmlNode* c_start_node, xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -16897,7 +17003,7 @@ static int __pyx_f_4lxml_5etree__fixCNs(struct LxmlDocument *__pyx_v_doc, xmlNod
   return __pyx_r;
 }
 
-/* "src/lxml/proxy.pxi":442
+/* "src/lxml/proxy.pxi":450
  * 
  * 
  * cdef void fixElementDocument(xmlNode* c_element, _Document doc,             # <<<<<<<<<<<<<<
@@ -16914,7 +17020,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("fixElementDocument", 0);
 
-  /* "src/lxml/proxy.pxi":444
+  /* "src/lxml/proxy.pxi":452
  * cdef void fixElementDocument(xmlNode* c_element, _Document doc,
  *                              size_t proxy_count):
  *     cdef xmlNode* c_node = c_element             # <<<<<<<<<<<<<<
@@ -16923,7 +17029,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
   __pyx_v_c_node = __pyx_v_c_element;
 
-  /* "src/lxml/proxy.pxi":445
+  /* "src/lxml/proxy.pxi":453
  *                              size_t proxy_count):
  *     cdef xmlNode* c_node = c_element
  *     cdef _Element proxy = None # init-to-None required due to fake-loop below             # <<<<<<<<<<<<<<
@@ -16933,7 +17039,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
   __Pyx_INCREF(Py_None);
   __pyx_v_proxy = ((struct LxmlElement *)Py_None);
 
-  /* "src/lxml/proxy.pxi":446
+  /* "src/lxml/proxy.pxi":454
  *     cdef xmlNode* c_node = 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)             # <<<<<<<<<<<<<<
@@ -16942,7 +17048,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
   BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);
 
-  /* "src/lxml/proxy.pxi":447
+  /* "src/lxml/proxy.pxi":455
  *     cdef _Element proxy = None # init-to-None required due to fake-loop below
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node._private is not NULL:             # <<<<<<<<<<<<<<
@@ -16952,19 +17058,19 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
   __pyx_t_1 = ((__pyx_v_c_node->_private != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":448
+    /* "src/lxml/proxy.pxi":456
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node._private is not NULL:
  *         proxy = getProxy(c_node)             # <<<<<<<<<<<<<<
  *         if proxy is not None:
  *             if proxy._doc is not doc:
  */
-    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 448, __pyx_L1_error)
+    __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 456, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF_SET(__pyx_v_proxy, ((struct LxmlElement *)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "src/lxml/proxy.pxi":449
+    /* "src/lxml/proxy.pxi":457
  *     if c_node._private is not NULL:
  *         proxy = getProxy(c_node)
  *         if proxy is not None:             # <<<<<<<<<<<<<<
@@ -16975,7 +17081,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":450
+      /* "src/lxml/proxy.pxi":458
  *         proxy = getProxy(c_node)
  *         if proxy is not None:
  *             if proxy._doc is not doc:             # <<<<<<<<<<<<<<
@@ -16986,7 +17092,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
       __pyx_t_1 = (__pyx_t_3 != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/proxy.pxi":451
+        /* "src/lxml/proxy.pxi":459
  *         if proxy is not None:
  *             if proxy._doc is not doc:
  *                 proxy._doc = doc             # <<<<<<<<<<<<<<
@@ -16999,7 +17105,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
         __Pyx_DECREF(((PyObject *)__pyx_v_proxy->_doc));
         __pyx_v_proxy->_doc = __pyx_v_doc;
 
-        /* "src/lxml/proxy.pxi":450
+        /* "src/lxml/proxy.pxi":458
  *         proxy = getProxy(c_node)
  *         if proxy is not None:
  *             if proxy._doc is not doc:             # <<<<<<<<<<<<<<
@@ -17008,7 +17114,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
       }
 
-      /* "src/lxml/proxy.pxi":452
+      /* "src/lxml/proxy.pxi":460
  *             if proxy._doc is not doc:
  *                 proxy._doc = doc
  *             proxy_count -= 1             # <<<<<<<<<<<<<<
@@ -17017,7 +17123,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
       __pyx_v_proxy_count = (__pyx_v_proxy_count - 1);
 
-      /* "src/lxml/proxy.pxi":453
+      /* "src/lxml/proxy.pxi":461
  *                 proxy._doc = doc
  *             proxy_count -= 1
  *             if proxy_count == 0:             # <<<<<<<<<<<<<<
@@ -17027,7 +17133,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
       __pyx_t_1 = ((__pyx_v_proxy_count == 0) != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/proxy.pxi":454
+        /* "src/lxml/proxy.pxi":462
  *             proxy_count -= 1
  *             if proxy_count == 0:
  *                 return             # <<<<<<<<<<<<<<
@@ -17036,7 +17142,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
         goto __pyx_L0;
 
-        /* "src/lxml/proxy.pxi":453
+        /* "src/lxml/proxy.pxi":461
  *                 proxy._doc = doc
  *             proxy_count -= 1
  *             if proxy_count == 0:             # <<<<<<<<<<<<<<
@@ -17045,7 +17151,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
       }
 
-      /* "src/lxml/proxy.pxi":449
+      /* "src/lxml/proxy.pxi":457
  *     if c_node._private is not NULL:
  *         proxy = getProxy(c_node)
  *         if proxy is not None:             # <<<<<<<<<<<<<<
@@ -17054,7 +17160,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
     }
 
-    /* "src/lxml/proxy.pxi":447
+    /* "src/lxml/proxy.pxi":455
  *     cdef _Element proxy = None # init-to-None required due to fake-loop below
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node._private is not NULL:             # <<<<<<<<<<<<<<
@@ -17063,7 +17169,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
   }
 
-  /* "src/lxml/proxy.pxi":455
+  /* "src/lxml/proxy.pxi":463
  *             if proxy_count == 0:
  *                 return
  *     tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -17072,7 +17178,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
  */
   END_FOR_EACH_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/proxy.pxi":442
+  /* "src/lxml/proxy.pxi":450
  * 
  * 
  * cdef void fixElementDocument(xmlNode* c_element, _Document doc,             # <<<<<<<<<<<<<<
@@ -17090,7 +17196,7 @@ static void __pyx_f_4lxml_5etree_fixElementDocument(xmlNode *__pyx_v_c_element,
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/proxy.pxi":458
+/* "src/lxml/proxy.pxi":466
  * 
  * 
  * cdef void fixThreadDictNames(xmlNode* c_element,             # <<<<<<<<<<<<<<
@@ -17102,7 +17208,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
   int __pyx_t_1;
   xmlNode *__pyx_t_2;
 
-  /* "src/lxml/proxy.pxi":465
+  /* "src/lxml/proxy.pxi":473
  *     # this should only be called when the element is based on a
  *     # different libxml2 tag name dictionary
  *     if c_element.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
@@ -17113,7 +17219,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
     case XML_DOCUMENT_NODE:
     case XML_HTML_DOCUMENT_NODE:
 
-    /* "src/lxml/proxy.pxi":466
+    /* "src/lxml/proxy.pxi":474
  *     # different libxml2 tag name dictionary
  *     if c_element.type == tree.XML_DOCUMENT_NODE or \
  *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:             # <<<<<<<<<<<<<<
@@ -17122,7 +17228,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
     __pyx_t_1 = 1;
 
-    /* "src/lxml/proxy.pxi":465
+    /* "src/lxml/proxy.pxi":473
  *     # this should only be called when the element is based on a
  *     # different libxml2 tag name dictionary
  *     if c_element.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
@@ -17136,7 +17242,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
   }
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":468
+    /* "src/lxml/proxy.pxi":476
  *             c_element.type == tree.XML_HTML_DOCUMENT_NODE:
  *         # may define "xml" namespace
  *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17145,7 +17251,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
     __pyx_f_4lxml_5etree_fixThreadDictNsForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":469
+    /* "src/lxml/proxy.pxi":477
  *         # may define "xml" namespace
  *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
  *         if c_element.doc.extSubset:             # <<<<<<<<<<<<<<
@@ -17155,7 +17261,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
     __pyx_t_1 = (__pyx_v_c_element->doc->extSubset != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/proxy.pxi":470
+      /* "src/lxml/proxy.pxi":478
  *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
  *         if c_element.doc.extSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17164,7 +17270,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
       __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(__pyx_v_c_element->doc->extSubset, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":469
+      /* "src/lxml/proxy.pxi":477
  *         # may define "xml" namespace
  *         fixThreadDictNsForNode(c_element, c_src_dict, c_dict)
  *         if c_element.doc.extSubset:             # <<<<<<<<<<<<<<
@@ -17173,7 +17279,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
     }
 
-    /* "src/lxml/proxy.pxi":471
+    /* "src/lxml/proxy.pxi":479
  *         if c_element.doc.extSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)
  *         if c_element.doc.intSubset:             # <<<<<<<<<<<<<<
@@ -17183,7 +17289,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
     __pyx_t_1 = (__pyx_v_c_element->doc->intSubset != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/proxy.pxi":472
+      /* "src/lxml/proxy.pxi":480
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)
  *         if c_element.doc.intSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.intSubset, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17192,7 +17298,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
       __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(__pyx_v_c_element->doc->intSubset, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":471
+      /* "src/lxml/proxy.pxi":479
  *         if c_element.doc.extSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.extSubset, c_src_dict, c_dict)
  *         if c_element.doc.intSubset:             # <<<<<<<<<<<<<<
@@ -17201,7 +17307,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
     }
 
-    /* "src/lxml/proxy.pxi":473
+    /* "src/lxml/proxy.pxi":481
  *         if c_element.doc.intSubset:
  *             fixThreadDictNamesForDtd(c_element.doc.intSubset, c_src_dict, c_dict)
  *         c_element = c_element.children             # <<<<<<<<<<<<<<
@@ -17211,7 +17317,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
     __pyx_t_2 = __pyx_v_c_element->children;
     __pyx_v_c_element = __pyx_t_2;
 
-    /* "src/lxml/proxy.pxi":474
+    /* "src/lxml/proxy.pxi":482
  *             fixThreadDictNamesForDtd(c_element.doc.intSubset, c_src_dict, c_dict)
  *         c_element = c_element.children
  *         while c_element is not NULL:             # <<<<<<<<<<<<<<
@@ -17222,7 +17328,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
       __pyx_t_1 = ((__pyx_v_c_element != NULL) != 0);
       if (!__pyx_t_1) break;
 
-      /* "src/lxml/proxy.pxi":475
+      /* "src/lxml/proxy.pxi":483
  *         c_element = c_element.children
  *         while c_element is not NULL:
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17231,7 +17337,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
       __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":476
+      /* "src/lxml/proxy.pxi":484
  *         while c_element is not NULL:
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  *             c_element = c_element.next             # <<<<<<<<<<<<<<
@@ -17242,7 +17348,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
       __pyx_v_c_element = __pyx_t_2;
     }
 
-    /* "src/lxml/proxy.pxi":465
+    /* "src/lxml/proxy.pxi":473
  *     # this should only be called when the element is based on a
  *     # different libxml2 tag name dictionary
  *     if c_element.type == tree.XML_DOCUMENT_NODE or \             # <<<<<<<<<<<<<<
@@ -17252,7 +17358,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
     goto __pyx_L3;
   }
 
-  /* "src/lxml/proxy.pxi":477
+  /* "src/lxml/proxy.pxi":485
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  *             c_element = c_element.next
  *     elif tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
@@ -17262,7 +17368,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
   __pyx_t_1 = (_isElementOrXInclude(__pyx_v_c_element) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":478
+    /* "src/lxml/proxy.pxi":486
  *             c_element = c_element.next
  *     elif tree._isElementOrXInclude(c_element):
  *         fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17271,7 +17377,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
  */
     __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(__pyx_v_c_element, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":477
+    /* "src/lxml/proxy.pxi":485
  *             fixThreadDictNamesForNode(c_element, c_src_dict, c_dict)
  *             c_element = c_element.next
  *     elif tree._isElementOrXInclude(c_element):             # <<<<<<<<<<<<<<
@@ -17281,7 +17387,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
   }
   __pyx_L3:;
 
-  /* "src/lxml/proxy.pxi":458
+  /* "src/lxml/proxy.pxi":466
  * 
  * 
  * cdef void fixThreadDictNames(xmlNode* c_element,             # <<<<<<<<<<<<<<
@@ -17292,7 +17398,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNames(xmlNode *__pyx_v_c_element,
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":481
+/* "src/lxml/proxy.pxi":489
  * 
  * 
  * cdef inline void _fixThreadDictPtr(const_xmlChar** c_ptr,             # <<<<<<<<<<<<<<
@@ -17305,7 +17411,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
   int __pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/proxy.pxi":484
+  /* "src/lxml/proxy.pxi":492
  *                                    tree.xmlDict* c_src_dict,
  *                                    tree.xmlDict* c_dict) nogil:
  *     c_str = c_ptr[0]             # <<<<<<<<<<<<<<
@@ -17314,7 +17420,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
   __pyx_v_c_str = (__pyx_v_c_ptr[0]);
 
-  /* "src/lxml/proxy.pxi":485
+  /* "src/lxml/proxy.pxi":493
  *                                    tree.xmlDict* c_dict) nogil:
  *     c_str = c_ptr[0]
  *     if c_str and c_src_dict and tree.xmlDictOwns(c_src_dict, c_str):             # <<<<<<<<<<<<<<
@@ -17338,7 +17444,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":487
+    /* "src/lxml/proxy.pxi":495
  *     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
  *         c_str = tree.xmlDictLookup(c_dict, c_str, -1)             # <<<<<<<<<<<<<<
@@ -17347,7 +17453,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
     __pyx_v_c_str = xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_str, -1);
 
-    /* "src/lxml/proxy.pxi":488
+    /* "src/lxml/proxy.pxi":496
  *         # return value can be NULL on memory error, but we don't handle that here
  *         c_str = tree.xmlDictLookup(c_dict, c_str, -1)
  *         if c_str:             # <<<<<<<<<<<<<<
@@ -17357,7 +17463,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
     __pyx_t_1 = (__pyx_v_c_str != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/proxy.pxi":489
+      /* "src/lxml/proxy.pxi":497
  *         c_str = tree.xmlDictLookup(c_dict, c_str, -1)
  *         if c_str:
  *             c_ptr[0] = c_str             # <<<<<<<<<<<<<<
@@ -17366,7 +17472,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
       (__pyx_v_c_ptr[0]) = __pyx_v_c_str;
 
-      /* "src/lxml/proxy.pxi":488
+      /* "src/lxml/proxy.pxi":496
  *         # return value can be NULL on memory error, but we don't handle that here
  *         c_str = tree.xmlDictLookup(c_dict, c_str, -1)
  *         if c_str:             # <<<<<<<<<<<<<<
@@ -17375,7 +17481,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
     }
 
-    /* "src/lxml/proxy.pxi":485
+    /* "src/lxml/proxy.pxi":493
  *                                    tree.xmlDict* c_dict) nogil:
  *     c_str = c_ptr[0]
  *     if c_str and c_src_dict and tree.xmlDictOwns(c_src_dict, c_str):             # <<<<<<<<<<<<<<
@@ -17384,7 +17490,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
  */
   }
 
-  /* "src/lxml/proxy.pxi":481
+  /* "src/lxml/proxy.pxi":489
  * 
  * 
  * cdef inline void _fixThreadDictPtr(const_xmlChar** c_ptr,             # <<<<<<<<<<<<<<
@@ -17395,7 +17501,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree__fixThreadDictPtr(const xmlChar *
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":492
+/* "src/lxml/proxy.pxi":500
  * 
  * 
  * cdef void fixThreadDictNamesForNode(xmlNode* c_element,             # <<<<<<<<<<<<<<
@@ -17406,7 +17512,7 @@ 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;
 
-  /* "src/lxml/proxy.pxi":495
+  /* "src/lxml/proxy.pxi":503
  *                                     tree.xmlDict* c_src_dict,
  *                                     tree.xmlDict* c_dict) nogil:
  *     cdef xmlNode* c_node = c_element             # <<<<<<<<<<<<<<
@@ -17415,7 +17521,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
   __pyx_v_c_node = __pyx_v_c_element;
 
-  /* "src/lxml/proxy.pxi":496
+  /* "src/lxml/proxy.pxi":504
  *                                     tree.xmlDict* c_dict) nogil:
  *     cdef xmlNode* c_node = c_element
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)             # <<<<<<<<<<<<<<
@@ -17424,7 +17530,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
   BEGIN_FOR_EACH_FROM(__pyx_v_c_element, __pyx_v_c_node, 1);
 
-  /* "src/lxml/proxy.pxi":497
+  /* "src/lxml/proxy.pxi":505
  *     cdef xmlNode* c_node = c_element
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node.type in (tree.XML_ELEMENT_NODE, tree.XML_XINCLUDE_START):             # <<<<<<<<<<<<<<
@@ -17435,7 +17541,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
     case XML_ELEMENT_NODE:
     case XML_XINCLUDE_START:
 
-    /* "src/lxml/proxy.pxi":498
+    /* "src/lxml/proxy.pxi":506
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node.type in (tree.XML_ELEMENT_NODE, tree.XML_XINCLUDE_START):
  *         fixThreadDictNamesForAttributes(             # <<<<<<<<<<<<<<
@@ -17444,7 +17550,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
     __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(__pyx_v_c_node->properties, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":500
+    /* "src/lxml/proxy.pxi":508
  *         fixThreadDictNamesForAttributes(
  *             c_node.properties, c_src_dict, c_dict)
  *         fixThreadDictNsForNode(c_node, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17453,7 +17559,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
     __pyx_f_4lxml_5etree_fixThreadDictNsForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":501
+    /* "src/lxml/proxy.pxi":509
  *             c_node.properties, c_src_dict, c_dict)
  *         fixThreadDictNsForNode(c_node, c_src_dict, c_dict)
  *         _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17462,7 +17568,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_node->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":497
+    /* "src/lxml/proxy.pxi":505
  *     cdef xmlNode* c_node = c_element
  *     tree.BEGIN_FOR_EACH_FROM(c_element, c_node, 1)
  *     if c_node.type in (tree.XML_ELEMENT_NODE, tree.XML_XINCLUDE_START):             # <<<<<<<<<<<<<<
@@ -17472,7 +17578,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
     break;
     case XML_TEXT_NODE:
 
-    /* "src/lxml/proxy.pxi":504
+    /* "src/lxml/proxy.pxi":512
  *     elif c_node.type == tree.XML_TEXT_NODE:
  *         # libxml2's SAX2 parser interns some indentation space
  *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17481,7 +17587,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
     __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_node, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":502
+    /* "src/lxml/proxy.pxi":510
  *         fixThreadDictNsForNode(c_node, c_src_dict, c_dict)
  *         _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  *     elif c_node.type == tree.XML_TEXT_NODE:             # <<<<<<<<<<<<<<
@@ -17491,7 +17597,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
     break;
     case XML_COMMENT_NODE:
 
-    /* "src/lxml/proxy.pxi":505
+    /* "src/lxml/proxy.pxi":513
  *         # libxml2's SAX2 parser interns some indentation space
  *         fixThreadDictContentForNode(c_node, c_src_dict, c_dict)
  *     elif c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
@@ -17501,7 +17607,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
     break;
     default:
 
-    /* "src/lxml/proxy.pxi":508
+    /* "src/lxml/proxy.pxi":516
  *         pass  # don't touch c_node.name
  *     else:
  *         _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17512,7 +17618,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
     break;
   }
 
-  /* "src/lxml/proxy.pxi":509
+  /* "src/lxml/proxy.pxi":517
  *     else:
  *         _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  *     tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -17521,7 +17627,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
  */
   END_FOR_EACH_FROM(__pyx_v_c_node);
 
-  /* "src/lxml/proxy.pxi":492
+  /* "src/lxml/proxy.pxi":500
  * 
  * 
  * cdef void fixThreadDictNamesForNode(xmlNode* c_element,             # <<<<<<<<<<<<<<
@@ -17532,7 +17638,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForNode(xmlNode *__pyx_v_c_el
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":512
+/* "src/lxml/proxy.pxi":520
  * 
  * 
  * cdef inline void fixThreadDictNamesForAttributes(tree.xmlAttr* c_attr,             # <<<<<<<<<<<<<<
@@ -17547,7 +17653,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
   int __pyx_t_2;
   xmlNode *__pyx_t_3;
 
-  /* "src/lxml/proxy.pxi":516
+  /* "src/lxml/proxy.pxi":524
  *                                                  tree.xmlDict* c_dict) nogil:
  *     cdef xmlNode* c_child
  *     cdef xmlNode* c_node = <xmlNode*>c_attr             # <<<<<<<<<<<<<<
@@ -17556,7 +17662,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
   __pyx_v_c_node = ((xmlNode *)__pyx_v_c_attr);
 
-  /* "src/lxml/proxy.pxi":517
+  /* "src/lxml/proxy.pxi":525
  *     cdef xmlNode* c_child
  *     cdef xmlNode* c_node = <xmlNode*>c_attr
  *     while c_node is not NULL:             # <<<<<<<<<<<<<<
@@ -17567,7 +17673,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
     __pyx_t_1 = ((__pyx_v_c_node != NULL) != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/proxy.pxi":518
+    /* "src/lxml/proxy.pxi":526
  *     cdef xmlNode* c_node = <xmlNode*>c_attr
  *     while c_node is not NULL:
  *         if c_node.type not in (tree.XML_TEXT_NODE, tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
@@ -17586,7 +17692,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/proxy.pxi":519
+      /* "src/lxml/proxy.pxi":527
  *     while c_node is not NULL:
  *         if c_node.type not in (tree.XML_TEXT_NODE, tree.XML_COMMENT_NODE):
  *             _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17595,7 +17701,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_node->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":518
+      /* "src/lxml/proxy.pxi":526
  *     cdef xmlNode* c_node = <xmlNode*>c_attr
  *     while c_node is not NULL:
  *         if c_node.type not in (tree.XML_TEXT_NODE, tree.XML_COMMENT_NODE):             # <<<<<<<<<<<<<<
@@ -17604,7 +17710,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
     }
 
-    /* "src/lxml/proxy.pxi":521
+    /* "src/lxml/proxy.pxi":529
  *             _fixThreadDictPtr(&c_node.name, c_src_dict, c_dict)
  *         # libxml2 keeps some (!) attribute values in the dict
  *         c_child = c_node.children             # <<<<<<<<<<<<<<
@@ -17614,7 +17720,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
     __pyx_t_3 = __pyx_v_c_node->children;
     __pyx_v_c_child = __pyx_t_3;
 
-    /* "src/lxml/proxy.pxi":522
+    /* "src/lxml/proxy.pxi":530
  *         # libxml2 keeps some (!) attribute values in the dict
  *         c_child = c_node.children
  *         while c_child is not NULL:             # <<<<<<<<<<<<<<
@@ -17625,7 +17731,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
       __pyx_t_2 = ((__pyx_v_c_child != NULL) != 0);
       if (!__pyx_t_2) break;
 
-      /* "src/lxml/proxy.pxi":523
+      /* "src/lxml/proxy.pxi":531
  *         c_child = c_node.children
  *         while c_child is not NULL:
  *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17634,7 +17740,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
  */
       __pyx_f_4lxml_5etree_fixThreadDictContentForNode(__pyx_v_c_child, __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":524
+      /* "src/lxml/proxy.pxi":532
  *         while c_child is not NULL:
  *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
  *             c_child = c_child.next             # <<<<<<<<<<<<<<
@@ -17645,7 +17751,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
       __pyx_v_c_child = __pyx_t_3;
     }
 
-    /* "src/lxml/proxy.pxi":525
+    /* "src/lxml/proxy.pxi":533
  *             fixThreadDictContentForNode(c_child, c_src_dict, c_dict)
  *             c_child = c_child.next
  *         c_node = c_node.next             # <<<<<<<<<<<<<<
@@ -17656,7 +17762,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
     __pyx_v_c_node = __pyx_t_3;
   }
 
-  /* "src/lxml/proxy.pxi":512
+  /* "src/lxml/proxy.pxi":520
  * 
  * 
  * cdef inline void fixThreadDictNamesForAttributes(tree.xmlAttr* c_attr,             # <<<<<<<<<<<<<<
@@ -17667,7 +17773,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNamesForAttributes(x
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":528
+/* "src/lxml/proxy.pxi":536
  * 
  * 
  * cdef inline void fixThreadDictContentForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -17679,7 +17785,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
   int __pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/proxy.pxi":531
+  /* "src/lxml/proxy.pxi":539
  *                                              tree.xmlDict* c_src_dict,
  *                                              tree.xmlDict* c_dict) nogil:
  *     if c_node.content is not NULL and \             # <<<<<<<<<<<<<<
@@ -17693,7 +17799,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "src/lxml/proxy.pxi":532
+  /* "src/lxml/proxy.pxi":540
  *                                              tree.xmlDict* c_dict) nogil:
  *     if c_node.content is not NULL and \
  *            c_node.content is not <xmlChar*>&c_node.properties:             # <<<<<<<<<<<<<<
@@ -17704,7 +17810,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
   __pyx_t_1 = __pyx_t_2;
   __pyx_L4_bool_binop_done:;
 
-  /* "src/lxml/proxy.pxi":531
+  /* "src/lxml/proxy.pxi":539
  *                                              tree.xmlDict* c_src_dict,
  *                                              tree.xmlDict* c_dict) nogil:
  *     if c_node.content is not NULL and \             # <<<<<<<<<<<<<<
@@ -17713,7 +17819,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  */
   if (__pyx_t_1) {
 
-    /* "src/lxml/proxy.pxi":533
+    /* "src/lxml/proxy.pxi":541
  *     if c_node.content is not NULL and \
  *            c_node.content is not <xmlChar*>&c_node.properties:
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):             # <<<<<<<<<<<<<<
@@ -17723,7 +17829,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
     __pyx_t_1 = (xmlDictOwns(__pyx_v_c_src_dict, __pyx_v_c_node->content) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/proxy.pxi":535
+      /* "src/lxml/proxy.pxi":543
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):
  *             # 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)             # <<<<<<<<<<<<<<
@@ -17732,7 +17838,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  */
       __pyx_v_c_node->content = ((xmlChar *)xmlDictLookup(__pyx_v_c_dict, __pyx_v_c_node->content, -1));
 
-      /* "src/lxml/proxy.pxi":533
+      /* "src/lxml/proxy.pxi":541
  *     if c_node.content is not NULL and \
  *            c_node.content is not <xmlChar*>&c_node.properties:
  *         if tree.xmlDictOwns(c_src_dict, c_node.content):             # <<<<<<<<<<<<<<
@@ -17741,7 +17847,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  */
     }
 
-    /* "src/lxml/proxy.pxi":531
+    /* "src/lxml/proxy.pxi":539
  *                                              tree.xmlDict* c_src_dict,
  *                                              tree.xmlDict* c_dict) nogil:
  *     if c_node.content is not NULL and \             # <<<<<<<<<<<<<<
@@ -17750,7 +17856,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
  */
   }
 
-  /* "src/lxml/proxy.pxi":528
+  /* "src/lxml/proxy.pxi":536
  * 
  * 
  * cdef inline void fixThreadDictContentForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -17761,7 +17867,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictContentForNode(xmlNo
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":538
+/* "src/lxml/proxy.pxi":546
  * 
  * 
  * cdef inline void fixThreadDictNsForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -17774,7 +17880,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
   xmlNs *__pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/proxy.pxi":541
+  /* "src/lxml/proxy.pxi":549
  *                                         tree.xmlDict* c_src_dict,
  *                                         tree.xmlDict* c_dict) nogil:
  *     cdef xmlNs* c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
@@ -17784,7 +17890,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
   __pyx_t_1 = __pyx_v_c_node->nsDef;
   __pyx_v_c_ns = __pyx_t_1;
 
-  /* "src/lxml/proxy.pxi":542
+  /* "src/lxml/proxy.pxi":550
  *                                         tree.xmlDict* c_dict) nogil:
  *     cdef xmlNs* c_ns = c_node.nsDef
  *     while c_ns is not NULL:             # <<<<<<<<<<<<<<
@@ -17795,7 +17901,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
     __pyx_t_2 = ((__pyx_v_c_ns != NULL) != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/proxy.pxi":543
+    /* "src/lxml/proxy.pxi":551
  *     cdef xmlNs* c_ns = c_node.nsDef
  *     while c_ns is not NULL:
  *         _fixThreadDictPtr(&c_ns.href, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17804,7 +17910,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  */
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_ns->href), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":544
+    /* "src/lxml/proxy.pxi":552
  *     while c_ns is not NULL:
  *         _fixThreadDictPtr(&c_ns.href, c_src_dict, c_dict)
  *         _fixThreadDictPtr(&c_ns.prefix, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17813,7 +17919,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
  */
     __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_ns->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-    /* "src/lxml/proxy.pxi":545
+    /* "src/lxml/proxy.pxi":553
  *         _fixThreadDictPtr(&c_ns.href, c_src_dict, c_dict)
  *         _fixThreadDictPtr(&c_ns.prefix, c_src_dict, c_dict)
  *         c_ns = c_ns.next             # <<<<<<<<<<<<<<
@@ -17824,7 +17930,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
     __pyx_v_c_ns = __pyx_t_1;
   }
 
-  /* "src/lxml/proxy.pxi":538
+  /* "src/lxml/proxy.pxi":546
  * 
  * 
  * cdef inline void fixThreadDictNsForNode(xmlNode* c_node,             # <<<<<<<<<<<<<<
@@ -17835,7 +17941,7 @@ static CYTHON_INLINE void __pyx_f_4lxml_5etree_fixThreadDictNsForNode(xmlNode *_
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":548
+/* "src/lxml/proxy.pxi":556
  * 
  * 
  * cdef void fixThreadDictNamesForDtd(tree.xmlDtd* c_dtd,             # <<<<<<<<<<<<<<
@@ -17852,7 +17958,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
   int __pyx_t_2;
   xmlAttribute *__pyx_t_3;
 
-  /* "src/lxml/proxy.pxi":556
+  /* "src/lxml/proxy.pxi":564
  *     cdef tree.xmlEntity* c_entity
  * 
  *     c_node = c_dtd.children             # <<<<<<<<<<<<<<
@@ -17862,7 +17968,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
   __pyx_t_1 = __pyx_v_c_dtd->children;
   __pyx_v_c_node = __pyx_t_1;
 
-  /* "src/lxml/proxy.pxi":557
+  /* "src/lxml/proxy.pxi":565
  * 
  *     c_node = c_dtd.children
  *     while c_node:             # <<<<<<<<<<<<<<
@@ -17873,7 +17979,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
     __pyx_t_2 = (__pyx_v_c_node != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/proxy.pxi":558
+    /* "src/lxml/proxy.pxi":566
  *     c_node = c_dtd.children
  *     while c_node:
  *         if c_node.type == tree.XML_ELEMENT_DECL:             # <<<<<<<<<<<<<<
@@ -17883,7 +17989,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
     switch (__pyx_v_c_node->type) {
       case XML_ELEMENT_DECL:
 
-      /* "src/lxml/proxy.pxi":559
+      /* "src/lxml/proxy.pxi":567
  *     while c_node:
  *         if c_node.type == tree.XML_ELEMENT_DECL:
  *             c_element = <tree.xmlElement*>c_node             # <<<<<<<<<<<<<<
@@ -17892,7 +17998,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __pyx_v_c_element = ((xmlElement *)__pyx_v_c_node);
 
-      /* "src/lxml/proxy.pxi":560
+      /* "src/lxml/proxy.pxi":568
  *         if c_node.type == tree.XML_ELEMENT_DECL:
  *             c_element = <tree.xmlElement*>c_node
  *             if c_element.content:             # <<<<<<<<<<<<<<
@@ -17902,7 +18008,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
       __pyx_t_2 = (__pyx_v_c_element->content != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/proxy.pxi":561
+        /* "src/lxml/proxy.pxi":569
  *             c_element = <tree.xmlElement*>c_node
  *             if c_element.content:
  *                 _fixThreadDictPtr(&c_element.content.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17911,7 +18017,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_element->content->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":562
+        /* "src/lxml/proxy.pxi":570
  *             if c_element.content:
  *                 _fixThreadDictPtr(&c_element.content.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_element.content.prefix, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17920,7 +18026,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_element->content->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":560
+        /* "src/lxml/proxy.pxi":568
  *         if c_node.type == tree.XML_ELEMENT_DECL:
  *             c_element = <tree.xmlElement*>c_node
  *             if c_element.content:             # <<<<<<<<<<<<<<
@@ -17929,7 +18035,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       }
 
-      /* "src/lxml/proxy.pxi":563
+      /* "src/lxml/proxy.pxi":571
  *                 _fixThreadDictPtr(&c_element.content.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_element.content.prefix, c_src_dict, c_dict)
  *             c_attribute = c_element.attributes             # <<<<<<<<<<<<<<
@@ -17939,7 +18045,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
       __pyx_t_3 = __pyx_v_c_element->attributes;
       __pyx_v_c_attribute = __pyx_t_3;
 
-      /* "src/lxml/proxy.pxi":564
+      /* "src/lxml/proxy.pxi":572
  *                 _fixThreadDictPtr(&c_element.content.prefix, c_src_dict, c_dict)
  *             c_attribute = c_element.attributes
  *             while c_attribute:             # <<<<<<<<<<<<<<
@@ -17950,7 +18056,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
         __pyx_t_2 = (__pyx_v_c_attribute != 0);
         if (!__pyx_t_2) break;
 
-        /* "src/lxml/proxy.pxi":565
+        /* "src/lxml/proxy.pxi":573
  *             c_attribute = c_element.attributes
  *             while c_attribute:
  *                 _fixThreadDictPtr(&c_attribute.defaultValue, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17959,7 +18065,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->defaultValue), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":566
+        /* "src/lxml/proxy.pxi":574
  *             while c_attribute:
  *                 _fixThreadDictPtr(&c_attribute.defaultValue, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17968,7 +18074,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":567
+        /* "src/lxml/proxy.pxi":575
  *                 _fixThreadDictPtr(&c_attribute.defaultValue, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.prefix, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17977,7 +18083,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->prefix), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":568
+        /* "src/lxml/proxy.pxi":576
  *                 _fixThreadDictPtr(&c_attribute.name, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.prefix, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.elem, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -17986,7 +18092,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
         __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_attribute->elem), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-        /* "src/lxml/proxy.pxi":569
+        /* "src/lxml/proxy.pxi":577
  *                 _fixThreadDictPtr(&c_attribute.prefix, c_src_dict, c_dict)
  *                 _fixThreadDictPtr(&c_attribute.elem, c_src_dict, c_dict)
  *                 c_attribute = c_attribute.nexth             # <<<<<<<<<<<<<<
@@ -17997,7 +18103,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
         __pyx_v_c_attribute = __pyx_t_3;
       }
 
-      /* "src/lxml/proxy.pxi":558
+      /* "src/lxml/proxy.pxi":566
  *     c_node = c_dtd.children
  *     while c_node:
  *         if c_node.type == tree.XML_ELEMENT_DECL:             # <<<<<<<<<<<<<<
@@ -18007,7 +18113,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
       break;
       case XML_ENTITY_DECL:
 
-      /* "src/lxml/proxy.pxi":571
+      /* "src/lxml/proxy.pxi":579
  *                 c_attribute = c_attribute.nexth
  *         elif c_node.type == tree.XML_ENTITY_DECL:
  *             c_entity = <tree.xmlEntity*>c_node             # <<<<<<<<<<<<<<
@@ -18016,7 +18122,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __pyx_v_c_entity = ((xmlEntity *)__pyx_v_c_node);
 
-      /* "src/lxml/proxy.pxi":572
+      /* "src/lxml/proxy.pxi":580
  *         elif c_node.type == tree.XML_ENTITY_DECL:
  *             c_entity = <tree.xmlEntity*>c_node
  *             _fixThreadDictPtr(&c_entity.name, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -18025,7 +18131,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->name), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":573
+      /* "src/lxml/proxy.pxi":581
  *             c_entity = <tree.xmlEntity*>c_node
  *             _fixThreadDictPtr(&c_entity.name, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.ExternalID, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -18034,7 +18140,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->ExternalID), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":574
+      /* "src/lxml/proxy.pxi":582
  *             _fixThreadDictPtr(&c_entity.name, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.ExternalID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.SystemID, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -18043,7 +18149,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __pyx_f_4lxml_5etree__fixThreadDictPtr((&__pyx_v_c_entity->SystemID), __pyx_v_c_src_dict, __pyx_v_c_dict);
 
-      /* "src/lxml/proxy.pxi":575
+      /* "src/lxml/proxy.pxi":583
  *             _fixThreadDictPtr(&c_entity.ExternalID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(&c_entity.SystemID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(<const_xmlChar**>&c_entity.content, c_src_dict, c_dict)             # <<<<<<<<<<<<<<
@@ -18052,7 +18158,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
  */
       __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":570
+      /* "src/lxml/proxy.pxi":578
  *                 _fixThreadDictPtr(&c_attribute.elem, c_src_dict, c_dict)
  *                 c_attribute = c_attribute.nexth
  *         elif c_node.type == tree.XML_ENTITY_DECL:             # <<<<<<<<<<<<<<
@@ -18063,7 +18169,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
       default: break;
     }
 
-    /* "src/lxml/proxy.pxi":576
+    /* "src/lxml/proxy.pxi":584
  *             _fixThreadDictPtr(&c_entity.SystemID, c_src_dict, c_dict)
  *             _fixThreadDictPtr(<const_xmlChar**>&c_entity.content, c_src_dict, c_dict)
  *         c_node = c_node.next             # <<<<<<<<<<<<<<
@@ -18074,7 +18180,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
     __pyx_v_c_node = __pyx_t_1;
   }
 
-  /* "src/lxml/proxy.pxi":548
+  /* "src/lxml/proxy.pxi":556
  * 
  * 
  * cdef void fixThreadDictNamesForDtd(tree.xmlDtd* c_dtd,             # <<<<<<<<<<<<<<
@@ -18085,7 +18191,7 @@ static void __pyx_f_4lxml_5etree_fixThreadDictNamesForDtd(xmlDtd *__pyx_v_c_dtd,
   /* function exit code */
 }
 
-/* "src/lxml/proxy.pxi":582
+/* "src/lxml/proxy.pxi":590
  * # adopt an xmlDoc from an external libxml2 document source
  * 
  * cdef _Document _adoptForeignDoc(xmlDoc* c_doc, _BaseParser parser=None, bint is_owned=True):             # <<<<<<<<<<<<<<
@@ -18115,7 +18221,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
     }
   }
 
-  /* "src/lxml/proxy.pxi":587
+  /* "src/lxml/proxy.pxi":595
  *     dereference into lxml proxy objects.
  *     """
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -18125,20 +18231,20 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/proxy.pxi":588
+    /* "src/lxml/proxy.pxi":596
  *     """
  *     if c_doc is NULL:
  *         raise ValueError("Illegal document provided: NULL")             # <<<<<<<<<<<<<<
  *     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__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 588, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__9, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 596, __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;
-    __PYX_ERR(4, 588, __pyx_L1_error)
+    __PYX_ERR(4, 596, __pyx_L1_error)
 
-    /* "src/lxml/proxy.pxi":587
+    /* "src/lxml/proxy.pxi":595
  *     dereference into lxml proxy objects.
  *     """
  *     if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -18147,7 +18253,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
   }
 
-  /* "src/lxml/proxy.pxi":589
+  /* "src/lxml/proxy.pxi":597
  *     if c_doc is NULL:
  *         raise ValueError("Illegal document provided: NULL")
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):             # <<<<<<<<<<<<<<
@@ -18166,7 +18272,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":590
+    /* "src/lxml/proxy.pxi":598
  *         raise ValueError("Illegal document provided: NULL")
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type             # <<<<<<<<<<<<<<
@@ -18176,7 +18282,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
     __pyx_t_4 = __pyx_v_c_doc->type;
     __pyx_v_doc_type = __pyx_t_4;
 
-    /* "src/lxml/proxy.pxi":591
+    /* "src/lxml/proxy.pxi":599
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type
  *         if is_owned:             # <<<<<<<<<<<<<<
@@ -18186,7 +18292,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
     __pyx_t_3 = (__pyx_v_is_owned != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/proxy.pxi":592
+      /* "src/lxml/proxy.pxi":600
  *         doc_type = c_doc.type
  *         if is_owned:
  *             tree.xmlFreeDoc(c_doc)             # <<<<<<<<<<<<<<
@@ -18195,7 +18301,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
       xmlFreeDoc(__pyx_v_c_doc);
 
-      /* "src/lxml/proxy.pxi":591
+      /* "src/lxml/proxy.pxi":599
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type
  *         if is_owned:             # <<<<<<<<<<<<<<
@@ -18204,26 +18310,26 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
     }
 
-    /* "src/lxml/proxy.pxi":593
+    /* "src/lxml/proxy.pxi":601
  *         if is_owned:
  *             tree.xmlFreeDoc(c_doc)
  *         raise ValueError(f"Illegal document provided: expected XML or HTML, found {doc_type}")             # <<<<<<<<<<<<<<
  * 
  *     cdef xmlNode* c_node = <xmlNode*>c_doc
  */
-    __pyx_t_2 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_doc_type, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 593, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_From_xmlElementType(__pyx_v_doc_type, 0, ' ', 'd'); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 601, __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, 593, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Illegal_document_provided_expect, __pyx_t_2); if (unlikely(!__pyx_t_5)) __PYX_ERR(4, 601, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 593, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_5); if (unlikely(!__pyx_t_2)) __PYX_ERR(4, 601, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_2, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __PYX_ERR(4, 593, __pyx_L1_error)
+    __PYX_ERR(4, 601, __pyx_L1_error)
 
-    /* "src/lxml/proxy.pxi":589
+    /* "src/lxml/proxy.pxi":597
  *     if c_doc is NULL:
  *         raise ValueError("Illegal document provided: NULL")
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):             # <<<<<<<<<<<<<<
@@ -18232,7 +18338,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
   }
 
-  /* "src/lxml/proxy.pxi":595
+  /* "src/lxml/proxy.pxi":603
  *         raise ValueError(f"Illegal document provided: expected XML or HTML, found {doc_type}")
  * 
  *     cdef xmlNode* c_node = <xmlNode*>c_doc             # <<<<<<<<<<<<<<
@@ -18241,7 +18347,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
   __pyx_v_c_node = ((xmlNode *)__pyx_v_c_doc);
 
-  /* "src/lxml/proxy.pxi":597
+  /* "src/lxml/proxy.pxi":605
  *     cdef xmlNode* c_node = <xmlNode*>c_doc
  * 
  *     if is_owned:             # <<<<<<<<<<<<<<
@@ -18251,7 +18357,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   __pyx_t_3 = (__pyx_v_is_owned != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/proxy.pxi":598
+    /* "src/lxml/proxy.pxi":606
  * 
  *     if is_owned:
  *         tree.BEGIN_FOR_EACH_FROM(<xmlNode*>c_doc, c_node, 1)             # <<<<<<<<<<<<<<
@@ -18260,7 +18366,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
     BEGIN_FOR_EACH_FROM(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node, 1);
 
-    /* "src/lxml/proxy.pxi":599
+    /* "src/lxml/proxy.pxi":607
  *     if is_owned:
  *         tree.BEGIN_FOR_EACH_FROM(<xmlNode*>c_doc, c_node, 1)
  *         c_node._private = NULL             # <<<<<<<<<<<<<<
@@ -18269,7 +18375,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
     __pyx_v_c_node->_private = NULL;
 
-    /* "src/lxml/proxy.pxi":600
+    /* "src/lxml/proxy.pxi":608
  *         tree.BEGIN_FOR_EACH_FROM(<xmlNode*>c_doc, c_node, 1)
  *         c_node._private = NULL
  *         tree.END_FOR_EACH_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -18278,7 +18384,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
  */
     END_FOR_EACH_FROM(__pyx_v_c_node);
 
-    /* "src/lxml/proxy.pxi":597
+    /* "src/lxml/proxy.pxi":605
  *     cdef xmlNode* c_node = <xmlNode*>c_doc
  * 
  *     if is_owned:             # <<<<<<<<<<<<<<
@@ -18288,7 +18394,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
     goto __pyx_L6;
   }
 
-  /* "src/lxml/proxy.pxi":603
+  /* "src/lxml/proxy.pxi":611
  *     else:
  *         # create a fresh copy that lxml owns
  *         c_doc = tree.xmlCopyDoc(c_doc, 1)             # <<<<<<<<<<<<<<
@@ -18298,7 +18404,7 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   /*else*/ {
     __pyx_v_c_doc = xmlCopyDoc(__pyx_v_c_doc, 1);
 
-    /* "src/lxml/proxy.pxi":604
+    /* "src/lxml/proxy.pxi":612
  *         # create a fresh copy that lxml owns
  *         c_doc = tree.xmlCopyDoc(c_doc, 1)
  *         if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -18308,16 +18414,16 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
     __pyx_t_3 = ((__pyx_v_c_doc == NULL) != 0);
     if (unlikely(__pyx_t_3)) {
 
-      /* "src/lxml/proxy.pxi":605
+      /* "src/lxml/proxy.pxi":613
  *         c_doc = tree.xmlCopyDoc(c_doc, 1)
  *         if c_doc is NULL:
  *             raise MemoryError()             # <<<<<<<<<<<<<<
  * 
  *     return _documentFactory(c_doc, parser)
  */
-      PyErr_NoMemory(); __PYX_ERR(4, 605, __pyx_L1_error)
+      PyErr_NoMemory(); __PYX_ERR(4, 613, __pyx_L1_error)
 
-      /* "src/lxml/proxy.pxi":604
+      /* "src/lxml/proxy.pxi":612
  *         # create a fresh copy that lxml owns
  *         c_doc = tree.xmlCopyDoc(c_doc, 1)
  *         if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -18328,19 +18434,19 @@ static struct LxmlDocument *__pyx_f_4lxml_5etree__adoptForeignDoc(xmlDoc *__pyx_
   }
   __pyx_L6:;
 
-  /* "src/lxml/proxy.pxi":607
+  /* "src/lxml/proxy.pxi":615
  *             raise MemoryError()
  * 
  *     return _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  */
   __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, 607, __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(4, 615, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/proxy.pxi":582
+  /* "src/lxml/proxy.pxi":590
  * # adopt an xmlDoc from an external libxml2 document source
  * 
  * cdef _Document _adoptForeignDoc(xmlDoc* c_doc, _BaseParser parser=None, bint is_owned=True):             # <<<<<<<<<<<<<<
@@ -31678,7 +31784,7 @@ static int __pyx_f_4lxml_5etree__replaceSlice(struct LxmlElement *__pyx_v_parent
  * 
  * 
  * cdef int _linkChild(xmlNode* c_parent, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
- *     """Simple version of 'xmlAddChild()' that does not deep-fix the document links.
+ *     """Adaptation of 'xmlAddChild()' that deep-fix the document links iteratively.
  *     """
  */
 
@@ -31690,7 +31796,7 @@ static int __pyx_f_4lxml_5etree__linkChild(xmlNode *__pyx_v_c_parent, xmlNode *_
   __Pyx_RefNannySetupContext("_linkChild", 0);
 
   /* "src/lxml/apihelpers.pxi":1274
- *     """Simple version of 'xmlAddChild()' that does not deep-fix the document links.
+ *     """Adaptation of 'xmlAddChild()' that deep-fix the document links iteratively.
  *     """
  *     assert _isElement(c_node)             # <<<<<<<<<<<<<<
  *     c_node.parent = c_parent
@@ -31760,7 +31866,7 @@ static int __pyx_f_4lxml_5etree__linkChild(xmlNode *__pyx_v_c_parent, xmlNode *_
  *         c_node.prev = c_parent.last
  *         c_parent.last.next = c_node             # <<<<<<<<<<<<<<
  *         c_parent.last = c_node
- *     return 0
+ * 
  */
     __pyx_v_c_parent->last->next = __pyx_v_c_node;
 
@@ -31768,16 +31874,25 @@ static int __pyx_f_4lxml_5etree__linkChild(xmlNode *__pyx_v_c_parent, xmlNode *_
  *         c_node.prev = c_parent.last
  *         c_parent.last.next = c_node
  *         c_parent.last = c_node             # <<<<<<<<<<<<<<
- *     return 0
  * 
+ *     _setTreeDoc(c_node, c_parent.doc)
  */
     __pyx_v_c_parent->last = __pyx_v_c_node;
   }
   __pyx_L3:;
 
-  /* "src/lxml/apihelpers.pxi":1282
- *         c_parent.last.next = c_node
+  /* "src/lxml/apihelpers.pxi":1283
  *         c_parent.last = c_node
+ * 
+ *     _setTreeDoc(c_node, c_parent.doc)             # <<<<<<<<<<<<<<
+ *     return 0
+ * 
+ */
+  __pyx_f_4lxml_5etree__setTreeDoc(__pyx_v_c_node, __pyx_v_c_parent->doc);
+
+  /* "src/lxml/apihelpers.pxi":1284
+ * 
+ *     _setTreeDoc(c_node, c_parent.doc)
  *     return 0             # <<<<<<<<<<<<<<
  * 
  * 
@@ -31789,7 +31904,7 @@ static int __pyx_f_4lxml_5etree__linkChild(xmlNode *__pyx_v_c_parent, xmlNode *_
  * 
  * 
  * cdef int _linkChild(xmlNode* c_parent, xmlNode* c_node) except -1:             # <<<<<<<<<<<<<<
- *     """Simple version of 'xmlAddChild()' that does not deep-fix the document links.
+ *     """Adaptation of 'xmlAddChild()' that deep-fix the document links iteratively.
  *     """
  */
 
@@ -31802,7 +31917,7 @@ static int __pyx_f_4lxml_5etree__linkChild(xmlNode *__pyx_v_c_parent, xmlNode *_
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1285
+/* "src/lxml/apihelpers.pxi":1287
  * 
  * 
  * cdef int _appendChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
@@ -31823,7 +31938,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_appendChild", 0);
 
-  /* "src/lxml/apihelpers.pxi":1288
+  /* "src/lxml/apihelpers.pxi":1290
  *     u"""Append a new child to a parent element.
  *     """
  *     c_node = child._c_node             # <<<<<<<<<<<<<<
@@ -31833,7 +31948,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __pyx_t_1 = __pyx_v_child->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1289
+  /* "src/lxml/apihelpers.pxi":1291
  *     """
  *     c_node = child._c_node
  *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
@@ -31843,7 +31958,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
-  /* "src/lxml/apihelpers.pxi":1291
+  /* "src/lxml/apihelpers.pxi":1293
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):             # <<<<<<<<<<<<<<
@@ -31853,20 +31968,20 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_parent->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "src/lxml/apihelpers.pxi":1292
+    /* "src/lxml/apihelpers.pxi":1294
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):
  *         raise ValueError("cannot append parent to itself")             # <<<<<<<<<<<<<<
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1292, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1294, __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;
-    __PYX_ERR(5, 1292, __pyx_L1_error)
+    __PYX_ERR(5, 1294, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1291
+    /* "src/lxml/apihelpers.pxi":1293
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):             # <<<<<<<<<<<<<<
@@ -31875,7 +31990,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1294
+  /* "src/lxml/apihelpers.pxi":1296
  *         raise ValueError("cannot append parent to itself")
  *     # store possible text node
  *     c_next = c_node.next             # <<<<<<<<<<<<<<
@@ -31885,7 +32000,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1296
+  /* "src/lxml/apihelpers.pxi":1298
  *     c_next = c_node.next
  *     # move node itself
  *     tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
@@ -31894,16 +32009,16 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  */
   xmlUnlinkNode(__pyx_v_c_node);
 
-  /* "src/lxml/apihelpers.pxi":1298
+  /* "src/lxml/apihelpers.pxi":1300
  *     tree.xmlUnlinkNode(c_node)
  *     # do not call xmlAddChild() here since it would deep-traverse the tree
  *     _linkChild(parent._c_node, c_node)             # <<<<<<<<<<<<<<
  *     _moveTail(c_next, c_node)
  *     # uh oh, elements may be pointing to different doc when
  */
-  __pyx_t_5 = __pyx_f_4lxml_5etree__linkChild(__pyx_v_parent->_c_node, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1298, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_4lxml_5etree__linkChild(__pyx_v_parent->_c_node, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1300, __pyx_L1_error)
 
-  /* "src/lxml/apihelpers.pxi":1299
+  /* "src/lxml/apihelpers.pxi":1301
  *     # do not call xmlAddChild() here since it would deep-traverse the tree
  *     _linkChild(parent._c_node, c_node)
  *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
@@ -31912,7 +32027,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  */
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
-  /* "src/lxml/apihelpers.pxi":1302
+  /* "src/lxml/apihelpers.pxi":1304
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(parent._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
@@ -31921,10 +32036,10 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
  */
   __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, 1302, __pyx_L1_error)
+  __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, 1304, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1303
+  /* "src/lxml/apihelpers.pxi":1305
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(parent._doc, c_source_doc, c_node)
  *     return 0             # <<<<<<<<<<<<<<
@@ -31934,7 +32049,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1285
+  /* "src/lxml/apihelpers.pxi":1287
  * 
  * 
  * cdef int _appendChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
@@ -31952,7 +32067,7 @@ static int __pyx_f_4lxml_5etree__appendChild(struct LxmlElement *__pyx_v_parent,
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1305
+/* "src/lxml/apihelpers.pxi":1307
  *     return 0
  * 
  * cdef int _prependChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
@@ -31974,7 +32089,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_prependChild", 0);
 
-  /* "src/lxml/apihelpers.pxi":1308
+  /* "src/lxml/apihelpers.pxi":1310
  *     u"""Prepend a new child to a parent element.
  *     """
  *     c_node = child._c_node             # <<<<<<<<<<<<<<
@@ -31984,7 +32099,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_t_1 = __pyx_v_child->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1309
+  /* "src/lxml/apihelpers.pxi":1311
  *     """
  *     c_node = child._c_node
  *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
@@ -31994,7 +32109,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
-  /* "src/lxml/apihelpers.pxi":1311
+  /* "src/lxml/apihelpers.pxi":1313
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):             # <<<<<<<<<<<<<<
@@ -32004,20 +32119,20 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_parent->_c_node) != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "src/lxml/apihelpers.pxi":1312
+    /* "src/lxml/apihelpers.pxi":1314
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):
  *         raise ValueError("cannot append parent to itself")             # <<<<<<<<<<<<<<
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1312, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__12, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1314, __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;
-    __PYX_ERR(5, 1312, __pyx_L1_error)
+    __PYX_ERR(5, 1314, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1311
+    /* "src/lxml/apihelpers.pxi":1313
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):             # <<<<<<<<<<<<<<
@@ -32026,7 +32141,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1314
+  /* "src/lxml/apihelpers.pxi":1316
  *         raise ValueError("cannot append parent to itself")
  *     # store possible text node
  *     c_next = c_node.next             # <<<<<<<<<<<<<<
@@ -32036,7 +32151,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1316
+  /* "src/lxml/apihelpers.pxi":1318
  *     c_next = c_node.next
  *     # move node itself
  *     c_child = _findChildForwards(parent._c_node, 0)             # <<<<<<<<<<<<<<
@@ -32045,7 +32160,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  */
   __pyx_v_c_child = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_parent->_c_node, 0);
 
-  /* "src/lxml/apihelpers.pxi":1317
+  /* "src/lxml/apihelpers.pxi":1319
  *     # move node itself
  *     c_child = _findChildForwards(parent._c_node, 0)
  *     if c_child is NULL:             # <<<<<<<<<<<<<<
@@ -32055,7 +32170,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_t_3 = ((__pyx_v_c_child == NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/apihelpers.pxi":1318
+    /* "src/lxml/apihelpers.pxi":1320
  *     c_child = _findChildForwards(parent._c_node, 0)
  *     if c_child is NULL:
  *         tree.xmlUnlinkNode(c_node)             # <<<<<<<<<<<<<<
@@ -32064,16 +32179,16 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  */
     xmlUnlinkNode(__pyx_v_c_node);
 
-    /* "src/lxml/apihelpers.pxi":1320
+    /* "src/lxml/apihelpers.pxi":1322
  *         tree.xmlUnlinkNode(c_node)
  *         # do not call xmlAddChild() here since it would deep-traverse the tree
  *         _linkChild(parent._c_node, c_node)             # <<<<<<<<<<<<<<
  *     else:
  *         tree.xmlAddPrevSibling(c_child, c_node)
  */
-    __pyx_t_5 = __pyx_f_4lxml_5etree__linkChild(__pyx_v_parent->_c_node, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1320, __pyx_L1_error)
+    __pyx_t_5 = __pyx_f_4lxml_5etree__linkChild(__pyx_v_parent->_c_node, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(5, 1322, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1317
+    /* "src/lxml/apihelpers.pxi":1319
  *     # move node itself
  *     c_child = _findChildForwards(parent._c_node, 0)
  *     if c_child is NULL:             # <<<<<<<<<<<<<<
@@ -32083,7 +32198,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
     goto __pyx_L4;
   }
 
-  /* "src/lxml/apihelpers.pxi":1322
+  /* "src/lxml/apihelpers.pxi":1324
  *         _linkChild(parent._c_node, c_node)
  *     else:
  *         tree.xmlAddPrevSibling(c_child, c_node)             # <<<<<<<<<<<<<<
@@ -32095,7 +32210,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   }
   __pyx_L4:;
 
-  /* "src/lxml/apihelpers.pxi":1323
+  /* "src/lxml/apihelpers.pxi":1325
  *     else:
  *         tree.xmlAddPrevSibling(c_child, c_node)
  *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
@@ -32104,7 +32219,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  */
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
-  /* "src/lxml/apihelpers.pxi":1326
+  /* "src/lxml/apihelpers.pxi":1328
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(parent._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
@@ -32113,10 +32228,10 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
  */
   __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, 1326, __pyx_L1_error)
+  __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, 1328, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1327
+  /* "src/lxml/apihelpers.pxi":1329
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(parent._doc, c_source_doc, c_node)
  *     return 0             # <<<<<<<<<<<<<<
@@ -32126,7 +32241,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1305
+  /* "src/lxml/apihelpers.pxi":1307
  *     return 0
  * 
  * cdef int _prependChild(_Element parent, _Element child) except -1:             # <<<<<<<<<<<<<<
@@ -32144,7 +32259,7 @@ static int __pyx_f_4lxml_5etree__prependChild(struct LxmlElement *__pyx_v_parent
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1329
+/* "src/lxml/apihelpers.pxi":1331
  *     return 0
  * 
  * cdef int _appendSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
@@ -32158,18 +32273,18 @@ static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_eleme
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_appendSibling", 0);
 
-  /* "src/lxml/apihelpers.pxi":1332
+  /* "src/lxml/apihelpers.pxi":1334
  *     u"""Add a new sibling behind an element.
  *     """
  *     return _addSibling(element, sibling, as_next=True)             # <<<<<<<<<<<<<<
  * 
  * cdef int _prependSibling(_Element element, _Element sibling) except -1:
  */
-  __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, 1332, __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, 1334, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1329
+  /* "src/lxml/apihelpers.pxi":1331
  *     return 0
  * 
  * cdef int _appendSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
@@ -32186,7 +32301,7 @@ static int __pyx_f_4lxml_5etree__appendSibling(struct LxmlElement *__pyx_v_eleme
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1334
+/* "src/lxml/apihelpers.pxi":1336
  *     return _addSibling(element, sibling, as_next=True)
  * 
  * cdef int _prependSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
@@ -32200,18 +32315,18 @@ static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_elem
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_prependSibling", 0);
 
-  /* "src/lxml/apihelpers.pxi":1337
+  /* "src/lxml/apihelpers.pxi":1339
  *     u"""Add a new sibling before an element.
  *     """
  *     return _addSibling(element, sibling, as_next=False)             # <<<<<<<<<<<<<<
  * 
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:
  */
-  __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, 1337, __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, 1339, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1334
+  /* "src/lxml/apihelpers.pxi":1336
  *     return _addSibling(element, sibling, as_next=True)
  * 
  * cdef int _prependSibling(_Element element, _Element sibling) except -1:             # <<<<<<<<<<<<<<
@@ -32228,7 +32343,7 @@ static int __pyx_f_4lxml_5etree__prependSibling(struct LxmlElement *__pyx_v_elem
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1339
+/* "src/lxml/apihelpers.pxi":1341
  *     return _addSibling(element, sibling, as_next=False)
  * 
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:             # <<<<<<<<<<<<<<
@@ -32249,7 +32364,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("_addSibling", 0);
 
-  /* "src/lxml/apihelpers.pxi":1340
+  /* "src/lxml/apihelpers.pxi":1342
  * 
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:
  *     c_node = sibling._c_node             # <<<<<<<<<<<<<<
@@ -32259,7 +32374,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_t_1 = __pyx_v_sibling->_c_node;
   __pyx_v_c_node = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1341
+  /* "src/lxml/apihelpers.pxi":1343
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:
  *     c_node = sibling._c_node
  *     c_source_doc = c_node.doc             # <<<<<<<<<<<<<<
@@ -32269,7 +32384,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_t_2 = __pyx_v_c_node->doc;
   __pyx_v_c_source_doc = __pyx_t_2;
 
-  /* "src/lxml/apihelpers.pxi":1343
+  /* "src/lxml/apihelpers.pxi":1345
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, element._c_node):             # <<<<<<<<<<<<<<
@@ -32279,7 +32394,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_t_3 = (__pyx_f_4lxml_5etree__isAncestorOrSame(__pyx_v_c_node, __pyx_v_element->_c_node) != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/apihelpers.pxi":1344
+    /* "src/lxml/apihelpers.pxi":1346
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, element._c_node):
  *         if element._c_node is c_node:             # <<<<<<<<<<<<<<
@@ -32289,7 +32404,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
     __pyx_t_3 = ((__pyx_v_element->_c_node == __pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/apihelpers.pxi":1345
+      /* "src/lxml/apihelpers.pxi":1347
  *     if _isAncestorOrSame(c_node, element._c_node):
  *         if element._c_node is c_node:
  *             return 0  # nothing to do             # <<<<<<<<<<<<<<
@@ -32299,7 +32414,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
       __pyx_r = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1344
+      /* "src/lxml/apihelpers.pxi":1346
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, element._c_node):
  *         if element._c_node is c_node:             # <<<<<<<<<<<<<<
@@ -32308,20 +32423,20 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1346
+    /* "src/lxml/apihelpers.pxi":1348
  *         if element._c_node is c_node:
  *             return 0  # nothing to do
  *         raise ValueError("cannot add ancestor as sibling, please break cycle first")             # <<<<<<<<<<<<<<
  *     # store possible text node
  *     c_next = c_node.next
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1346, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__13, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1348, __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;
-    __PYX_ERR(5, 1346, __pyx_L1_error)
+    __PYX_ERR(5, 1348, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1343
+    /* "src/lxml/apihelpers.pxi":1345
  *     c_source_doc = c_node.doc
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, element._c_node):             # <<<<<<<<<<<<<<
@@ -32330,7 +32445,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1348
+  /* "src/lxml/apihelpers.pxi":1350
  *         raise ValueError("cannot add ancestor as sibling, please break cycle first")
  *     # store possible text node
  *     c_next = c_node.next             # <<<<<<<<<<<<<<
@@ -32340,7 +32455,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_t_1 = __pyx_v_c_node->next;
   __pyx_v_c_next = __pyx_t_1;
 
-  /* "src/lxml/apihelpers.pxi":1350
+  /* "src/lxml/apihelpers.pxi":1352
  *     c_next = c_node.next
  *     # move node itself
  *     if as_next:             # <<<<<<<<<<<<<<
@@ -32350,7 +32465,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_t_3 = (__pyx_v_as_next != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/apihelpers.pxi":1351
+    /* "src/lxml/apihelpers.pxi":1353
  *     # move node itself
  *     if as_next:
  *         tree.xmlAddNextSibling(element._c_node, c_node)             # <<<<<<<<<<<<<<
@@ -32359,7 +32474,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  */
     (void)(xmlAddNextSibling(__pyx_v_element->_c_node, __pyx_v_c_node));
 
-    /* "src/lxml/apihelpers.pxi":1350
+    /* "src/lxml/apihelpers.pxi":1352
  *     c_next = c_node.next
  *     # move node itself
  *     if as_next:             # <<<<<<<<<<<<<<
@@ -32369,7 +32484,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
     goto __pyx_L5;
   }
 
-  /* "src/lxml/apihelpers.pxi":1353
+  /* "src/lxml/apihelpers.pxi":1355
  *         tree.xmlAddNextSibling(element._c_node, c_node)
  *     else:
  *         tree.xmlAddPrevSibling(element._c_node, c_node)             # <<<<<<<<<<<<<<
@@ -32381,7 +32496,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   }
   __pyx_L5:;
 
-  /* "src/lxml/apihelpers.pxi":1354
+  /* "src/lxml/apihelpers.pxi":1356
  *     else:
  *         tree.xmlAddPrevSibling(element._c_node, c_node)
  *     _moveTail(c_next, c_node)             # <<<<<<<<<<<<<<
@@ -32390,7 +32505,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  */
   __pyx_f_4lxml_5etree__moveTail(__pyx_v_c_next, __pyx_v_c_node);
 
-  /* "src/lxml/apihelpers.pxi":1357
+  /* "src/lxml/apihelpers.pxi":1359
  *     # uh oh, elements may be pointing to different doc when
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(element._doc, c_source_doc, c_node)             # <<<<<<<<<<<<<<
@@ -32399,10 +32514,10 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
  */
   __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, 1357, __pyx_L1_error)
+  __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, 1359, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1358
+  /* "src/lxml/apihelpers.pxi":1360
  *     # parent element has moved; change them too..
  *     moveNodeToDocument(element._doc, c_source_doc, c_node)
  *     return 0             # <<<<<<<<<<<<<<
@@ -32412,7 +32527,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1339
+  /* "src/lxml/apihelpers.pxi":1341
  *     return _addSibling(element, sibling, as_next=False)
  * 
  * cdef int _addSibling(_Element element, _Element sibling, bint as_next) except -1:             # <<<<<<<<<<<<<<
@@ -32430,7 +32545,7 @@ static int __pyx_f_4lxml_5etree__addSibling(struct LxmlElement *__pyx_v_element,
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1360
+/* "src/lxml/apihelpers.pxi":1362
  *     return 0
  * 
  * cdef inline bint isutf8(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -32445,7 +32560,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("isutf8", 0);
 
-  /* "src/lxml/apihelpers.pxi":1361
+  /* "src/lxml/apihelpers.pxi":1363
  * 
  * cdef inline bint isutf8(const_xmlChar* s):
  *     cdef xmlChar c = s[0]             # <<<<<<<<<<<<<<
@@ -32454,7 +32569,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  */
   __pyx_v_c = (__pyx_v_s[0]);
 
-  /* "src/lxml/apihelpers.pxi":1362
+  /* "src/lxml/apihelpers.pxi":1364
  * cdef inline bint isutf8(const_xmlChar* s):
  *     cdef xmlChar c = s[0]
  *     while c != c'\0':             # <<<<<<<<<<<<<<
@@ -32465,7 +32580,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
     __pyx_t_1 = ((__pyx_v_c != '\x00') != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/apihelpers.pxi":1363
+    /* "src/lxml/apihelpers.pxi":1365
  *     cdef xmlChar c = s[0]
  *     while c != c'\0':
  *         if c & 0x80:             # <<<<<<<<<<<<<<
@@ -32475,7 +32590,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
     __pyx_t_1 = ((__pyx_v_c & 0x80) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1364
+      /* "src/lxml/apihelpers.pxi":1366
  *     while c != c'\0':
  *         if c & 0x80:
  *             return True             # <<<<<<<<<<<<<<
@@ -32485,7 +32600,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1363
+      /* "src/lxml/apihelpers.pxi":1365
  *     cdef xmlChar c = s[0]
  *     while c != c'\0':
  *         if c & 0x80:             # <<<<<<<<<<<<<<
@@ -32494,7 +32609,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1365
+    /* "src/lxml/apihelpers.pxi":1367
  *         if c & 0x80:
  *             return True
  *         s += 1             # <<<<<<<<<<<<<<
@@ -32503,7 +32618,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
  */
     __pyx_v_s = (__pyx_v_s + 1);
 
-    /* "src/lxml/apihelpers.pxi":1366
+    /* "src/lxml/apihelpers.pxi":1368
  *             return True
  *         s += 1
  *         c = s[0]             # <<<<<<<<<<<<<<
@@ -32513,7 +32628,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
     __pyx_v_c = (__pyx_v_s[0]);
   }
 
-  /* "src/lxml/apihelpers.pxi":1367
+  /* "src/lxml/apihelpers.pxi":1369
  *         s += 1
  *         c = s[0]
  *     return False             # <<<<<<<<<<<<<<
@@ -32523,7 +32638,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1360
+  /* "src/lxml/apihelpers.pxi":1362
  *     return 0
  * 
  * cdef inline bint isutf8(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -32537,7 +32652,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_isutf8(const xmlChar *__pyx_v_s) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1369
+/* "src/lxml/apihelpers.pxi":1371
  *     return False
  * 
  * cdef bint isutf8l(const_xmlChar* s, size_t length):             # <<<<<<<<<<<<<<
@@ -32559,7 +32674,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("isutf8l", 0);
 
-  /* "src/lxml/apihelpers.pxi":1375
+  /* "src/lxml/apihelpers.pxi":1377
  *     cdef int i
  *     cdef unsigned long non_ascii_mask
  *     cdef const unsigned long *lptr = <const unsigned long*> s             # <<<<<<<<<<<<<<
@@ -32568,7 +32683,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
   __pyx_v_lptr = ((unsigned long const *)__pyx_v_s);
 
-  /* "src/lxml/apihelpers.pxi":1377
+  /* "src/lxml/apihelpers.pxi":1379
  *     cdef const unsigned long *lptr = <const unsigned long*> s
  * 
  *     cdef const unsigned long *end = lptr + length // sizeof(unsigned long)             # <<<<<<<<<<<<<<
@@ -32578,11 +32693,11 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
   __pyx_t_1 = (sizeof(unsigned long));
   if (unlikely(__pyx_t_1 == 0)) {
     PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-    __PYX_ERR(5, 1377, __pyx_L1_error)
+    __PYX_ERR(5, 1379, __pyx_L1_error)
   }
   __pyx_v_end = (__pyx_v_lptr + (__pyx_v_length / __pyx_t_1));
 
-  /* "src/lxml/apihelpers.pxi":1378
+  /* "src/lxml/apihelpers.pxi":1380
  * 
  *     cdef const unsigned long *end = lptr + length // sizeof(unsigned long)
  *     if length >= sizeof(non_ascii_mask):             # <<<<<<<<<<<<<<
@@ -32592,7 +32707,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
   __pyx_t_2 = ((__pyx_v_length >= (sizeof(__pyx_v_non_ascii_mask))) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/apihelpers.pxi":1380
+    /* "src/lxml/apihelpers.pxi":1382
  *     if length >= sizeof(non_ascii_mask):
  *         # Build constant 0x80808080... mask (and let the C compiler fold it).
  *         non_ascii_mask = 0             # <<<<<<<<<<<<<<
@@ -32601,7 +32716,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
     __pyx_v_non_ascii_mask = 0;
 
-    /* "src/lxml/apihelpers.pxi":1381
+    /* "src/lxml/apihelpers.pxi":1383
  *         # Build constant 0x80808080... mask (and let the C compiler fold it).
  *         non_ascii_mask = 0
  *         for i in range(sizeof(non_ascii_mask) // 2):             # <<<<<<<<<<<<<<
@@ -32613,7 +32728,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
       __pyx_v_i = __pyx_t_4;
 
-      /* "src/lxml/apihelpers.pxi":1382
+      /* "src/lxml/apihelpers.pxi":1384
  *         non_ascii_mask = 0
  *         for i in range(sizeof(non_ascii_mask) // 2):
  *             non_ascii_mask = (non_ascii_mask << 16) | 0x8080             # <<<<<<<<<<<<<<
@@ -32623,7 +32738,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_v_non_ascii_mask = ((__pyx_v_non_ascii_mask << 16) | 0x8080);
     }
 
-    /* "src/lxml/apihelpers.pxi":1385
+    /* "src/lxml/apihelpers.pxi":1387
  * 
  *         # Advance to long-aligned character before we start reading longs.
  *         while (<size_t>s) % sizeof(unsigned long) and s < <const_xmlChar *>end:             # <<<<<<<<<<<<<<
@@ -32634,7 +32749,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_t_1 = (sizeof(unsigned long));
       if (unlikely(__pyx_t_1 == 0)) {
         PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-        __PYX_ERR(5, 1385, __pyx_L1_error)
+        __PYX_ERR(5, 1387, __pyx_L1_error)
       }
       __pyx_t_5 = ((((size_t)__pyx_v_s) % __pyx_t_1) != 0);
       if (__pyx_t_5) {
@@ -32647,7 +32762,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_L8_bool_binop_done:;
       if (!__pyx_t_2) break;
 
-      /* "src/lxml/apihelpers.pxi":1386
+      /* "src/lxml/apihelpers.pxi":1388
  *         # Advance to long-aligned character before we start reading longs.
  *         while (<size_t>s) % sizeof(unsigned long) and s < <const_xmlChar *>end:
  *             if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -32657,7 +32772,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_t_2 = (((__pyx_v_s[0]) & 0x80) != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/apihelpers.pxi":1387
+        /* "src/lxml/apihelpers.pxi":1389
  *         while (<size_t>s) % sizeof(unsigned long) and s < <const_xmlChar *>end:
  *             if s[0] & 0x80:
  *                 return True             # <<<<<<<<<<<<<<
@@ -32667,7 +32782,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
         __pyx_r = 1;
         goto __pyx_L0;
 
-        /* "src/lxml/apihelpers.pxi":1386
+        /* "src/lxml/apihelpers.pxi":1388
  *         # Advance to long-aligned character before we start reading longs.
  *         while (<size_t>s) % sizeof(unsigned long) and s < <const_xmlChar *>end:
  *             if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -32676,7 +32791,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1388
+      /* "src/lxml/apihelpers.pxi":1390
  *             if s[0] & 0x80:
  *                 return True
  *             s += 1             # <<<<<<<<<<<<<<
@@ -32686,7 +32801,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_v_s = (__pyx_v_s + 1);
     }
 
-    /* "src/lxml/apihelpers.pxi":1391
+    /* "src/lxml/apihelpers.pxi":1393
  * 
  *         # Read one long at a time
  *         lptr = <const unsigned long*> s             # <<<<<<<<<<<<<<
@@ -32695,7 +32810,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
     __pyx_v_lptr = ((unsigned long const *)__pyx_v_s);
 
-    /* "src/lxml/apihelpers.pxi":1392
+    /* "src/lxml/apihelpers.pxi":1394
  *         # Read one long at a time
  *         lptr = <const unsigned long*> s
  *         while lptr < end:             # <<<<<<<<<<<<<<
@@ -32706,7 +32821,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_t_2 = ((__pyx_v_lptr < __pyx_v_end) != 0);
       if (!__pyx_t_2) break;
 
-      /* "src/lxml/apihelpers.pxi":1393
+      /* "src/lxml/apihelpers.pxi":1395
  *         lptr = <const unsigned long*> s
  *         while lptr < end:
  *             if lptr[0] & non_ascii_mask:             # <<<<<<<<<<<<<<
@@ -32716,7 +32831,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_t_2 = (((__pyx_v_lptr[0]) & __pyx_v_non_ascii_mask) != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/apihelpers.pxi":1394
+        /* "src/lxml/apihelpers.pxi":1396
  *         while lptr < end:
  *             if lptr[0] & non_ascii_mask:
  *                 return True             # <<<<<<<<<<<<<<
@@ -32726,7 +32841,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
         __pyx_r = 1;
         goto __pyx_L0;
 
-        /* "src/lxml/apihelpers.pxi":1393
+        /* "src/lxml/apihelpers.pxi":1395
  *         lptr = <const unsigned long*> s
  *         while lptr < end:
  *             if lptr[0] & non_ascii_mask:             # <<<<<<<<<<<<<<
@@ -32735,7 +32850,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1395
+      /* "src/lxml/apihelpers.pxi":1397
  *             if lptr[0] & non_ascii_mask:
  *                 return True
  *             lptr += 1             # <<<<<<<<<<<<<<
@@ -32745,7 +32860,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_v_lptr = (__pyx_v_lptr + 1);
     }
 
-    /* "src/lxml/apihelpers.pxi":1396
+    /* "src/lxml/apihelpers.pxi":1398
  *                 return True
  *             lptr += 1
  *         s = <const_xmlChar *>lptr             # <<<<<<<<<<<<<<
@@ -32754,7 +32869,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
     __pyx_v_s = ((const xmlChar *)__pyx_v_lptr);
 
-    /* "src/lxml/apihelpers.pxi":1378
+    /* "src/lxml/apihelpers.pxi":1380
  * 
  *     cdef const unsigned long *end = lptr + length // sizeof(unsigned long)
  *     if length >= sizeof(non_ascii_mask):             # <<<<<<<<<<<<<<
@@ -32763,7 +32878,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1398
+  /* "src/lxml/apihelpers.pxi":1400
  *         s = <const_xmlChar *>lptr
  * 
  *     while s < (<const_xmlChar *>end + length % sizeof(unsigned long)):             # <<<<<<<<<<<<<<
@@ -32774,12 +32889,12 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
     __pyx_t_1 = (sizeof(unsigned long));
     if (unlikely(__pyx_t_1 == 0)) {
       PyErr_SetString(PyExc_ZeroDivisionError, "integer division or modulo by zero");
-      __PYX_ERR(5, 1398, __pyx_L1_error)
+      __PYX_ERR(5, 1400, __pyx_L1_error)
     }
     __pyx_t_2 = ((__pyx_v_s < (((const xmlChar *)__pyx_v_end) + (__pyx_v_length % __pyx_t_1))) != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/apihelpers.pxi":1399
+    /* "src/lxml/apihelpers.pxi":1401
  * 
  *     while s < (<const_xmlChar *>end + length % sizeof(unsigned long)):
  *         if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -32789,7 +32904,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
     __pyx_t_2 = (((__pyx_v_s[0]) & 0x80) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/apihelpers.pxi":1400
+      /* "src/lxml/apihelpers.pxi":1402
  *     while s < (<const_xmlChar *>end + length % sizeof(unsigned long)):
  *         if s[0] & 0x80:
  *             return True             # <<<<<<<<<<<<<<
@@ -32799,7 +32914,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1399
+      /* "src/lxml/apihelpers.pxi":1401
  * 
  *     while s < (<const_xmlChar *>end + length % sizeof(unsigned long)):
  *         if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -32808,7 +32923,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1401
+    /* "src/lxml/apihelpers.pxi":1403
  *         if s[0] & 0x80:
  *             return True
  *         s += 1             # <<<<<<<<<<<<<<
@@ -32818,7 +32933,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
     __pyx_v_s = (__pyx_v_s + 1);
   }
 
-  /* "src/lxml/apihelpers.pxi":1403
+  /* "src/lxml/apihelpers.pxi":1405
  *         s += 1
  * 
  *     return False             # <<<<<<<<<<<<<<
@@ -32828,7 +32943,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1369
+  /* "src/lxml/apihelpers.pxi":1371
  *     return False
  * 
  * cdef bint isutf8l(const_xmlChar* s, size_t length):             # <<<<<<<<<<<<<<
@@ -32845,7 +32960,7 @@ static int __pyx_f_4lxml_5etree_isutf8l(const xmlChar *__pyx_v_s, size_t __pyx_v
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1405
+/* "src/lxml/apihelpers.pxi":1407
  *     return False
  * 
  * cdef int _is_valid_xml_ascii(bytes pystring):             # <<<<<<<<<<<<<<
@@ -32865,7 +32980,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_is_valid_xml_ascii", 0);
 
-  /* "src/lxml/apihelpers.pxi":1410
+  /* "src/lxml/apihelpers.pxi":1412
  *     # When ch is a *signed* char, non-ascii characters are negative integers
  *     # and xmlIsChar_ch does not accept them.
  *     for ch in pystring:             # <<<<<<<<<<<<<<
@@ -32874,7 +32989,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
  */
   if (unlikely(__pyx_v_pystring == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' is not iterable");
-    __PYX_ERR(5, 1410, __pyx_L1_error)
+    __PYX_ERR(5, 1412, __pyx_L1_error)
   }
   __Pyx_INCREF(__pyx_v_pystring);
   __pyx_t_1 = __pyx_v_pystring;
@@ -32884,7 +32999,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
     __pyx_t_2 = __pyx_t_5;
     __pyx_v_ch = (__pyx_t_2[0]);
 
-    /* "src/lxml/apihelpers.pxi":1411
+    /* "src/lxml/apihelpers.pxi":1413
  *     # and xmlIsChar_ch does not accept them.
  *     for ch in pystring:
  *         if not tree.xmlIsChar_ch(ch):             # <<<<<<<<<<<<<<
@@ -32894,7 +33009,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
     __pyx_t_6 = ((!(xmlIsChar_ch(__pyx_v_ch) != 0)) != 0);
     if (__pyx_t_6) {
 
-      /* "src/lxml/apihelpers.pxi":1412
+      /* "src/lxml/apihelpers.pxi":1414
  *     for ch in pystring:
  *         if not tree.xmlIsChar_ch(ch):
  *             return 0             # <<<<<<<<<<<<<<
@@ -32905,7 +33020,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1411
+      /* "src/lxml/apihelpers.pxi":1413
  *     # and xmlIsChar_ch does not accept them.
  *     for ch in pystring:
  *         if not tree.xmlIsChar_ch(ch):             # <<<<<<<<<<<<<<
@@ -32916,7 +33031,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1413
+  /* "src/lxml/apihelpers.pxi":1415
  *         if not tree.xmlIsChar_ch(ch):
  *             return 0
  *     return 1             # <<<<<<<<<<<<<<
@@ -32926,7 +33041,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1405
+  /* "src/lxml/apihelpers.pxi":1407
  *     return False
  * 
  * cdef int _is_valid_xml_ascii(bytes pystring):             # <<<<<<<<<<<<<<
@@ -32944,7 +33059,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_ascii(PyObject *__pyx_v_pystring)
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1415
+/* "src/lxml/apihelpers.pxi":1417
  *     return 1
  * 
  * cdef bint _is_valid_xml_utf8(bytes pystring):             # <<<<<<<<<<<<<<
@@ -32963,7 +33078,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_is_valid_xml_utf8", 0);
 
-  /* "src/lxml/apihelpers.pxi":1417
+  /* "src/lxml/apihelpers.pxi":1419
  * cdef bint _is_valid_xml_utf8(bytes pystring):
  *     u"""Check if a string is like valid UTF-8 XML content."""
  *     cdef const_xmlChar* s = _xcstr(pystring)             # <<<<<<<<<<<<<<
@@ -32972,7 +33087,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
   __pyx_v_s = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_pystring);
 
-  /* "src/lxml/apihelpers.pxi":1418
+  /* "src/lxml/apihelpers.pxi":1420
  *     u"""Check if a string is like valid UTF-8 XML content."""
  *     cdef const_xmlChar* s = _xcstr(pystring)
  *     cdef const_xmlChar* c_end = s + len(pystring)             # <<<<<<<<<<<<<<
@@ -32981,12 +33096,12 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
   if (unlikely(__pyx_v_pystring == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(5, 1418, __pyx_L1_error)
+    __PYX_ERR(5, 1420, __pyx_L1_error)
   }
-  __pyx_t_1 = PyBytes_GET_SIZE(__pyx_v_pystring); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1418, __pyx_L1_error)
+  __pyx_t_1 = PyBytes_GET_SIZE(__pyx_v_pystring); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1420, __pyx_L1_error)
   __pyx_v_c_end = (__pyx_v_s + __pyx_t_1);
 
-  /* "src/lxml/apihelpers.pxi":1419
+  /* "src/lxml/apihelpers.pxi":1421
  *     cdef const_xmlChar* s = _xcstr(pystring)
  *     cdef const_xmlChar* c_end = s + len(pystring)
  *     cdef unsigned long next3 = 0             # <<<<<<<<<<<<<<
@@ -32995,7 +33110,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
   __pyx_v_next3 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1420
+  /* "src/lxml/apihelpers.pxi":1422
  *     cdef const_xmlChar* c_end = s + len(pystring)
  *     cdef unsigned long next3 = 0
  *     if s < c_end - 2:             # <<<<<<<<<<<<<<
@@ -33005,7 +33120,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   __pyx_t_2 = ((__pyx_v_s < (__pyx_v_c_end - 2)) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/apihelpers.pxi":1421
+    /* "src/lxml/apihelpers.pxi":1423
  *     cdef unsigned long next3 = 0
  *     if s < c_end - 2:
  *         next3 = (s[0] << 8) | (s[1])             # <<<<<<<<<<<<<<
@@ -33014,7 +33129,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
     __pyx_v_next3 = (((__pyx_v_s[0]) << 8) | (__pyx_v_s[1]));
 
-    /* "src/lxml/apihelpers.pxi":1420
+    /* "src/lxml/apihelpers.pxi":1422
  *     cdef const_xmlChar* c_end = s + len(pystring)
  *     cdef unsigned long next3 = 0
  *     if s < c_end - 2:             # <<<<<<<<<<<<<<
@@ -33023,7 +33138,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1423
+  /* "src/lxml/apihelpers.pxi":1425
  *         next3 = (s[0] << 8) | (s[1])
  * 
  *     while s < c_end - 2:             # <<<<<<<<<<<<<<
@@ -33034,7 +33149,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_t_2 = ((__pyx_v_s < (__pyx_v_c_end - 2)) != 0);
     if (!__pyx_t_2) break;
 
-    /* "src/lxml/apihelpers.pxi":1424
+    /* "src/lxml/apihelpers.pxi":1426
  * 
  *     while s < c_end - 2:
  *         next3 = 0x00ffffff & ((next3 << 8) | s[2])             # <<<<<<<<<<<<<<
@@ -33043,7 +33158,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
     __pyx_v_next3 = (0x00ffffff & ((__pyx_v_next3 << 8) | (__pyx_v_s[2])));
 
-    /* "src/lxml/apihelpers.pxi":1425
+    /* "src/lxml/apihelpers.pxi":1427
  *     while s < c_end - 2:
  *         next3 = 0x00ffffff & ((next3 << 8) | s[2])
  *         if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -33053,7 +33168,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_t_2 = (((__pyx_v_s[0]) & 0x80) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/apihelpers.pxi":1428
+      /* "src/lxml/apihelpers.pxi":1430
  *             # 0xefbfbe and 0xefbfbf are utf-8 encodings of
  *             # forbidden characters \ufffe and \uffff
  *             if next3 == 0x00efbfbe or next3 == 0x00efbfbf:             # <<<<<<<<<<<<<<
@@ -33064,7 +33179,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
         case 0x00efbfbe:
         case 0x00efbfbf:
 
-        /* "src/lxml/apihelpers.pxi":1429
+        /* "src/lxml/apihelpers.pxi":1431
  *             # forbidden characters \ufffe and \uffff
  *             if next3 == 0x00efbfbe or next3 == 0x00efbfbf:
  *                 return 0             # <<<<<<<<<<<<<<
@@ -33074,7 +33189,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
         __pyx_r = 0;
         goto __pyx_L0;
 
-        /* "src/lxml/apihelpers.pxi":1428
+        /* "src/lxml/apihelpers.pxi":1430
  *             # 0xefbfbe and 0xefbfbf are utf-8 encodings of
  *             # forbidden characters \ufffe and \uffff
  *             if next3 == 0x00efbfbe or next3 == 0x00efbfbf:             # <<<<<<<<<<<<<<
@@ -33085,7 +33200,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
         default: break;
       }
 
-      /* "src/lxml/apihelpers.pxi":1433
+      /* "src/lxml/apihelpers.pxi":1435
  *             # \ud800 and \udfff. Anything between them (inclusive)
  *             # is forbidden, because they are surrogate blocks in utf-16.
  *             if 0x00eda080 <= next3 <= 0x00edbfbf:             # <<<<<<<<<<<<<<
@@ -33099,7 +33214,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
 
-        /* "src/lxml/apihelpers.pxi":1434
+        /* "src/lxml/apihelpers.pxi":1436
  *             # is forbidden, because they are surrogate blocks in utf-16.
  *             if 0x00eda080 <= next3 <= 0x00edbfbf:
  *                 return 0             # <<<<<<<<<<<<<<
@@ -33109,7 +33224,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
         __pyx_r = 0;
         goto __pyx_L0;
 
-        /* "src/lxml/apihelpers.pxi":1433
+        /* "src/lxml/apihelpers.pxi":1435
  *             # \ud800 and \udfff. Anything between them (inclusive)
  *             # is forbidden, because they are surrogate blocks in utf-16.
  *             if 0x00eda080 <= next3 <= 0x00edbfbf:             # <<<<<<<<<<<<<<
@@ -33118,7 +33233,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1425
+      /* "src/lxml/apihelpers.pxi":1427
  *     while s < c_end - 2:
  *         next3 = 0x00ffffff & ((next3 << 8) | s[2])
  *         if s[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -33128,7 +33243,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
       goto __pyx_L6;
     }
 
-    /* "src/lxml/apihelpers.pxi":1435
+    /* "src/lxml/apihelpers.pxi":1437
  *             if 0x00eda080 <= next3 <= 0x00edbfbf:
  *                 return 0
  *         elif not tree.xmlIsChar_ch(s[0]):             # <<<<<<<<<<<<<<
@@ -33138,7 +33253,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_t_3 = ((!(xmlIsChar_ch((__pyx_v_s[0])) != 0)) != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/apihelpers.pxi":1436
+      /* "src/lxml/apihelpers.pxi":1438
  *                 return 0
  *         elif not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char             # <<<<<<<<<<<<<<
@@ -33148,7 +33263,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
       __pyx_r = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1435
+      /* "src/lxml/apihelpers.pxi":1437
  *             if 0x00eda080 <= next3 <= 0x00edbfbf:
  *                 return 0
  *         elif not tree.xmlIsChar_ch(s[0]):             # <<<<<<<<<<<<<<
@@ -33158,7 +33273,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     }
     __pyx_L6:;
 
-    /* "src/lxml/apihelpers.pxi":1437
+    /* "src/lxml/apihelpers.pxi":1439
  *         elif not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char
  *         s += 1             # <<<<<<<<<<<<<<
@@ -33168,7 +33283,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_v_s = (__pyx_v_s + 1);
   }
 
-  /* "src/lxml/apihelpers.pxi":1439
+  /* "src/lxml/apihelpers.pxi":1441
  *         s += 1
  * 
  *     while s < c_end:             # <<<<<<<<<<<<<<
@@ -33179,7 +33294,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_t_3 = ((__pyx_v_s < __pyx_v_c_end) != 0);
     if (!__pyx_t_3) break;
 
-    /* "src/lxml/apihelpers.pxi":1440
+    /* "src/lxml/apihelpers.pxi":1442
  * 
  *     while s < c_end:
  *         if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]):             # <<<<<<<<<<<<<<
@@ -33197,7 +33312,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_L11_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "src/lxml/apihelpers.pxi":1441
+      /* "src/lxml/apihelpers.pxi":1443
  *     while s < c_end:
  *         if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char             # <<<<<<<<<<<<<<
@@ -33207,7 +33322,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
       __pyx_r = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1440
+      /* "src/lxml/apihelpers.pxi":1442
  * 
  *     while s < c_end:
  *         if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]):             # <<<<<<<<<<<<<<
@@ -33216,7 +33331,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1442
+    /* "src/lxml/apihelpers.pxi":1444
  *         if not s[0] & 0x80 and not tree.xmlIsChar_ch(s[0]):
  *             return 0  # invalid ascii char
  *         s += 1             # <<<<<<<<<<<<<<
@@ -33226,7 +33341,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
     __pyx_v_s = (__pyx_v_s + 1);
   }
 
-  /* "src/lxml/apihelpers.pxi":1444
+  /* "src/lxml/apihelpers.pxi":1446
  *         s += 1
  * 
  *     return 1             # <<<<<<<<<<<<<<
@@ -33236,7 +33351,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1415
+  /* "src/lxml/apihelpers.pxi":1417
  *     return 1
  * 
  * cdef bint _is_valid_xml_utf8(bytes pystring):             # <<<<<<<<<<<<<<
@@ -33253,7 +33368,7 @@ static int __pyx_f_4lxml_5etree__is_valid_xml_utf8(PyObject *__pyx_v_pystring) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1446
+/* "src/lxml/apihelpers.pxi":1448
  *     return 1
  * 
  * cdef inline object funicodeOrNone(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33268,7 +33383,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicodeOrNone", 0);
 
-  /* "src/lxml/apihelpers.pxi":1447
+  /* "src/lxml/apihelpers.pxi":1449
  * 
  * cdef inline object funicodeOrNone(const_xmlChar* s):
  *     return funicode(s) if s is not NULL else None             # <<<<<<<<<<<<<<
@@ -33277,7 +33392,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
  */
   __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, 1447, __pyx_L1_error)
+    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1449, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -33289,7 +33404,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1446
+  /* "src/lxml/apihelpers.pxi":1448
  *     return 1
  * 
  * cdef inline object funicodeOrNone(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33309,7 +33424,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrNone(const xmlChar
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1449
+/* "src/lxml/apihelpers.pxi":1451
  *     return funicode(s) if s is not NULL else None
  * 
  * cdef inline object funicodeOrEmpty(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33324,7 +33439,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicodeOrEmpty", 0);
 
-  /* "src/lxml/apihelpers.pxi":1450
+  /* "src/lxml/apihelpers.pxi":1452
  * 
  * cdef inline object funicodeOrEmpty(const_xmlChar* s):
  *     return funicode(s) if s is not NULL else ''             # <<<<<<<<<<<<<<
@@ -33333,7 +33448,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
  */
   __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, 1450, __pyx_L1_error)
+    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_s); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1452, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -33345,7 +33460,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1449
+  /* "src/lxml/apihelpers.pxi":1451
  *     return funicode(s) if s is not NULL else None
  * 
  * cdef inline object funicodeOrEmpty(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33365,7 +33480,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree_funicodeOrEmpty(const xmlCha
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1452
+/* "src/lxml/apihelpers.pxi":1454
  *     return funicode(s) if s is not NULL else ''
  * 
  * cdef object funicode(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33383,7 +33498,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("funicode", 0);
 
-  /* "src/lxml/apihelpers.pxi":1456
+  /* "src/lxml/apihelpers.pxi":1458
  *     cdef const_xmlChar* spos
  *     cdef bint is_non_ascii
  *     if python.LXML_UNICODE_STRINGS:             # <<<<<<<<<<<<<<
@@ -33393,7 +33508,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   __pyx_t_1 = (LXML_UNICODE_STRINGS != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1457
+    /* "src/lxml/apihelpers.pxi":1459
  *     cdef bint is_non_ascii
  *     if python.LXML_UNICODE_STRINGS:
  *         return s.decode('UTF-8')             # <<<<<<<<<<<<<<
@@ -33401,13 +33516,13 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  *     is_non_ascii = 0
  */
     __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, 1457, __pyx_L1_error)
+    __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, 1459, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1456
+    /* "src/lxml/apihelpers.pxi":1458
  *     cdef const_xmlChar* spos
  *     cdef bint is_non_ascii
  *     if python.LXML_UNICODE_STRINGS:             # <<<<<<<<<<<<<<
@@ -33416,7 +33531,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1458
+  /* "src/lxml/apihelpers.pxi":1460
  *     if python.LXML_UNICODE_STRINGS:
  *         return s.decode('UTF-8')
  *     spos = s             # <<<<<<<<<<<<<<
@@ -33425,7 +33540,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   __pyx_v_spos = __pyx_v_s;
 
-  /* "src/lxml/apihelpers.pxi":1459
+  /* "src/lxml/apihelpers.pxi":1461
  *         return s.decode('UTF-8')
  *     spos = s
  *     is_non_ascii = 0             # <<<<<<<<<<<<<<
@@ -33434,7 +33549,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   __pyx_v_is_non_ascii = 0;
 
-  /* "src/lxml/apihelpers.pxi":1460
+  /* "src/lxml/apihelpers.pxi":1462
  *     spos = s
  *     is_non_ascii = 0
  *     while spos[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -33445,7 +33560,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
     __pyx_t_1 = (((__pyx_v_spos[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/apihelpers.pxi":1461
+    /* "src/lxml/apihelpers.pxi":1463
  *     is_non_ascii = 0
  *     while spos[0] != c'\0':
  *         if spos[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -33455,7 +33570,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
     __pyx_t_1 = (((__pyx_v_spos[0]) & 0x80) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1462
+      /* "src/lxml/apihelpers.pxi":1464
  *     while spos[0] != c'\0':
  *         if spos[0] & 0x80:
  *             is_non_ascii = 1             # <<<<<<<<<<<<<<
@@ -33464,7 +33579,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
       __pyx_v_is_non_ascii = 1;
 
-      /* "src/lxml/apihelpers.pxi":1463
+      /* "src/lxml/apihelpers.pxi":1465
  *         if spos[0] & 0x80:
  *             is_non_ascii = 1
  *             break             # <<<<<<<<<<<<<<
@@ -33473,7 +33588,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
       goto __pyx_L5_break;
 
-      /* "src/lxml/apihelpers.pxi":1461
+      /* "src/lxml/apihelpers.pxi":1463
  *     is_non_ascii = 0
  *     while spos[0] != c'\0':
  *         if spos[0] & 0x80:             # <<<<<<<<<<<<<<
@@ -33482,7 +33597,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1464
+    /* "src/lxml/apihelpers.pxi":1466
  *             is_non_ascii = 1
  *             break
  *         spos += 1             # <<<<<<<<<<<<<<
@@ -33493,7 +33608,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   }
   __pyx_L5_break:;
 
-  /* "src/lxml/apihelpers.pxi":1465
+  /* "src/lxml/apihelpers.pxi":1467
  *             break
  *         spos += 1
  *     slen = spos - s             # <<<<<<<<<<<<<<
@@ -33502,7 +33617,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   __pyx_v_slen = (__pyx_v_spos - __pyx_v_s);
 
-  /* "src/lxml/apihelpers.pxi":1466
+  /* "src/lxml/apihelpers.pxi":1468
  *         spos += 1
  *     slen = spos - s
  *     if spos[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -33512,7 +33627,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   __pyx_t_1 = (((__pyx_v_spos[0]) != '\x00') != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1467
+    /* "src/lxml/apihelpers.pxi":1469
  *     slen = spos - s
  *     if spos[0] != c'\0':
  *         slen += cstring_h.strlen(<const char*> spos)             # <<<<<<<<<<<<<<
@@ -33521,7 +33636,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
     __pyx_v_slen = (__pyx_v_slen + strlen(((char const *)__pyx_v_spos)));
 
-    /* "src/lxml/apihelpers.pxi":1466
+    /* "src/lxml/apihelpers.pxi":1468
  *         spos += 1
  *     slen = spos - s
  *     if spos[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -33530,7 +33645,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1468
+  /* "src/lxml/apihelpers.pxi":1470
  *     if spos[0] != c'\0':
  *         slen += cstring_h.strlen(<const char*> spos)
  *     if is_non_ascii:             # <<<<<<<<<<<<<<
@@ -33540,7 +33655,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   __pyx_t_1 = (__pyx_v_is_non_ascii != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1469
+    /* "src/lxml/apihelpers.pxi":1471
  *         slen += cstring_h.strlen(<const char*> spos)
  *     if is_non_ascii:
  *         return s[:slen].decode('UTF-8')             # <<<<<<<<<<<<<<
@@ -33548,13 +33663,13 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  * 
  */
     __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, 1469, __pyx_L1_error)
+    __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, 1471, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1468
+    /* "src/lxml/apihelpers.pxi":1470
  *     if spos[0] != c'\0':
  *         slen += cstring_h.strlen(<const char*> spos)
  *     if is_non_ascii:             # <<<<<<<<<<<<<<
@@ -33563,7 +33678,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1470
+  /* "src/lxml/apihelpers.pxi":1472
  *     if is_non_ascii:
  *         return s[:slen].decode('UTF-8')
  *     return <bytes>s[:slen]             # <<<<<<<<<<<<<<
@@ -33571,14 +33686,14 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
  * cdef bytes _utf8(object s):
  */
   __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, 1470, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBytes_FromStringAndSize(((const char*)__pyx_v_s) + 0, __pyx_v_slen - 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1472, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject*)__pyx_t_2));
   __pyx_r = __pyx_t_2;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1452
+  /* "src/lxml/apihelpers.pxi":1454
  *     return funicode(s) if s is not NULL else ''
  * 
  * cdef object funicode(const_xmlChar* s):             # <<<<<<<<<<<<<<
@@ -33597,7 +33712,7 @@ static PyObject *__pyx_f_4lxml_5etree_funicode(const xmlChar *__pyx_v_s) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1472
+/* "src/lxml/apihelpers.pxi":1474
  *     return <bytes>s[:slen]
  * 
  * cdef bytes _utf8(object s):             # <<<<<<<<<<<<<<
@@ -33617,7 +33732,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("_utf8", 0);
 
-  /* "src/lxml/apihelpers.pxi":1479
+  /* "src/lxml/apihelpers.pxi":1481
  *     cdef int valid
  *     cdef bytes utf8_string
  *     if python.IS_PYTHON2 and type(s) is bytes:             # <<<<<<<<<<<<<<
@@ -33636,7 +33751,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1480
+    /* "src/lxml/apihelpers.pxi":1482
  *     cdef bytes utf8_string
  *     if python.IS_PYTHON2 and type(s) is bytes:
  *         utf8_string = <bytes>s             # <<<<<<<<<<<<<<
@@ -33648,7 +33763,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
     __pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1481
+    /* "src/lxml/apihelpers.pxi":1483
  *     if python.IS_PYTHON2 and type(s) is bytes:
  *         utf8_string = <bytes>s
  *         valid = _is_valid_xml_ascii(utf8_string)             # <<<<<<<<<<<<<<
@@ -33657,7 +33772,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  */
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_ascii(__pyx_v_utf8_string);
 
-    /* "src/lxml/apihelpers.pxi":1479
+    /* "src/lxml/apihelpers.pxi":1481
  *     cdef int valid
  *     cdef bytes utf8_string
  *     if python.IS_PYTHON2 and type(s) is bytes:             # <<<<<<<<<<<<<<
@@ -33667,7 +33782,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
     goto __pyx_L3;
   }
 
-  /* "src/lxml/apihelpers.pxi":1482
+  /* "src/lxml/apihelpers.pxi":1484
  *         utf8_string = <bytes>s
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
@@ -33678,7 +33793,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/apihelpers.pxi":1483
+    /* "src/lxml/apihelpers.pxi":1485
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     elif isinstance(s, unicode):
  *         utf8_string = (<unicode>s).encode('utf8')             # <<<<<<<<<<<<<<
@@ -33687,14 +33802,14 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  */
     if (unlikely(__pyx_v_s == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
-      __PYX_ERR(5, 1483, __pyx_L1_error)
+      __PYX_ERR(5, 1485, __pyx_L1_error)
     }
-    __pyx_t_4 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_s)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1483, __pyx_L1_error)
+    __pyx_t_4 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_s)); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1485, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1484
+    /* "src/lxml/apihelpers.pxi":1486
  *     elif isinstance(s, unicode):
  *         utf8_string = (<unicode>s).encode('utf8')
  *         valid = _is_valid_xml_utf8(utf8_string)             # <<<<<<<<<<<<<<
@@ -33703,7 +33818,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  */
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_utf8(__pyx_v_utf8_string);
 
-    /* "src/lxml/apihelpers.pxi":1482
+    /* "src/lxml/apihelpers.pxi":1484
  *         utf8_string = <bytes>s
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     elif isinstance(s, unicode):             # <<<<<<<<<<<<<<
@@ -33713,7 +33828,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
     goto __pyx_L3;
   }
 
-  /* "src/lxml/apihelpers.pxi":1485
+  /* "src/lxml/apihelpers.pxi":1487
  *         utf8_string = (<unicode>s).encode('utf8')
  *         valid = _is_valid_xml_utf8(utf8_string)
  *     elif isinstance(s, (bytes, bytearray)):             # <<<<<<<<<<<<<<
@@ -33734,19 +33849,19 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_t_1 = (__pyx_t_3 != 0);
   if (likely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1486
+    /* "src/lxml/apihelpers.pxi":1488
  *         valid = _is_valid_xml_utf8(utf8_string)
  *     elif isinstance(s, (bytes, bytearray)):
  *         utf8_string = bytes(s)             # <<<<<<<<<<<<<<
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     else:
  */
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1486, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyBytes_Type)), __pyx_v_s); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1488, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_utf8_string = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1487
+    /* "src/lxml/apihelpers.pxi":1489
  *     elif isinstance(s, (bytes, bytearray)):
  *         utf8_string = bytes(s)
  *         valid = _is_valid_xml_ascii(utf8_string)             # <<<<<<<<<<<<<<
@@ -33755,7 +33870,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  */
     __pyx_v_valid = __pyx_f_4lxml_5etree__is_valid_xml_ascii(__pyx_v_utf8_string);
 
-    /* "src/lxml/apihelpers.pxi":1485
+    /* "src/lxml/apihelpers.pxi":1487
  *         utf8_string = (<unicode>s).encode('utf8')
  *         valid = _is_valid_xml_utf8(utf8_string)
  *     elif isinstance(s, (bytes, bytearray)):             # <<<<<<<<<<<<<<
@@ -33765,7 +33880,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
     goto __pyx_L3;
   }
 
-  /* "src/lxml/apihelpers.pxi":1489
+  /* "src/lxml/apihelpers.pxi":1491
  *         valid = _is_valid_xml_ascii(utf8_string)
  *     else:
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)             # <<<<<<<<<<<<<<
@@ -33773,21 +33888,21 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  *         raise ValueError(
  */
   /*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, 1489, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)Py_TYPE(__pyx_v_s)), __pyx_n_s_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1491, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_5 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Argument_must_be_bytes_or_unicod, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1489, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyString_FormatSafe(__pyx_kp_s_Argument_must_be_bytes_or_unicod, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1491, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1489, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_5); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1491, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_t_4, 0, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(5, 1489, __pyx_L1_error)
+    __PYX_ERR(5, 1491, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "src/lxml/apihelpers.pxi":1490
+  /* "src/lxml/apihelpers.pxi":1492
  *     else:
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
  *     if not valid:             # <<<<<<<<<<<<<<
@@ -33797,20 +33912,20 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_t_1 = ((!(__pyx_v_valid != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1491
+    /* "src/lxml/apihelpers.pxi":1493
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
  *     if not valid:
  *         raise ValueError(             # <<<<<<<<<<<<<<
  *             "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__14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1491, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__14, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1493, __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;
-    __PYX_ERR(5, 1491, __pyx_L1_error)
+    __PYX_ERR(5, 1493, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1490
+    /* "src/lxml/apihelpers.pxi":1492
  *     else:
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
  *     if not valid:             # <<<<<<<<<<<<<<
@@ -33819,7 +33934,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1493
+  /* "src/lxml/apihelpers.pxi":1495
  *         raise ValueError(
  *             "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
  *     return utf8_string             # <<<<<<<<<<<<<<
@@ -33831,7 +33946,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   __pyx_r = __pyx_v_utf8_string;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1472
+  /* "src/lxml/apihelpers.pxi":1474
  *     return <bytes>s[:slen]
  * 
  * cdef bytes _utf8(object s):             # <<<<<<<<<<<<<<
@@ -33852,7 +33967,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8(PyObject *__pyx_v_s) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1496
+/* "src/lxml/apihelpers.pxi":1498
  * 
  * 
  * cdef bytes _utf8orNone(object s):             # <<<<<<<<<<<<<<
@@ -33868,7 +33983,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_utf8orNone", 0);
 
-  /* "src/lxml/apihelpers.pxi":1497
+  /* "src/lxml/apihelpers.pxi":1499
  * 
  * cdef bytes _utf8orNone(object s):
  *     return _utf8(s) if s is not None else None             # <<<<<<<<<<<<<<
@@ -33878,7 +33993,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_2 = (__pyx_v_s != Py_None);
   if ((__pyx_t_2 != 0)) {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1497, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_s); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1499, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_1 = __pyx_t_3;
     __pyx_t_3 = 0;
@@ -33890,7 +34005,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1496
+  /* "src/lxml/apihelpers.pxi":1498
  * 
  * 
  * cdef bytes _utf8orNone(object s):             # <<<<<<<<<<<<<<
@@ -33910,7 +34025,7 @@ static PyObject *__pyx_f_4lxml_5etree__utf8orNone(PyObject *__pyx_v_s) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1500
+/* "src/lxml/apihelpers.pxi":1502
  * 
  * 
  * cdef strrepr(s):             # <<<<<<<<<<<<<<
@@ -33927,7 +34042,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("strrepr", 0);
 
-  /* "src/lxml/apihelpers.pxi":1504
+  /* "src/lxml/apihelpers.pxi":1506
  *     methods, e.g. _Element.__repr__().
  *     """
  *     return s.encode('unicode-escape') if python.IS_PYTHON2 else s             # <<<<<<<<<<<<<<
@@ -33936,7 +34051,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
  */
   __Pyx_XDECREF(__pyx_r);
   if ((IS_PYTHON2 != 0)) {
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1504, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_s, __pyx_n_s_encode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1506, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -33950,7 +34065,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
     }
     __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_kp_s_unicode_escape) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_kp_s_unicode_escape);
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1504, __pyx_L1_error)
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1506, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = __pyx_t_2;
@@ -33963,7 +34078,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1500
+  /* "src/lxml/apihelpers.pxi":1502
  * 
  * 
  * cdef strrepr(s):             # <<<<<<<<<<<<<<
@@ -33985,7 +34100,7 @@ static PyObject *__pyx_f_4lxml_5etree_strrepr(PyObject *__pyx_v_s) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1507
+/* "src/lxml/apihelpers.pxi":1509
  * 
  * 
  * cdef bint _isFilePath(const_xmlChar* c_path):             # <<<<<<<<<<<<<<
@@ -34001,7 +34116,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_isFilePath", 0);
 
-  /* "src/lxml/apihelpers.pxi":1511
+  /* "src/lxml/apihelpers.pxi":1513
  *     cdef xmlChar c
  *     # test if it looks like an absolute Unix path or a Windows network path
  *     if c_path[0] == c'/':             # <<<<<<<<<<<<<<
@@ -34011,7 +34126,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   __pyx_t_1 = (((__pyx_v_c_path[0]) == '/') != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1512
+    /* "src/lxml/apihelpers.pxi":1514
  *     # test if it looks like an absolute Unix path or a Windows network path
  *     if c_path[0] == c'/':
  *         return 1             # <<<<<<<<<<<<<<
@@ -34021,7 +34136,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1511
+    /* "src/lxml/apihelpers.pxi":1513
  *     cdef xmlChar c
  *     # test if it looks like an absolute Unix path or a Windows network path
  *     if c_path[0] == c'/':             # <<<<<<<<<<<<<<
@@ -34030,7 +34145,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1515
+  /* "src/lxml/apihelpers.pxi":1517
  * 
  *     # test if it looks like an absolute Windows path or URL
  *     if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':             # <<<<<<<<<<<<<<
@@ -34056,7 +34171,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1516
+    /* "src/lxml/apihelpers.pxi":1518
  *     # test if it looks like an absolute Windows path or URL
  *     if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *         c_path += 1             # <<<<<<<<<<<<<<
@@ -34065,7 +34180,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
     __pyx_v_c_path = (__pyx_v_c_path + 1);
 
-    /* "src/lxml/apihelpers.pxi":1517
+    /* "src/lxml/apihelpers.pxi":1519
  *     if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *         c_path += 1
  *         if c_path[0] == c':' and c_path[1] in b'\0\\':             # <<<<<<<<<<<<<<
@@ -34092,7 +34207,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
     __pyx_L8_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1518
+      /* "src/lxml/apihelpers.pxi":1520
  *         c_path += 1
  *         if c_path[0] == c':' and c_path[1] in b'\0\\':
  *             return 1  # C: or C:\...             # <<<<<<<<<<<<<<
@@ -34102,7 +34217,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1517
+      /* "src/lxml/apihelpers.pxi":1519
  *     if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *         c_path += 1
  *         if c_path[0] == c':' and c_path[1] in b'\0\\':             # <<<<<<<<<<<<<<
@@ -34111,7 +34226,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1521
+    /* "src/lxml/apihelpers.pxi":1523
  * 
  *         # test if it looks like a URL with scheme://
  *         while c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':             # <<<<<<<<<<<<<<
@@ -34138,7 +34253,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
       __pyx_L12_bool_binop_done:;
       if (!__pyx_t_1) break;
 
-      /* "src/lxml/apihelpers.pxi":1522
+      /* "src/lxml/apihelpers.pxi":1524
  *         # test if it looks like a URL with scheme://
  *         while c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *             c_path += 1             # <<<<<<<<<<<<<<
@@ -34148,7 +34263,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
       __pyx_v_c_path = (__pyx_v_c_path + 1);
     }
 
-    /* "src/lxml/apihelpers.pxi":1523
+    /* "src/lxml/apihelpers.pxi":1525
  *         while c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *             c_path += 1
  *         if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/':             # <<<<<<<<<<<<<<
@@ -34172,7 +34287,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
     __pyx_L15_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1524
+      /* "src/lxml/apihelpers.pxi":1526
  *             c_path += 1
  *         if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/':
  *             return 0             # <<<<<<<<<<<<<<
@@ -34182,7 +34297,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
       __pyx_r = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1523
+      /* "src/lxml/apihelpers.pxi":1525
  *         while c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':
  *             c_path += 1
  *         if c_path[0] == c':' and c_path[1] == c'/' and c_path[2] == c'/':             # <<<<<<<<<<<<<<
@@ -34191,7 +34306,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1515
+    /* "src/lxml/apihelpers.pxi":1517
  * 
  *     # test if it looks like an absolute Windows path or URL
  *     if c'a' <= c_path[0] <= c'z' or c'A' <= c_path[0] <= c'Z':             # <<<<<<<<<<<<<<
@@ -34200,7 +34315,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1527
+  /* "src/lxml/apihelpers.pxi":1529
  * 
  *     # assume it's a relative path
  *     return 1             # <<<<<<<<<<<<<<
@@ -34210,7 +34325,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1507
+  /* "src/lxml/apihelpers.pxi":1509
  * 
  * 
  * cdef bint _isFilePath(const_xmlChar* c_path):             # <<<<<<<<<<<<<<
@@ -34224,7 +34339,7 @@ static int __pyx_f_4lxml_5etree__isFilePath(const xmlChar *__pyx_v_c_path) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1529
+/* "src/lxml/apihelpers.pxi":1531
  *     return 1
  * 
  * cdef object _encodeFilename(object filename):             # <<<<<<<<<<<<<<
@@ -34246,7 +34361,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("_encodeFilename", 0);
 
-  /* "src/lxml/apihelpers.pxi":1532
+  /* "src/lxml/apihelpers.pxi":1534
  *     u"""Make sure a filename is 8-bit encoded (or None).
  *     """
  *     if filename is None:             # <<<<<<<<<<<<<<
@@ -34257,7 +34372,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/apihelpers.pxi":1533
+    /* "src/lxml/apihelpers.pxi":1535
  *     """
  *     if filename is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -34268,7 +34383,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1532
+    /* "src/lxml/apihelpers.pxi":1534
  *     u"""Make sure a filename is 8-bit encoded (or None).
  *     """
  *     if filename is None:             # <<<<<<<<<<<<<<
@@ -34277,7 +34392,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1534
+  /* "src/lxml/apihelpers.pxi":1536
  *     if filename is None:
  *         return None
  *     elif isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -34288,7 +34403,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1535
+    /* "src/lxml/apihelpers.pxi":1537
  *         return None
  *     elif isinstance(filename, bytes):
  *         return filename             # <<<<<<<<<<<<<<
@@ -34300,7 +34415,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
     __pyx_r = __pyx_v_filename;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1534
+    /* "src/lxml/apihelpers.pxi":1536
  *     if filename is None:
  *         return None
  *     elif isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -34309,7 +34424,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1536
+  /* "src/lxml/apihelpers.pxi":1538
  *     elif isinstance(filename, bytes):
  *         return filename
  *     elif isinstance(filename, unicode):             # <<<<<<<<<<<<<<
@@ -34320,7 +34435,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
 
-    /* "src/lxml/apihelpers.pxi":1537
+    /* "src/lxml/apihelpers.pxi":1539
  *         return filename
  *     elif isinstance(filename, unicode):
  *         filename8 = (<unicode>filename).encode('utf8')             # <<<<<<<<<<<<<<
@@ -34329,25 +34444,25 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
-      __PYX_ERR(5, 1537, __pyx_L1_error)
+      __PYX_ERR(5, 1539, __pyx_L1_error)
     }
-    __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1537, __pyx_L1_error)
+    __pyx_t_3 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename)); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1539, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_filename8 = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1538
+    /* "src/lxml/apihelpers.pxi":1540
  *     elif isinstance(filename, unicode):
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):             # <<<<<<<<<<<<<<
  *             try:
  *                 return python.PyUnicode_AsEncodedString(
  */
-    __pyx_t_4 = __Pyx_PyObject_AsWritableUString(__pyx_v_filename8); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 1538, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_AsWritableUString(__pyx_v_filename8); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 1540, __pyx_L1_error)
     __pyx_t_2 = (__pyx_f_4lxml_5etree__isFilePath(((unsigned char *)__pyx_t_4)) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/apihelpers.pxi":1539
+      /* "src/lxml/apihelpers.pxi":1541
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):
  *             try:             # <<<<<<<<<<<<<<
@@ -34363,7 +34478,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
         __Pyx_XGOTREF(__pyx_t_7);
         /*try:*/ {
 
-          /* "src/lxml/apihelpers.pxi":1540
+          /* "src/lxml/apihelpers.pxi":1542
  *         if _isFilePath(<unsigned char*>filename8):
  *             try:
  *                 return python.PyUnicode_AsEncodedString(             # <<<<<<<<<<<<<<
@@ -34372,20 +34487,20 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
           __Pyx_XDECREF(__pyx_r);
 
-          /* "src/lxml/apihelpers.pxi":1541
+          /* "src/lxml/apihelpers.pxi":1543
  *             try:
  *                 return python.PyUnicode_AsEncodedString(
  *                     filename, _C_FILENAME_ENCODING, NULL)             # <<<<<<<<<<<<<<
  *             except UnicodeEncodeError:
  *                 pass
  */
-          __pyx_t_3 = PyUnicode_AsEncodedString(__pyx_v_filename, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1540, __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, 1542, __pyx_L5_error)
           __Pyx_GOTREF(__pyx_t_3);
           __pyx_r = __pyx_t_3;
           __pyx_t_3 = 0;
           goto __pyx_L9_try_return;
 
-          /* "src/lxml/apihelpers.pxi":1539
+          /* "src/lxml/apihelpers.pxi":1541
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):
  *             try:             # <<<<<<<<<<<<<<
@@ -34396,7 +34511,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
         __pyx_L5_error:;
         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-        /* "src/lxml/apihelpers.pxi":1542
+        /* "src/lxml/apihelpers.pxi":1544
  *                 return python.PyUnicode_AsEncodedString(
  *                     filename, _C_FILENAME_ENCODING, NULL)
  *             except UnicodeEncodeError:             # <<<<<<<<<<<<<<
@@ -34411,7 +34526,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
         goto __pyx_L7_except_error;
         __pyx_L7_except_error:;
 
-        /* "src/lxml/apihelpers.pxi":1539
+        /* "src/lxml/apihelpers.pxi":1541
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):
  *             try:             # <<<<<<<<<<<<<<
@@ -34436,7 +34551,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
         __Pyx_ExceptionReset(__pyx_t_5, __pyx_t_6, __pyx_t_7);
       }
 
-      /* "src/lxml/apihelpers.pxi":1538
+      /* "src/lxml/apihelpers.pxi":1540
  *     elif isinstance(filename, unicode):
  *         filename8 = (<unicode>filename).encode('utf8')
  *         if _isFilePath(<unsigned char*>filename8):             # <<<<<<<<<<<<<<
@@ -34445,7 +34560,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1544
+    /* "src/lxml/apihelpers.pxi":1546
  *             except UnicodeEncodeError:
  *                 pass
  *         return filename8             # <<<<<<<<<<<<<<
@@ -34457,7 +34572,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
     __pyx_r = __pyx_v_filename8;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1536
+    /* "src/lxml/apihelpers.pxi":1538
  *     elif isinstance(filename, bytes):
  *         return filename
  *     elif isinstance(filename, unicode):             # <<<<<<<<<<<<<<
@@ -34466,7 +34581,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1546
+  /* "src/lxml/apihelpers.pxi":1548
  *         return filename8
  *     else:
  *         raise TypeError("Argument must be string or unicode.")             # <<<<<<<<<<<<<<
@@ -34474,14 +34589,14 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
  * cdef object _decodeFilename(const_xmlChar* c_path):
  */
   /*else*/ {
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1546, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1548, __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(5, 1546, __pyx_L1_error)
+    __PYX_ERR(5, 1548, __pyx_L1_error)
   }
 
-  /* "src/lxml/apihelpers.pxi":1529
+  /* "src/lxml/apihelpers.pxi":1531
  *     return 1
  * 
  * cdef object _encodeFilename(object filename):             # <<<<<<<<<<<<<<
@@ -34501,7 +34616,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilename(PyObject *__pyx_v_filename
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1548
+/* "src/lxml/apihelpers.pxi":1550
  *         raise TypeError("Argument must be string or unicode.")
  * 
  * cdef object _decodeFilename(const_xmlChar* c_path):             # <<<<<<<<<<<<<<
@@ -34515,7 +34630,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_p
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_decodeFilename", 0);
 
-  /* "src/lxml/apihelpers.pxi":1551
+  /* "src/lxml/apihelpers.pxi":1553
  *     u"""Make the filename a unicode string if we are in Py3.
  *     """
  *     return _decodeFilenameWithLength(c_path, tree.xmlStrlen(c_path))             # <<<<<<<<<<<<<<
@@ -34523,13 +34638,13 @@ 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_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, 1551, __pyx_L1_error)
+  __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, 1553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1548
+  /* "src/lxml/apihelpers.pxi":1550
  *         raise TypeError("Argument must be string or unicode.")
  * 
  * cdef object _decodeFilename(const_xmlChar* c_path):             # <<<<<<<<<<<<<<
@@ -34548,7 +34663,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilename(const xmlChar *__pyx_v_c_p
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1553
+/* "src/lxml/apihelpers.pxi":1555
  *     return _decodeFilenameWithLength(c_path, tree.xmlStrlen(c_path))
  * 
  * cdef object _decodeFilenameWithLength(const_xmlChar* c_path, size_t c_len):             # <<<<<<<<<<<<<<
@@ -34570,7 +34685,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_decodeFilenameWithLength", 0);
 
-  /* "src/lxml/apihelpers.pxi":1556
+  /* "src/lxml/apihelpers.pxi":1558
  *     u"""Make the filename a unicode string if we are in Py3.
  *     """
  *     if _isFilePath(c_path):             # <<<<<<<<<<<<<<
@@ -34580,7 +34695,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
   __pyx_t_1 = (__pyx_f_4lxml_5etree__isFilePath(__pyx_v_c_path) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1557
+    /* "src/lxml/apihelpers.pxi":1559
  *     """
  *     if _isFilePath(c_path):
  *         try:             # <<<<<<<<<<<<<<
@@ -34596,7 +34711,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
       __Pyx_XGOTREF(__pyx_t_4);
       /*try:*/ {
 
-        /* "src/lxml/apihelpers.pxi":1558
+        /* "src/lxml/apihelpers.pxi":1560
  *     if _isFilePath(c_path):
  *         try:
  *             return python.PyUnicode_Decode(             # <<<<<<<<<<<<<<
@@ -34605,20 +34720,20 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  */
         __Pyx_XDECREF(__pyx_r);
 
-        /* "src/lxml/apihelpers.pxi":1559
+        /* "src/lxml/apihelpers.pxi":1561
  *         try:
  *             return python.PyUnicode_Decode(
  *                 <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL)             # <<<<<<<<<<<<<<
  *         except UnicodeDecodeError:
  *             pass
  */
-        __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, 1558, __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, 1560, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_r = __pyx_t_5;
         __pyx_t_5 = 0;
         goto __pyx_L8_try_return;
 
-        /* "src/lxml/apihelpers.pxi":1557
+        /* "src/lxml/apihelpers.pxi":1559
  *     """
  *     if _isFilePath(c_path):
  *         try:             # <<<<<<<<<<<<<<
@@ -34629,7 +34744,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
       __pyx_L4_error:;
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "src/lxml/apihelpers.pxi":1560
+      /* "src/lxml/apihelpers.pxi":1562
  *             return python.PyUnicode_Decode(
  *                 <const_char*>c_path, c_len, _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError:             # <<<<<<<<<<<<<<
@@ -34644,7 +34759,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
       goto __pyx_L6_except_error;
       __pyx_L6_except_error:;
 
-      /* "src/lxml/apihelpers.pxi":1557
+      /* "src/lxml/apihelpers.pxi":1559
  *     """
  *     if _isFilePath(c_path):
  *         try:             # <<<<<<<<<<<<<<
@@ -34669,7 +34784,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
       __Pyx_ExceptionReset(__pyx_t_2, __pyx_t_3, __pyx_t_4);
     }
 
-    /* "src/lxml/apihelpers.pxi":1556
+    /* "src/lxml/apihelpers.pxi":1558
  *     u"""Make the filename a unicode string if we are in Py3.
  *     """
  *     if _isFilePath(c_path):             # <<<<<<<<<<<<<<
@@ -34678,7 +34793,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1562
+  /* "src/lxml/apihelpers.pxi":1564
  *         except UnicodeDecodeError:
  *             pass
  *     try:             # <<<<<<<<<<<<<<
@@ -34694,7 +34809,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
     __Pyx_XGOTREF(__pyx_t_2);
     /*try:*/ {
 
-      /* "src/lxml/apihelpers.pxi":1563
+      /* "src/lxml/apihelpers.pxi":1565
  *             pass
  *     try:
  *         return (<unsigned char*>c_path)[:c_len].decode('UTF-8')             # <<<<<<<<<<<<<<
@@ -34702,13 +34817,13 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  *         # this is a stupid fallback, but it might still work...
  */
       __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, 1563, __pyx_L10_error)
+      __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, 1565, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_r = __pyx_t_5;
       __pyx_t_5 = 0;
       goto __pyx_L14_try_return;
 
-      /* "src/lxml/apihelpers.pxi":1562
+      /* "src/lxml/apihelpers.pxi":1564
  *         except UnicodeDecodeError:
  *             pass
  *     try:             # <<<<<<<<<<<<<<
@@ -34719,7 +34834,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
     __pyx_L10_error:;
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1564
+    /* "src/lxml/apihelpers.pxi":1566
  *     try:
  *         return (<unsigned char*>c_path)[:c_len].decode('UTF-8')
  *     except UnicodeDecodeError:             # <<<<<<<<<<<<<<
@@ -34729,12 +34844,12 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree._decodeFilenameWithLength", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(5, 1564, __pyx_L12_except_error)
+      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(5, 1566, __pyx_L12_except_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_8);
 
-      /* "src/lxml/apihelpers.pxi":1566
+      /* "src/lxml/apihelpers.pxi":1568
  *     except UnicodeDecodeError:
  *         # this is a stupid fallback, but it might still work...
  *         return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace')             # <<<<<<<<<<<<<<
@@ -34742,7 +34857,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
  * cdef object _encodeFilenameUTF8(object filename):
  */
       __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, 1566, __pyx_L12_except_error)
+      __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, 1568, __pyx_L12_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_r = __pyx_t_9;
       __pyx_t_9 = 0;
@@ -34754,7 +34869,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
     goto __pyx_L12_except_error;
     __pyx_L12_except_error:;
 
-    /* "src/lxml/apihelpers.pxi":1562
+    /* "src/lxml/apihelpers.pxi":1564
  *         except UnicodeDecodeError:
  *             pass
  *     try:             # <<<<<<<<<<<<<<
@@ -34780,7 +34895,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
     goto __pyx_L0;
   }
 
-  /* "src/lxml/apihelpers.pxi":1553
+  /* "src/lxml/apihelpers.pxi":1555
  *     return _decodeFilenameWithLength(c_path, tree.xmlStrlen(c_path))
  * 
  * cdef object _decodeFilenameWithLength(const_xmlChar* c_path, size_t c_len):             # <<<<<<<<<<<<<<
@@ -34802,7 +34917,7 @@ static PyObject *__pyx_f_4lxml_5etree__decodeFilenameWithLength(const xmlChar *_
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1568
+/* "src/lxml/apihelpers.pxi":1570
  *         return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace')
  * 
  * cdef object _encodeFilenameUTF8(object filename):             # <<<<<<<<<<<<<<
@@ -34835,7 +34950,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   __Pyx_RefNannySetupContext("_encodeFilenameUTF8", 0);
   __Pyx_INCREF(__pyx_v_filename);
 
-  /* "src/lxml/apihelpers.pxi":1573
+  /* "src/lxml/apihelpers.pxi":1575
  *     """
  *     cdef char* c_filename
  *     if filename is None:             # <<<<<<<<<<<<<<
@@ -34846,7 +34961,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/apihelpers.pxi":1574
+    /* "src/lxml/apihelpers.pxi":1576
  *     cdef char* c_filename
  *     if filename is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -34857,7 +34972,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1573
+    /* "src/lxml/apihelpers.pxi":1575
  *     """
  *     cdef char* c_filename
  *     if filename is None:             # <<<<<<<<<<<<<<
@@ -34866,7 +34981,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1575
+  /* "src/lxml/apihelpers.pxi":1577
  *     if filename is None:
  *         return None
  *     elif isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -34877,7 +34992,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1576
+    /* "src/lxml/apihelpers.pxi":1578
  *         return None
  *     elif isinstance(filename, bytes):
  *         if not isutf8l(<bytes>filename, len(<bytes>filename)):             # <<<<<<<<<<<<<<
@@ -34886,18 +35001,18 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(5, 1576, __pyx_L1_error)
+      __PYX_ERR(5, 1578, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyBytes_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(5, 1576, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyBytes_AsUString(__pyx_v_filename); if (unlikely((!__pyx_t_3) && PyErr_Occurred())) __PYX_ERR(5, 1578, __pyx_L1_error)
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(5, 1576, __pyx_L1_error)
+      __PYX_ERR(5, 1578, __pyx_L1_error)
     }
-    __pyx_t_4 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1576, __pyx_L1_error)
+    __pyx_t_4 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1578, __pyx_L1_error)
     __pyx_t_1 = ((!(__pyx_f_4lxml_5etree_isutf8l(__pyx_t_3, __pyx_t_4) != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1578
+      /* "src/lxml/apihelpers.pxi":1580
  *         if not isutf8l(<bytes>filename, len(<bytes>filename)):
  *             # plain ASCII!
  *             return filename             # <<<<<<<<<<<<<<
@@ -34909,7 +35024,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       __pyx_r = __pyx_v_filename;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1576
+      /* "src/lxml/apihelpers.pxi":1578
  *         return None
  *     elif isinstance(filename, bytes):
  *         if not isutf8l(<bytes>filename, len(<bytes>filename)):             # <<<<<<<<<<<<<<
@@ -34918,7 +35033,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1579
+    /* "src/lxml/apihelpers.pxi":1581
  *             # plain ASCII!
  *             return filename
  *         c_filename = _cstr(<bytes>filename)             # <<<<<<<<<<<<<<
@@ -34927,7 +35042,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
     __pyx_v_c_filename = PyBytes_AS_STRING(__pyx_v_filename);
 
-    /* "src/lxml/apihelpers.pxi":1580
+    /* "src/lxml/apihelpers.pxi":1582
  *             return filename
  *         c_filename = _cstr(<bytes>filename)
  *         try:             # <<<<<<<<<<<<<<
@@ -34943,7 +35058,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       __Pyx_XGOTREF(__pyx_t_7);
       /*try:*/ {
 
-        /* "src/lxml/apihelpers.pxi":1583
+        /* "src/lxml/apihelpers.pxi":1585
  *             # try to decode with default encoding
  *             filename = python.PyUnicode_Decode(
  *                 c_filename, len(<bytes>filename),             # <<<<<<<<<<<<<<
@@ -34952,23 +35067,23 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
         if (unlikely(__pyx_v_filename == Py_None)) {
           PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-          __PYX_ERR(5, 1583, __pyx_L5_error)
+          __PYX_ERR(5, 1585, __pyx_L5_error)
         }
-        __pyx_t_4 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1583, __pyx_L5_error)
+        __pyx_t_4 = PyBytes_GET_SIZE(((PyObject*)__pyx_v_filename)); if (unlikely(__pyx_t_4 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1585, __pyx_L5_error)
 
-        /* "src/lxml/apihelpers.pxi":1582
+        /* "src/lxml/apihelpers.pxi":1584
  *         try:
  *             # try to decode with default encoding
  *             filename = python.PyUnicode_Decode(             # <<<<<<<<<<<<<<
  *                 c_filename, len(<bytes>filename),
  *                 _C_FILENAME_ENCODING, NULL)
  */
-        __pyx_t_8 = PyUnicode_Decode(__pyx_v_c_filename, __pyx_t_4, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 1582, __pyx_L5_error)
+        __pyx_t_8 = PyUnicode_Decode(__pyx_v_c_filename, __pyx_t_4, __pyx_v_4lxml_5etree__C_FILENAME_ENCODING, NULL); if (unlikely(!__pyx_t_8)) __PYX_ERR(5, 1584, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_DECREF_SET(__pyx_v_filename, __pyx_t_8);
         __pyx_t_8 = 0;
 
-        /* "src/lxml/apihelpers.pxi":1580
+        /* "src/lxml/apihelpers.pxi":1582
  *             return filename
  *         c_filename = _cstr(<bytes>filename)
  *         try:             # <<<<<<<<<<<<<<
@@ -34983,7 +35098,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       __pyx_L5_error:;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "src/lxml/apihelpers.pxi":1585
+      /* "src/lxml/apihelpers.pxi":1587
  *                 c_filename, len(<bytes>filename),
  *                 _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError as decode_exc:             # <<<<<<<<<<<<<<
@@ -34993,14 +35108,14 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
       if (__pyx_t_9) {
         __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(5, 1585, __pyx_L7_except_error)
+        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_10, &__pyx_t_11) < 0) __PYX_ERR(5, 1587, __pyx_L7_except_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_10);
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_INCREF(__pyx_t_10);
         __pyx_v_decode_exc = __pyx_t_10;
 
-        /* "src/lxml/apihelpers.pxi":1586
+        /* "src/lxml/apihelpers.pxi":1588
  *                 _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError as decode_exc:
  *             try:             # <<<<<<<<<<<<<<
@@ -35016,7 +35131,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
           __Pyx_XGOTREF(__pyx_t_14);
           /*try:*/ {
 
-            /* "src/lxml/apihelpers.pxi":1588
+            /* "src/lxml/apihelpers.pxi":1590
  *             try:
  *                 # try if it's proper UTF-8
  *                 (<bytes>filename).decode('utf8')             # <<<<<<<<<<<<<<
@@ -35025,13 +35140,13 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
             if (unlikely(__pyx_v_filename == Py_None)) {
               PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-              __PYX_ERR(5, 1588, __pyx_L13_error)
+              __PYX_ERR(5, 1590, __pyx_L13_error)
             }
-            __pyx_t_15 = __Pyx_decode_bytes(((PyObject*)__pyx_v_filename), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_15)) __PYX_ERR(5, 1588, __pyx_L13_error)
+            __pyx_t_15 = __Pyx_decode_bytes(((PyObject*)__pyx_v_filename), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_15)) __PYX_ERR(5, 1590, __pyx_L13_error)
             __Pyx_GOTREF(__pyx_t_15);
             __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
 
-            /* "src/lxml/apihelpers.pxi":1589
+            /* "src/lxml/apihelpers.pxi":1591
  *                 # try if it's proper UTF-8
  *                 (<bytes>filename).decode('utf8')
  *                 return filename             # <<<<<<<<<<<<<<
@@ -35046,7 +35161,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
             __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
             goto __pyx_L17_try_return;
 
-            /* "src/lxml/apihelpers.pxi":1586
+            /* "src/lxml/apihelpers.pxi":1588
  *                 _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError as decode_exc:
  *             try:             # <<<<<<<<<<<<<<
@@ -35057,7 +35172,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
           __pyx_L13_error:;
           __Pyx_XDECREF(__pyx_t_15); __pyx_t_15 = 0;
 
-          /* "src/lxml/apihelpers.pxi":1590
+          /* "src/lxml/apihelpers.pxi":1592
  *                 (<bytes>filename).decode('utf8')
  *                 return filename
  *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
@@ -35067,12 +35182,12 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
           __pyx_t_9 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_UnicodeDecodeError);
           if (__pyx_t_9) {
             __Pyx_AddTraceback("lxml.etree._encodeFilenameUTF8", __pyx_clineno, __pyx_lineno, __pyx_filename);
-            if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0) __PYX_ERR(5, 1590, __pyx_L15_except_error)
+            if (__Pyx_GetException(&__pyx_t_15, &__pyx_t_16, &__pyx_t_17) < 0) __PYX_ERR(5, 1592, __pyx_L15_except_error)
             __Pyx_GOTREF(__pyx_t_15);
             __Pyx_GOTREF(__pyx_t_16);
             __Pyx_GOTREF(__pyx_t_17);
 
-            /* "src/lxml/apihelpers.pxi":1591
+            /* "src/lxml/apihelpers.pxi":1593
  *                 return filename
  *             except UnicodeDecodeError:
  *                 raise decode_exc # otherwise re-raise original exception             # <<<<<<<<<<<<<<
@@ -35080,12 +35195,12 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  *         return (<unicode>filename).encode('utf8')
  */
             __Pyx_Raise(__pyx_v_decode_exc, 0, 0, 0);
-            __PYX_ERR(5, 1591, __pyx_L15_except_error)
+            __PYX_ERR(5, 1593, __pyx_L15_except_error)
           }
           goto __pyx_L15_except_error;
           __pyx_L15_except_error:;
 
-          /* "src/lxml/apihelpers.pxi":1586
+          /* "src/lxml/apihelpers.pxi":1588
  *                 _C_FILENAME_ENCODING, NULL)
  *         except UnicodeDecodeError as decode_exc:
  *             try:             # <<<<<<<<<<<<<<
@@ -35108,7 +35223,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       goto __pyx_L7_except_error;
       __pyx_L7_except_error:;
 
-      /* "src/lxml/apihelpers.pxi":1580
+      /* "src/lxml/apihelpers.pxi":1582
  *             return filename
  *         c_filename = _cstr(<bytes>filename)
  *         try:             # <<<<<<<<<<<<<<
@@ -35129,7 +35244,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
       __pyx_L10_try_end:;
     }
 
-    /* "src/lxml/apihelpers.pxi":1575
+    /* "src/lxml/apihelpers.pxi":1577
  *     if filename is None:
  *         return None
  *     elif isinstance(filename, bytes):             # <<<<<<<<<<<<<<
@@ -35138,7 +35253,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1592
+  /* "src/lxml/apihelpers.pxi":1594
  *             except UnicodeDecodeError:
  *                 raise decode_exc # otherwise re-raise original exception
  *     if isinstance(filename, unicode):             # <<<<<<<<<<<<<<
@@ -35149,7 +35264,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
 
-    /* "src/lxml/apihelpers.pxi":1593
+    /* "src/lxml/apihelpers.pxi":1595
  *                 raise decode_exc # otherwise re-raise original exception
  *     if isinstance(filename, unicode):
  *         return (<unicode>filename).encode('utf8')             # <<<<<<<<<<<<<<
@@ -35159,15 +35274,15 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
     __Pyx_XDECREF(__pyx_r);
     if (unlikely(__pyx_v_filename == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "encode");
-      __PYX_ERR(5, 1593, __pyx_L1_error)
+      __PYX_ERR(5, 1595, __pyx_L1_error)
     }
-    __pyx_t_11 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename)); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1593, __pyx_L1_error)
+    __pyx_t_11 = PyUnicode_AsUTF8String(((PyObject*)__pyx_v_filename)); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1595, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_11);
     __pyx_r = __pyx_t_11;
     __pyx_t_11 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1592
+    /* "src/lxml/apihelpers.pxi":1594
  *             except UnicodeDecodeError:
  *                 raise decode_exc # otherwise re-raise original exception
  *     if isinstance(filename, unicode):             # <<<<<<<<<<<<<<
@@ -35176,7 +35291,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1595
+  /* "src/lxml/apihelpers.pxi":1597
  *         return (<unicode>filename).encode('utf8')
  *     else:
  *         raise TypeError("Argument must be string or unicode.")             # <<<<<<<<<<<<<<
@@ -35184,14 +35299,14 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
  * cdef tuple _getNsTag(tag):
  */
   /*else*/ {
-    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1595, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyObject_Call(__pyx_builtin_TypeError, __pyx_tuple__15, NULL); if (unlikely(!__pyx_t_11)) __PYX_ERR(5, 1597, __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;
-    __PYX_ERR(5, 1595, __pyx_L1_error)
+    __PYX_ERR(5, 1597, __pyx_L1_error)
   }
 
-  /* "src/lxml/apihelpers.pxi":1568
+  /* "src/lxml/apihelpers.pxi":1570
  *         return (<unsigned char*>c_path)[:c_len].decode('latin-1', 'replace')
  * 
  * cdef object _encodeFilenameUTF8(object filename):             # <<<<<<<<<<<<<<
@@ -35217,7 +35332,7 @@ static PyObject *__pyx_f_4lxml_5etree__encodeFilenameUTF8(PyObject *__pyx_v_file
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1597
+/* "src/lxml/apihelpers.pxi":1599
  *         raise TypeError("Argument must be string or unicode.")
  * 
  * cdef tuple _getNsTag(tag):             # <<<<<<<<<<<<<<
@@ -35231,7 +35346,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_getNsTag", 0);
 
-  /* "src/lxml/apihelpers.pxi":1601
+  /* "src/lxml/apihelpers.pxi":1603
  *     Return None for NS uri if no namespace URI provided.
  *     """
  *     return __getNsTag(tag, 0)             # <<<<<<<<<<<<<<
@@ -35239,13 +35354,13 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
  * cdef tuple _getNsTagWithEmptyNs(tag):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1601, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1603, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1597
+  /* "src/lxml/apihelpers.pxi":1599
  *         raise TypeError("Argument must be string or unicode.")
  * 
  * cdef tuple _getNsTag(tag):             # <<<<<<<<<<<<<<
@@ -35264,7 +35379,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTag(PyObject *__pyx_v_tag) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1603
+/* "src/lxml/apihelpers.pxi":1605
  *     return __getNsTag(tag, 0)
  * 
  * cdef tuple _getNsTagWithEmptyNs(tag):             # <<<<<<<<<<<<<<
@@ -35278,7 +35393,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_getNsTagWithEmptyNs", 0);
 
-  /* "src/lxml/apihelpers.pxi":1608
+  /* "src/lxml/apihelpers.pxi":1610
  *     part is '{}'.
  *     """
  *     return __getNsTag(tag, 1)             # <<<<<<<<<<<<<<
@@ -35286,13 +35401,13 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag
  * cdef tuple __getNsTag(tag, bint empty_ns):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1608, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree___getNsTag(__pyx_v_tag, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(5, 1610, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1603
+  /* "src/lxml/apihelpers.pxi":1605
  *     return __getNsTag(tag, 0)
  * 
  * cdef tuple _getNsTagWithEmptyNs(tag):             # <<<<<<<<<<<<<<
@@ -35311,7 +35426,7 @@ static PyObject *__pyx_f_4lxml_5etree__getNsTagWithEmptyNs(PyObject *__pyx_v_tag
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1610
+/* "src/lxml/apihelpers.pxi":1612
  *     return __getNsTag(tag, 1)
  * 
  * cdef tuple __getNsTag(tag, bint empty_ns):             # <<<<<<<<<<<<<<
@@ -35335,7 +35450,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __Pyx_RefNannySetupContext("__getNsTag", 0);
   __Pyx_INCREF(__pyx_v_tag);
 
-  /* "src/lxml/apihelpers.pxi":1615
+  /* "src/lxml/apihelpers.pxi":1617
  *     cdef Py_ssize_t taglen
  *     cdef Py_ssize_t nslen
  *     cdef bytes ns = None             # <<<<<<<<<<<<<<
@@ -35345,7 +35460,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __Pyx_INCREF(Py_None);
   __pyx_v_ns = ((PyObject*)Py_None);
 
-  /* "src/lxml/apihelpers.pxi":1617
+  /* "src/lxml/apihelpers.pxi":1619
  *     cdef bytes ns = None
  *     # _isString() is much faster than isinstance()
  *     if not _isString(tag) and isinstance(tag, QName):             # <<<<<<<<<<<<<<
@@ -35364,7 +35479,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1618
+    /* "src/lxml/apihelpers.pxi":1620
  *     # _isString() is much faster than isinstance()
  *     if not _isString(tag) and isinstance(tag, QName):
  *         tag = (<QName>tag).text             # <<<<<<<<<<<<<<
@@ -35376,7 +35491,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1617
+    /* "src/lxml/apihelpers.pxi":1619
  *     cdef bytes ns = None
  *     # _isString() is much faster than isinstance()
  *     if not _isString(tag) and isinstance(tag, QName):             # <<<<<<<<<<<<<<
@@ -35385,19 +35500,19 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1619
+  /* "src/lxml/apihelpers.pxi":1621
  *     if not _isString(tag) and isinstance(tag, QName):
  *         tag = (<QName>tag).text
  *     tag = _utf8(tag)             # <<<<<<<<<<<<<<
  *     c_tag = _cstr(tag)
  *     if c_tag[0] == c'{':
  */
-  __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1619, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1621, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/apihelpers.pxi":1620
+  /* "src/lxml/apihelpers.pxi":1622
  *         tag = (<QName>tag).text
  *     tag = _utf8(tag)
  *     c_tag = _cstr(tag)             # <<<<<<<<<<<<<<
@@ -35406,7 +35521,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
   __pyx_v_c_tag = PyBytes_AS_STRING(__pyx_v_tag);
 
-  /* "src/lxml/apihelpers.pxi":1621
+  /* "src/lxml/apihelpers.pxi":1623
  *     tag = _utf8(tag)
  *     c_tag = _cstr(tag)
  *     if c_tag[0] == c'{':             # <<<<<<<<<<<<<<
@@ -35416,7 +35531,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __pyx_t_1 = (((__pyx_v_c_tag[0]) == '{') != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1622
+      /* "src/lxml/apihelpers.pxi":1624
  *     c_tag = _cstr(tag)
  *     if c_tag[0] == c'{':
  *         c_tag += 1             # <<<<<<<<<<<<<<
@@ -35425,7 +35540,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
       __pyx_v_c_tag = (__pyx_v_c_tag + 1);
 
-      /* "src/lxml/apihelpers.pxi":1623
+      /* "src/lxml/apihelpers.pxi":1625
  *     if c_tag[0] == c'{':
  *         c_tag += 1
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')             # <<<<<<<<<<<<<<
@@ -35434,7 +35549,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
     __pyx_v_c_ns_end = strchr(__pyx_v_c_tag, '}');
 
-    /* "src/lxml/apihelpers.pxi":1624
+    /* "src/lxml/apihelpers.pxi":1626
  *         c_tag += 1
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')
  *         if c_ns_end is NULL:             # <<<<<<<<<<<<<<
@@ -35444,7 +35559,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __pyx_t_1 = ((__pyx_v_c_ns_end == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "src/lxml/apihelpers.pxi":1625
+      /* "src/lxml/apihelpers.pxi":1627
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')
  *         if c_ns_end is NULL:
  *             raise ValueError, u"Invalid tag name"             # <<<<<<<<<<<<<<
@@ -35452,9 +35567,9 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Invalid_tag_name, 0, 0);
-      __PYX_ERR(5, 1625, __pyx_L1_error)
+      __PYX_ERR(5, 1627, __pyx_L1_error)
 
-      /* "src/lxml/apihelpers.pxi":1624
+      /* "src/lxml/apihelpers.pxi":1626
  *         c_tag += 1
  *         c_ns_end = cstring_h.strchr(c_tag, c'}')
  *         if c_ns_end is NULL:             # <<<<<<<<<<<<<<
@@ -35463,7 +35578,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1626
+    /* "src/lxml/apihelpers.pxi":1628
  *         if c_ns_end is NULL:
  *             raise ValueError, u"Invalid tag name"
  *         nslen  = c_ns_end - c_tag             # <<<<<<<<<<<<<<
@@ -35472,7 +35587,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
     __pyx_v_nslen = (__pyx_v_c_ns_end - __pyx_v_c_tag);
 
-    /* "src/lxml/apihelpers.pxi":1627
+    /* "src/lxml/apihelpers.pxi":1629
  *             raise ValueError, u"Invalid tag name"
  *         nslen  = c_ns_end - c_tag
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2             # <<<<<<<<<<<<<<
@@ -35481,7 +35596,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
     __pyx_v_taglen = ((PyBytes_GET_SIZE(__pyx_v_tag) - __pyx_v_nslen) - 2);
 
-    /* "src/lxml/apihelpers.pxi":1628
+    /* "src/lxml/apihelpers.pxi":1630
  *         nslen  = c_ns_end - c_tag
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  *         if taglen == 0:             # <<<<<<<<<<<<<<
@@ -35491,7 +35606,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __pyx_t_1 = ((__pyx_v_taglen == 0) != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "src/lxml/apihelpers.pxi":1629
+      /* "src/lxml/apihelpers.pxi":1631
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  *         if taglen == 0:
  *             raise ValueError, u"Empty tag name"             # <<<<<<<<<<<<<<
@@ -35499,9 +35614,9 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  *             ns = <bytes>c_tag[:nslen]
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Empty_tag_name, 0, 0);
-      __PYX_ERR(5, 1629, __pyx_L1_error)
+      __PYX_ERR(5, 1631, __pyx_L1_error)
 
-      /* "src/lxml/apihelpers.pxi":1628
+      /* "src/lxml/apihelpers.pxi":1630
  *         nslen  = c_ns_end - c_tag
  *         taglen = python.PyBytes_GET_SIZE(tag) - nslen - 2
  *         if taglen == 0:             # <<<<<<<<<<<<<<
@@ -35510,7 +35625,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1630
+    /* "src/lxml/apihelpers.pxi":1632
  *         if taglen == 0:
  *             raise ValueError, u"Empty tag name"
  *         if nslen > 0:             # <<<<<<<<<<<<<<
@@ -35520,14 +35635,14 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __pyx_t_1 = ((__pyx_v_nslen > 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1631
+      /* "src/lxml/apihelpers.pxi":1633
  *             raise ValueError, u"Empty tag name"
  *         if nslen > 0:
  *             ns = <bytes>c_tag[:nslen]             # <<<<<<<<<<<<<<
  *         elif empty_ns:
  *             ns = b''
  */
-      __pyx_t_4 = __Pyx_PyBytes_FromStringAndSize(__pyx_v_c_tag + 0, __pyx_v_nslen - 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1631, __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, 1633, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = __pyx_t_4;
       __Pyx_INCREF(__pyx_t_5);
@@ -35535,7 +35650,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
       __Pyx_DECREF_SET(__pyx_v_ns, ((PyObject*)__pyx_t_5));
       __pyx_t_5 = 0;
 
-      /* "src/lxml/apihelpers.pxi":1630
+      /* "src/lxml/apihelpers.pxi":1632
  *         if taglen == 0:
  *             raise ValueError, u"Empty tag name"
  *         if nslen > 0:             # <<<<<<<<<<<<<<
@@ -35545,7 +35660,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
       goto __pyx_L9;
     }
 
-    /* "src/lxml/apihelpers.pxi":1632
+    /* "src/lxml/apihelpers.pxi":1634
  *         if nslen > 0:
  *             ns = <bytes>c_tag[:nslen]
  *         elif empty_ns:             # <<<<<<<<<<<<<<
@@ -35555,7 +35670,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __pyx_t_1 = (__pyx_v_empty_ns != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1633
+      /* "src/lxml/apihelpers.pxi":1635
  *             ns = <bytes>c_tag[:nslen]
  *         elif empty_ns:
  *             ns = b''             # <<<<<<<<<<<<<<
@@ -35565,7 +35680,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
       __Pyx_INCREF(__pyx_kp_b__11);
       __Pyx_DECREF_SET(__pyx_v_ns, __pyx_kp_b__11);
 
-      /* "src/lxml/apihelpers.pxi":1632
+      /* "src/lxml/apihelpers.pxi":1634
  *         if nslen > 0:
  *             ns = <bytes>c_tag[:nslen]
  *         elif empty_ns:             # <<<<<<<<<<<<<<
@@ -35575,14 +35690,14 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     }
     __pyx_L9:;
 
-    /* "src/lxml/apihelpers.pxi":1634
+    /* "src/lxml/apihelpers.pxi":1636
  *         elif empty_ns:
  *             ns = b''
  *         tag = <bytes>c_ns_end[1:taglen+1]             # <<<<<<<<<<<<<<
  *     elif python.PyBytes_GET_SIZE(tag) == 0:
  *         raise ValueError, u"Empty tag name"
  */
-    __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, 1634, __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, 1636, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_4 = __pyx_t_5;
     __Pyx_INCREF(__pyx_t_4);
@@ -35590,7 +35705,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1621
+    /* "src/lxml/apihelpers.pxi":1623
  *     tag = _utf8(tag)
  *     c_tag = _cstr(tag)
  *     if c_tag[0] == c'{':             # <<<<<<<<<<<<<<
@@ -35600,7 +35715,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
     goto __pyx_L6;
   }
 
-  /* "src/lxml/apihelpers.pxi":1635
+  /* "src/lxml/apihelpers.pxi":1637
  *             ns = b''
  *         tag = <bytes>c_ns_end[1:taglen+1]
  *     elif python.PyBytes_GET_SIZE(tag) == 0:             # <<<<<<<<<<<<<<
@@ -35610,7 +35725,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __pyx_t_1 = ((PyBytes_GET_SIZE(__pyx_v_tag) == 0) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1636
+    /* "src/lxml/apihelpers.pxi":1638
  *         tag = <bytes>c_ns_end[1:taglen+1]
  *     elif python.PyBytes_GET_SIZE(tag) == 0:
  *         raise ValueError, u"Empty tag name"             # <<<<<<<<<<<<<<
@@ -35618,9 +35733,9 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  * 
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Empty_tag_name, 0, 0);
-    __PYX_ERR(5, 1636, __pyx_L1_error)
+    __PYX_ERR(5, 1638, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1635
+    /* "src/lxml/apihelpers.pxi":1637
  *             ns = b''
  *         tag = <bytes>c_ns_end[1:taglen+1]
  *     elif python.PyBytes_GET_SIZE(tag) == 0:             # <<<<<<<<<<<<<<
@@ -35630,7 +35745,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   }
   __pyx_L6:;
 
-  /* "src/lxml/apihelpers.pxi":1637
+  /* "src/lxml/apihelpers.pxi":1639
  *     elif python.PyBytes_GET_SIZE(tag) == 0:
  *         raise ValueError, u"Empty tag name"
  *     return ns, tag             # <<<<<<<<<<<<<<
@@ -35638,7 +35753,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
  * cdef inline int _pyXmlNameIsValid(name_utf8):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1637, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1639, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_ns);
   __Pyx_GIVEREF(__pyx_v_ns);
@@ -35650,7 +35765,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1610
+  /* "src/lxml/apihelpers.pxi":1612
  *     return __getNsTag(tag, 1)
  * 
  * cdef tuple __getNsTag(tag, bint empty_ns):             # <<<<<<<<<<<<<<
@@ -35672,7 +35787,7 @@ static PyObject *__pyx_f_4lxml_5etree___getNsTag(PyObject *__pyx_v_tag, int __py
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1639
+/* "src/lxml/apihelpers.pxi":1641
  *     return ns, tag
  * 
  * cdef inline int _pyXmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
@@ -35688,7 +35803,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_pyXmlNameIsValid", 0);
 
-  /* "src/lxml/apihelpers.pxi":1640
+  /* "src/lxml/apihelpers.pxi":1642
  * 
  * cdef inline int _pyXmlNameIsValid(name_utf8):
  *     return _xmlNameIsValid(_xcstr(name_utf8)) and b':' not in name_utf8             # <<<<<<<<<<<<<<
@@ -35701,13 +35816,13 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L3_bool_binop_done;
   }
-  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__16, __pyx_v_name_utf8, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(5, 1640, __pyx_L1_error)
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__16, __pyx_v_name_utf8, Py_NE)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(5, 1642, __pyx_L1_error)
   __pyx_t_1 = __pyx_t_3;
   __pyx_L3_bool_binop_done:;
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1639
+  /* "src/lxml/apihelpers.pxi":1641
  *     return ns, tag
  * 
  * cdef inline int _pyXmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
@@ -35724,7 +35839,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyXmlNameIsValid(PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1642
+/* "src/lxml/apihelpers.pxi":1644
  *     return _xmlNameIsValid(_xcstr(name_utf8)) and b':' not in name_utf8
  * 
  * cdef inline int _pyHtmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
@@ -35737,7 +35852,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_pyHtmlNameIsValid", 0);
 
-  /* "src/lxml/apihelpers.pxi":1643
+  /* "src/lxml/apihelpers.pxi":1645
  * 
  * cdef inline int _pyHtmlNameIsValid(name_utf8):
  *     return _htmlNameIsValid(_xcstr(name_utf8))             # <<<<<<<<<<<<<<
@@ -35747,7 +35862,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
   __pyx_r = __pyx_f_4lxml_5etree__htmlNameIsValid((const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf8));
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1642
+  /* "src/lxml/apihelpers.pxi":1644
  *     return _xmlNameIsValid(_xcstr(name_utf8)) and b':' not in name_utf8
  * 
  * cdef inline int _pyHtmlNameIsValid(name_utf8):             # <<<<<<<<<<<<<<
@@ -35761,7 +35876,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__pyHtmlNameIsValid(PyObject *__pyx
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1645
+/* "src/lxml/apihelpers.pxi":1647
  *     return _htmlNameIsValid(_xcstr(name_utf8))
  * 
  * cdef inline int _xmlNameIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -35774,7 +35889,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_xmlNameIsValid", 0);
 
-  /* "src/lxml/apihelpers.pxi":1646
+  /* "src/lxml/apihelpers.pxi":1648
  * 
  * cdef inline int _xmlNameIsValid(const_xmlChar* c_name):
  *     return tree.xmlValidateNameValue(c_name)             # <<<<<<<<<<<<<<
@@ -35784,7 +35899,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
   __pyx_r = xmlValidateNameValue(__pyx_v_c_name);
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1645
+  /* "src/lxml/apihelpers.pxi":1647
  *     return _htmlNameIsValid(_xcstr(name_utf8))
  * 
  * cdef inline int _xmlNameIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -35798,7 +35913,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree__xmlNameIsValid(const xmlChar *__p
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1648
+/* "src/lxml/apihelpers.pxi":1650
  *     return tree.xmlValidateNameValue(c_name)
  * 
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -35813,7 +35928,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_htmlNameIsValid", 0);
 
-  /* "src/lxml/apihelpers.pxi":1649
+  /* "src/lxml/apihelpers.pxi":1651
  * 
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):
  *     if c_name is NULL or c_name[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -35831,7 +35946,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1650
+    /* "src/lxml/apihelpers.pxi":1652
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):
  *     if c_name is NULL or c_name[0] == c'\0':
  *         return 0             # <<<<<<<<<<<<<<
@@ -35841,7 +35956,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1649
+    /* "src/lxml/apihelpers.pxi":1651
  * 
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):
  *     if c_name is NULL or c_name[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -35850,7 +35965,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1651
+  /* "src/lxml/apihelpers.pxi":1653
  *     if c_name is NULL or c_name[0] == c'\0':
  *         return 0
  *     while c_name[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -35861,7 +35976,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
     __pyx_t_1 = (((__pyx_v_c_name[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/apihelpers.pxi":1652
+    /* "src/lxml/apihelpers.pxi":1654
  *         return 0
  *     while c_name[0] != c'\0':
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':             # <<<<<<<<<<<<<<
@@ -35882,7 +35997,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
       case '<':
       case '>':
 
-      /* "src/lxml/apihelpers.pxi":1653
+      /* "src/lxml/apihelpers.pxi":1655
  *     while c_name[0] != c'\0':
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':
  *             return 0             # <<<<<<<<<<<<<<
@@ -35892,7 +36007,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
       __pyx_r = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1652
+      /* "src/lxml/apihelpers.pxi":1654
  *         return 0
  *     while c_name[0] != c'\0':
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':             # <<<<<<<<<<<<<<
@@ -35903,7 +36018,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
       default: break;
     }
 
-    /* "src/lxml/apihelpers.pxi":1654
+    /* "src/lxml/apihelpers.pxi":1656
  *         if c_name[0] in b'&<>/"\'\t\n\x0B\x0C\r ':
  *             return 0
  *         c_name += 1             # <<<<<<<<<<<<<<
@@ -35913,7 +36028,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
     __pyx_v_c_name = (__pyx_v_c_name + 1);
   }
 
-  /* "src/lxml/apihelpers.pxi":1655
+  /* "src/lxml/apihelpers.pxi":1657
  *             return 0
  *         c_name += 1
  *     return 1             # <<<<<<<<<<<<<<
@@ -35923,7 +36038,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1648
+  /* "src/lxml/apihelpers.pxi":1650
  *     return tree.xmlValidateNameValue(c_name)
  * 
  * cdef int _htmlNameIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -35937,7 +36052,7 @@ static int __pyx_f_4lxml_5etree__htmlNameIsValid(const xmlChar *__pyx_v_c_name)
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1657
+/* "src/lxml/apihelpers.pxi":1659
  *     return 1
  * 
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -35953,7 +36068,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_characterReferenceIsValid", 0);
 
-  /* "src/lxml/apihelpers.pxi":1659
+  /* "src/lxml/apihelpers.pxi":1661
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):
  *     cdef bint is_hex
  *     if c_name[0] == c'x':             # <<<<<<<<<<<<<<
@@ -35963,7 +36078,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   __pyx_t_1 = (((__pyx_v_c_name[0]) == 'x') != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1660
+    /* "src/lxml/apihelpers.pxi":1662
  *     cdef bint is_hex
  *     if c_name[0] == c'x':
  *         c_name += 1             # <<<<<<<<<<<<<<
@@ -35972,7 +36087,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
     __pyx_v_c_name = (__pyx_v_c_name + 1);
 
-    /* "src/lxml/apihelpers.pxi":1661
+    /* "src/lxml/apihelpers.pxi":1663
  *     if c_name[0] == c'x':
  *         c_name += 1
  *         is_hex = 1             # <<<<<<<<<<<<<<
@@ -35981,7 +36096,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
     __pyx_v_is_hex = 1;
 
-    /* "src/lxml/apihelpers.pxi":1659
+    /* "src/lxml/apihelpers.pxi":1661
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):
  *     cdef bint is_hex
  *     if c_name[0] == c'x':             # <<<<<<<<<<<<<<
@@ -35991,7 +36106,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
     goto __pyx_L3;
   }
 
-  /* "src/lxml/apihelpers.pxi":1663
+  /* "src/lxml/apihelpers.pxi":1665
  *         is_hex = 1
  *     else:
  *         is_hex = 0             # <<<<<<<<<<<<<<
@@ -36003,7 +36118,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   }
   __pyx_L3:;
 
-  /* "src/lxml/apihelpers.pxi":1664
+  /* "src/lxml/apihelpers.pxi":1666
  *     else:
  *         is_hex = 0
  *     if c_name[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -36013,7 +36128,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   __pyx_t_1 = (((__pyx_v_c_name[0]) == '\x00') != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1665
+    /* "src/lxml/apihelpers.pxi":1667
  *         is_hex = 0
  *     if c_name[0] == c'\0':
  *         return 0             # <<<<<<<<<<<<<<
@@ -36023,7 +36138,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1664
+    /* "src/lxml/apihelpers.pxi":1666
  *     else:
  *         is_hex = 0
  *     if c_name[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -36032,7 +36147,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1666
+  /* "src/lxml/apihelpers.pxi":1668
  *     if c_name[0] == c'\0':
  *         return 0
  *     while c_name[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -36043,7 +36158,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
     __pyx_t_1 = (((__pyx_v_c_name[0]) != '\x00') != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/apihelpers.pxi":1667
+    /* "src/lxml/apihelpers.pxi":1669
  *         return 0
  *     while c_name[0] != c'\0':
  *         if c_name[0] < c'0' or c_name[0] > c'9':             # <<<<<<<<<<<<<<
@@ -36061,7 +36176,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
     __pyx_L8_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1668
+      /* "src/lxml/apihelpers.pxi":1670
  *     while c_name[0] != c'\0':
  *         if c_name[0] < c'0' or c_name[0] > c'9':
  *             if not is_hex:             # <<<<<<<<<<<<<<
@@ -36071,7 +36186,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
       __pyx_t_1 = ((!(__pyx_v_is_hex != 0)) != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/apihelpers.pxi":1669
+        /* "src/lxml/apihelpers.pxi":1671
  *         if c_name[0] < c'0' or c_name[0] > c'9':
  *             if not is_hex:
  *                 return 0             # <<<<<<<<<<<<<<
@@ -36081,7 +36196,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
         __pyx_r = 0;
         goto __pyx_L0;
 
-        /* "src/lxml/apihelpers.pxi":1668
+        /* "src/lxml/apihelpers.pxi":1670
  *     while c_name[0] != c'\0':
  *         if c_name[0] < c'0' or c_name[0] > c'9':
  *             if not is_hex:             # <<<<<<<<<<<<<<
@@ -36090,7 +36205,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1670
+      /* "src/lxml/apihelpers.pxi":1672
  *             if not is_hex:
  *                 return 0
  *             if not (c'a' <= c_name[0] <= c'f'):             # <<<<<<<<<<<<<<
@@ -36104,7 +36219,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
       __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
       if (__pyx_t_2) {
 
-        /* "src/lxml/apihelpers.pxi":1671
+        /* "src/lxml/apihelpers.pxi":1673
  *                 return 0
  *             if not (c'a' <= c_name[0] <= c'f'):
  *                 if not (c'A' <= c_name[0] <= c'F'):             # <<<<<<<<<<<<<<
@@ -36118,7 +36233,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
         __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/apihelpers.pxi":1672
+          /* "src/lxml/apihelpers.pxi":1674
  *             if not (c'a' <= c_name[0] <= c'f'):
  *                 if not (c'A' <= c_name[0] <= c'F'):
  *                     return 0             # <<<<<<<<<<<<<<
@@ -36128,7 +36243,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
           __pyx_r = 0;
           goto __pyx_L0;
 
-          /* "src/lxml/apihelpers.pxi":1671
+          /* "src/lxml/apihelpers.pxi":1673
  *                 return 0
  *             if not (c'a' <= c_name[0] <= c'f'):
  *                 if not (c'A' <= c_name[0] <= c'F'):             # <<<<<<<<<<<<<<
@@ -36137,7 +36252,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
         }
 
-        /* "src/lxml/apihelpers.pxi":1670
+        /* "src/lxml/apihelpers.pxi":1672
  *             if not is_hex:
  *                 return 0
  *             if not (c'a' <= c_name[0] <= c'f'):             # <<<<<<<<<<<<<<
@@ -36146,7 +36261,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1667
+      /* "src/lxml/apihelpers.pxi":1669
  *         return 0
  *     while c_name[0] != c'\0':
  *         if c_name[0] < c'0' or c_name[0] > c'9':             # <<<<<<<<<<<<<<
@@ -36155,7 +36270,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1673
+    /* "src/lxml/apihelpers.pxi":1675
  *                 if not (c'A' <= c_name[0] <= c'F'):
  *                     return 0
  *         c_name += 1             # <<<<<<<<<<<<<<
@@ -36165,7 +36280,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
     __pyx_v_c_name = (__pyx_v_c_name + 1);
   }
 
-  /* "src/lxml/apihelpers.pxi":1674
+  /* "src/lxml/apihelpers.pxi":1676
  *                     return 0
  *         c_name += 1
  *     return 1             # <<<<<<<<<<<<<<
@@ -36175,7 +36290,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   __pyx_r = 1;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1657
+  /* "src/lxml/apihelpers.pxi":1659
  *     return 1
  * 
  * cdef bint _characterReferenceIsValid(const_xmlChar* c_name):             # <<<<<<<<<<<<<<
@@ -36189,7 +36304,7 @@ static int __pyx_f_4lxml_5etree__characterReferenceIsValid(const xmlChar *__pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1676
+/* "src/lxml/apihelpers.pxi":1678
  *     return 1
  * 
  * cdef int _tagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36205,7 +36320,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_tagValidOrRaise", 0);
 
-  /* "src/lxml/apihelpers.pxi":1677
+  /* "src/lxml/apihelpers.pxi":1679
  * 
  * cdef int _tagValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36215,7 +36330,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1678
+    /* "src/lxml/apihelpers.pxi":1680
  * cdef int _tagValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid tag name {(<bytes>tag_utf).decode('utf8')!r}")             # <<<<<<<<<<<<<<
@@ -36224,24 +36339,24 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  */
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(5, 1678, __pyx_L1_error)
+      __PYX_ERR(5, 1680, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1678, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1680, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1678, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1680, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_tag_name_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1678, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_tag_name_2, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1680, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1678, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1680, __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);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(5, 1678, __pyx_L1_error)
+    __PYX_ERR(5, 1680, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1677
+    /* "src/lxml/apihelpers.pxi":1679
  * 
  * cdef int _tagValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36250,7 +36365,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1679
+  /* "src/lxml/apihelpers.pxi":1681
  *     if not _pyXmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid tag name {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0             # <<<<<<<<<<<<<<
@@ -36260,7 +36375,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1676
+  /* "src/lxml/apihelpers.pxi":1678
  *     return 1
  * 
  * cdef int _tagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36279,7 +36394,7 @@ static int __pyx_f_4lxml_5etree__tagValidOrRaise(PyObject *__pyx_v_tag_utf) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1681
+/* "src/lxml/apihelpers.pxi":1683
  *     return 0
  * 
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36295,7 +36410,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_htmlTagValidOrRaise", 0);
 
-  /* "src/lxml/apihelpers.pxi":1682
+  /* "src/lxml/apihelpers.pxi":1684
  * 
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
  *     if not _pyHtmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36305,7 +36420,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyHtmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1683
+    /* "src/lxml/apihelpers.pxi":1685
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
  *     if not _pyHtmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid HTML tag name {(<bytes>tag_utf).decode('utf8')!r}")             # <<<<<<<<<<<<<<
@@ -36314,24 +36429,24 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
  */
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(5, 1683, __pyx_L1_error)
+      __PYX_ERR(5, 1685, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1683, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1685, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1683, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1685, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_HTML_tag_name, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1683, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_HTML_tag_name, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1685, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1683, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1685, __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);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(5, 1683, __pyx_L1_error)
+    __PYX_ERR(5, 1685, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1682
+    /* "src/lxml/apihelpers.pxi":1684
  * 
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:
  *     if not _pyHtmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36340,7 +36455,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1684
+  /* "src/lxml/apihelpers.pxi":1686
  *     if not _pyHtmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid HTML tag name {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0             # <<<<<<<<<<<<<<
@@ -36350,7 +36465,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1681
+  /* "src/lxml/apihelpers.pxi":1683
  *     return 0
  * 
  * cdef int _htmlTagValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36369,7 +36484,7 @@ static int __pyx_f_4lxml_5etree__htmlTagValidOrRaise(PyObject *__pyx_v_tag_utf)
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1686
+/* "src/lxml/apihelpers.pxi":1688
  *     return 0
  * 
  * cdef int _attributeValidOrRaise(name_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36385,7 +36500,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_attributeValidOrRaise", 0);
 
-  /* "src/lxml/apihelpers.pxi":1687
+  /* "src/lxml/apihelpers.pxi":1689
  * 
  * cdef int _attributeValidOrRaise(name_utf) except -1:
  *     if not _pyXmlNameIsValid(name_utf):             # <<<<<<<<<<<<<<
@@ -36395,7 +36510,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_name_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1688
+    /* "src/lxml/apihelpers.pxi":1690
  * cdef int _attributeValidOrRaise(name_utf) except -1:
  *     if not _pyXmlNameIsValid(name_utf):
  *         raise ValueError(f"Invalid attribute name {(<bytes>name_utf).decode('utf8')!r}")             # <<<<<<<<<<<<<<
@@ -36404,24 +36519,24 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
  */
     if (unlikely(__pyx_v_name_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(5, 1688, __pyx_L1_error)
+      __PYX_ERR(5, 1690, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1690, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1690, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_attribute_name, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1688, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_attribute_name, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1690, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1688, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1690, __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);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(5, 1688, __pyx_L1_error)
+    __PYX_ERR(5, 1690, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1687
+    /* "src/lxml/apihelpers.pxi":1689
  * 
  * cdef int _attributeValidOrRaise(name_utf) except -1:
  *     if not _pyXmlNameIsValid(name_utf):             # <<<<<<<<<<<<<<
@@ -36430,7 +36545,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1689
+  /* "src/lxml/apihelpers.pxi":1691
  *     if not _pyXmlNameIsValid(name_utf):
  *         raise ValueError(f"Invalid attribute name {(<bytes>name_utf).decode('utf8')!r}")
  *     return 0             # <<<<<<<<<<<<<<
@@ -36440,7 +36555,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1686
+  /* "src/lxml/apihelpers.pxi":1688
  *     return 0
  * 
  * cdef int _attributeValidOrRaise(name_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36459,7 +36574,7 @@ static int __pyx_f_4lxml_5etree__attributeValidOrRaise(PyObject *__pyx_v_name_ut
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1691
+/* "src/lxml/apihelpers.pxi":1693
  *     return 0
  * 
  * cdef int _prefixValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36475,7 +36590,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_prefixValidOrRaise", 0);
 
-  /* "src/lxml/apihelpers.pxi":1692
+  /* "src/lxml/apihelpers.pxi":1694
  * 
  * cdef int _prefixValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36485,7 +36600,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __pyx_t_1 = ((!(__pyx_f_4lxml_5etree__pyXmlNameIsValid(__pyx_v_tag_utf) != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1693
+    /* "src/lxml/apihelpers.pxi":1695
  * cdef int _prefixValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid namespace prefix {(<bytes>tag_utf).decode('utf8')!r}")             # <<<<<<<<<<<<<<
@@ -36494,24 +36609,24 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  */
     if (unlikely(__pyx_v_tag_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(5, 1693, __pyx_L1_error)
+      __PYX_ERR(5, 1695, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1693, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1695, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1693, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1695, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_namespace_prefix, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1693, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_namespace_prefix, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1695, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1693, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1695, __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);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(5, 1693, __pyx_L1_error)
+    __PYX_ERR(5, 1695, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1692
+    /* "src/lxml/apihelpers.pxi":1694
  * 
  * cdef int _prefixValidOrRaise(tag_utf) except -1:
  *     if not _pyXmlNameIsValid(tag_utf):             # <<<<<<<<<<<<<<
@@ -36520,7 +36635,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1694
+  /* "src/lxml/apihelpers.pxi":1696
  *     if not _pyXmlNameIsValid(tag_utf):
  *         raise ValueError(f"Invalid namespace prefix {(<bytes>tag_utf).decode('utf8')!r}")
  *     return 0             # <<<<<<<<<<<<<<
@@ -36530,7 +36645,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1691
+  /* "src/lxml/apihelpers.pxi":1693
  *     return 0
  * 
  * cdef int _prefixValidOrRaise(tag_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36549,7 +36664,7 @@ static int __pyx_f_4lxml_5etree__prefixValidOrRaise(PyObject *__pyx_v_tag_utf) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1696
+/* "src/lxml/apihelpers.pxi":1698
  *     return 0
  * 
  * cdef int _uriValidOrRaise(uri_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36566,7 +36681,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_uriValidOrRaise", 0);
 
-  /* "src/lxml/apihelpers.pxi":1697
+  /* "src/lxml/apihelpers.pxi":1699
  * 
  * cdef int _uriValidOrRaise(uri_utf) except -1:
  *     cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf))             # <<<<<<<<<<<<<<
@@ -36575,7 +36690,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  */
   __pyx_v_c_uri = xmlParseURI(PyBytes_AS_STRING(__pyx_v_uri_utf));
 
-  /* "src/lxml/apihelpers.pxi":1698
+  /* "src/lxml/apihelpers.pxi":1700
  * cdef int _uriValidOrRaise(uri_utf) except -1:
  *     cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf))
  *     if c_uri is NULL:             # <<<<<<<<<<<<<<
@@ -36585,7 +36700,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   __pyx_t_1 = ((__pyx_v_c_uri == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "src/lxml/apihelpers.pxi":1699
+    /* "src/lxml/apihelpers.pxi":1701
  *     cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf))
  *     if c_uri is NULL:
  *         raise ValueError(f"Invalid namespace URI {(<bytes>uri_utf).decode('utf8')!r}")             # <<<<<<<<<<<<<<
@@ -36594,24 +36709,24 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  */
     if (unlikely(__pyx_v_uri_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(5, 1699, __pyx_L1_error)
+      __PYX_ERR(5, 1701, __pyx_L1_error)
     }
-    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_uri_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1699, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_uri_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1699, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_t_2), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_namespace_URI, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1699, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_namespace_URI, __pyx_t_3); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1701, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1699, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_ValueError, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(5, 1701, __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);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(5, 1699, __pyx_L1_error)
+    __PYX_ERR(5, 1701, __pyx_L1_error)
 
-    /* "src/lxml/apihelpers.pxi":1698
+    /* "src/lxml/apihelpers.pxi":1700
  * cdef int _uriValidOrRaise(uri_utf) except -1:
  *     cdef uri.xmlURI* c_uri = uri.xmlParseURI(_cstr(uri_utf))
  *     if c_uri is NULL:             # <<<<<<<<<<<<<<
@@ -36620,7 +36735,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1700
+  /* "src/lxml/apihelpers.pxi":1702
  *     if c_uri is NULL:
  *         raise ValueError(f"Invalid namespace URI {(<bytes>uri_utf).decode('utf8')!r}")
  *     uri.xmlFreeURI(c_uri)             # <<<<<<<<<<<<<<
@@ -36629,7 +36744,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
  */
   xmlFreeURI(__pyx_v_c_uri);
 
-  /* "src/lxml/apihelpers.pxi":1701
+  /* "src/lxml/apihelpers.pxi":1703
  *         raise ValueError(f"Invalid namespace URI {(<bytes>uri_utf).decode('utf8')!r}")
  *     uri.xmlFreeURI(c_uri)
  *     return 0             # <<<<<<<<<<<<<<
@@ -36639,7 +36754,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1696
+  /* "src/lxml/apihelpers.pxi":1698
  *     return 0
  * 
  * cdef int _uriValidOrRaise(uri_utf) except -1:             # <<<<<<<<<<<<<<
@@ -36658,7 +36773,7 @@ static int __pyx_f_4lxml_5etree__uriValidOrRaise(PyObject *__pyx_v_uri_utf) {
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1703
+/* "src/lxml/apihelpers.pxi":1705
  *     return 0
  * 
  * cdef inline object _namespacedName(xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -36672,7 +36787,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_namespacedName", 0);
 
-  /* "src/lxml/apihelpers.pxi":1704
+  /* "src/lxml/apihelpers.pxi":1706
  * 
  * cdef inline object _namespacedName(xmlNode* c_node):
  *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)             # <<<<<<<<<<<<<<
@@ -36680,13 +36795,13 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  */
   __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, 1704, __pyx_L1_error)
+  __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, 1706, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1703
+  /* "src/lxml/apihelpers.pxi":1705
  *     return 0
  * 
  * cdef inline object _namespacedName(xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -36705,7 +36820,7 @@ static CYTHON_INLINE PyObject *__pyx_f_4lxml_5etree__namespacedName(xmlNode *__p
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1706
+/* "src/lxml/apihelpers.pxi":1708
  *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)
  * 
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):             # <<<<<<<<<<<<<<
@@ -36724,7 +36839,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
   Py_ssize_t __pyx_t_5;
   __Pyx_RefNannySetupContext("_namespacedNameFromNsName", 0);
 
-  /* "src/lxml/apihelpers.pxi":1707
+  /* "src/lxml/apihelpers.pxi":1709
  * 
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  *     if href is NULL:             # <<<<<<<<<<<<<<
@@ -36734,7 +36849,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
   __pyx_t_1 = ((__pyx_v_href == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1708
+    /* "src/lxml/apihelpers.pxi":1710
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  *     if href is NULL:
  *         return funicode(name)             # <<<<<<<<<<<<<<
@@ -36742,13 +36857,13 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1708, __pyx_L1_error)
+    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1710, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1707
+    /* "src/lxml/apihelpers.pxi":1709
  * 
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):
  *     if href is NULL:             # <<<<<<<<<<<<<<
@@ -36757,7 +36872,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1709
+  /* "src/lxml/apihelpers.pxi":1711
  *     if href is NULL:
  *         return funicode(name)
  *     elif not python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(name) or isutf8(href)):             # <<<<<<<<<<<<<<
@@ -36787,7 +36902,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/apihelpers.pxi":1710
+    /* "src/lxml/apihelpers.pxi":1712
  *         return funicode(name)
  *     elif not python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(name) or isutf8(href)):
  *         return python.PyUnicode_FromFormat("{%s}%s", href, name)             # <<<<<<<<<<<<<<
@@ -36795,13 +36910,13 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)
  */
     __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, 1710, __pyx_L1_error)
+    __pyx_t_2 = PyUnicode_FromFormat(((char *)"{%s}%s"), __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1712, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_r = __pyx_t_2;
     __pyx_t_2 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/apihelpers.pxi":1709
+    /* "src/lxml/apihelpers.pxi":1711
  *     if href is NULL:
  *         return funicode(name)
  *     elif not python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8(name) or isutf8(href)):             # <<<<<<<<<<<<<<
@@ -36810,7 +36925,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  */
   }
 
-  /* "src/lxml/apihelpers.pxi":1712
+  /* "src/lxml/apihelpers.pxi":1714
  *         return python.PyUnicode_FromFormat("{%s}%s", href, name)
  *     else:
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)             # <<<<<<<<<<<<<<
@@ -36818,12 +36933,12 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  *             return (<bytes>s).decode('utf8')
  */
   /*else*/ {
-    __pyx_t_2 = PyBytes_FromFormat(((char *)"{%s}%s"), __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1712, __pyx_L1_error)
+    __pyx_t_2 = PyBytes_FromFormat(((char *)"{%s}%s"), __pyx_v_href, __pyx_v_name); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1714, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_s = ((PyObject*)__pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1713
+    /* "src/lxml/apihelpers.pxi":1715
  *     else:
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)
  *         if python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8l(s, len(s))):             # <<<<<<<<<<<<<<
@@ -36844,20 +36959,20 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
     }
     if (unlikely(__pyx_v_s == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "expected bytes, NoneType found");
-      __PYX_ERR(5, 1713, __pyx_L1_error)
+      __PYX_ERR(5, 1715, __pyx_L1_error)
     }
-    __pyx_t_4 = __Pyx_PyBytes_AsUString(__pyx_v_s); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 1713, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyBytes_AsUString(__pyx_v_s); if (unlikely((!__pyx_t_4) && PyErr_Occurred())) __PYX_ERR(5, 1715, __pyx_L1_error)
     if (unlikely(__pyx_v_s == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(5, 1713, __pyx_L1_error)
+      __PYX_ERR(5, 1715, __pyx_L1_error)
     }
-    __pyx_t_5 = PyBytes_GET_SIZE(__pyx_v_s); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1713, __pyx_L1_error)
+    __pyx_t_5 = PyBytes_GET_SIZE(__pyx_v_s); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(5, 1715, __pyx_L1_error)
     __pyx_t_3 = (__pyx_f_4lxml_5etree_isutf8l(__pyx_t_4, __pyx_t_5) != 0);
     __pyx_t_1 = __pyx_t_3;
     __pyx_L9_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/apihelpers.pxi":1714
+      /* "src/lxml/apihelpers.pxi":1716
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)
  *         if python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8l(s, len(s))):
  *             return (<bytes>s).decode('utf8')             # <<<<<<<<<<<<<<
@@ -36867,15 +36982,15 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
       __Pyx_XDECREF(__pyx_r);
       if (unlikely(__pyx_v_s == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-        __PYX_ERR(5, 1714, __pyx_L1_error)
+        __PYX_ERR(5, 1716, __pyx_L1_error)
       }
-      __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_s), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1714, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_decode_bytes(((PyObject*)__pyx_v_s), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_2)) __PYX_ERR(5, 1716, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_r = __pyx_t_2;
       __pyx_t_2 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/apihelpers.pxi":1713
+      /* "src/lxml/apihelpers.pxi":1715
  *     else:
  *         s = python.PyBytes_FromFormat("{%s}%s", href, name)
  *         if python.IS_PYPY and (python.LXML_UNICODE_STRINGS or isutf8l(s, len(s))):             # <<<<<<<<<<<<<<
@@ -36884,7 +36999,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
  */
     }
 
-    /* "src/lxml/apihelpers.pxi":1716
+    /* "src/lxml/apihelpers.pxi":1718
  *             return (<bytes>s).decode('utf8')
  *         else:
  *             return s             # <<<<<<<<<<<<<<
@@ -36899,7 +37014,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
     }
   }
 
-  /* "src/lxml/apihelpers.pxi":1706
+  /* "src/lxml/apihelpers.pxi":1708
  *     return _namespacedNameFromNsName(_getNs(c_node), c_node.name)
  * 
  * cdef object _namespacedNameFromNsName(const_xmlChar* href, const_xmlChar* name):             # <<<<<<<<<<<<<<
@@ -36919,7 +37034,7 @@ static PyObject *__pyx_f_4lxml_5etree__namespacedNameFromNsName(const xmlChar *_
   return __pyx_r;
 }
 
-/* "src/lxml/apihelpers.pxi":1718
+/* "src/lxml/apihelpers.pxi":1720
  *             return s
  * 
  * cdef _getFilenameForFile(source):             # <<<<<<<<<<<<<<
@@ -36940,7 +37055,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_getFilenameForFile", 0);
 
-  /* "src/lxml/apihelpers.pxi":1724
+  /* "src/lxml/apihelpers.pxi":1726
  *     """
  *     # urllib2 provides a geturl() method
  *     try:             # <<<<<<<<<<<<<<
@@ -36956,7 +37071,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "src/lxml/apihelpers.pxi":1725
+      /* "src/lxml/apihelpers.pxi":1727
  *     # urllib2 provides a geturl() method
  *     try:
  *         return source.geturl()             # <<<<<<<<<<<<<<
@@ -36964,7 +37079,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  *         pass
  */
       __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, 1725, __pyx_L3_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_geturl); if (unlikely(!__pyx_t_5)) __PYX_ERR(5, 1727, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -36978,14 +37093,14 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1725, __pyx_L3_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1727, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_r = __pyx_t_4;
       __pyx_t_4 = 0;
       goto __pyx_L7_try_return;
 
-      /* "src/lxml/apihelpers.pxi":1724
+      /* "src/lxml/apihelpers.pxi":1726
  *     """
  *     # urllib2 provides a geturl() method
  *     try:             # <<<<<<<<<<<<<<
@@ -36998,7 +37113,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1726
+    /* "src/lxml/apihelpers.pxi":1728
  *     try:
  *         return source.geturl()
  *     except:             # <<<<<<<<<<<<<<
@@ -37011,7 +37126,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     }
     __pyx_L7_try_return:;
 
-    /* "src/lxml/apihelpers.pxi":1724
+    /* "src/lxml/apihelpers.pxi":1726
  *     """
  *     # urllib2 provides a geturl() method
  *     try:             # <<<<<<<<<<<<<<
@@ -37030,7 +37145,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_ExceptionReset(__pyx_t_1, __pyx_t_2, __pyx_t_3);
   }
 
-  /* "src/lxml/apihelpers.pxi":1729
+  /* "src/lxml/apihelpers.pxi":1731
  *         pass
  *     # file instances have a name attribute
  *     try:             # <<<<<<<<<<<<<<
@@ -37046,19 +37161,19 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGOTREF(__pyx_t_1);
     /*try:*/ {
 
-      /* "src/lxml/apihelpers.pxi":1730
+      /* "src/lxml/apihelpers.pxi":1732
  *     # file instances have a name attribute
  *     try:
  *         filename = source.name             # <<<<<<<<<<<<<<
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_name_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1730, __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, 1732, __pyx_L9_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_filename = __pyx_t_4;
       __pyx_t_4 = 0;
 
-      /* "src/lxml/apihelpers.pxi":1731
+      /* "src/lxml/apihelpers.pxi":1733
  *     try:
  *         filename = source.name
  *         if _isString(filename):             # <<<<<<<<<<<<<<
@@ -37068,7 +37183,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
       __pyx_t_7 = (_isString(__pyx_v_filename) != 0);
       if (__pyx_t_7) {
 
-        /* "src/lxml/apihelpers.pxi":1732
+        /* "src/lxml/apihelpers.pxi":1734
  *         filename = source.name
  *         if _isString(filename):
  *             return os_path_abspath(filename)             # <<<<<<<<<<<<<<
@@ -37089,14 +37204,14 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
         }
         __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_filename);
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1732, __pyx_L9_error)
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1734, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_r = __pyx_t_4;
         __pyx_t_4 = 0;
         goto __pyx_L13_try_return;
 
-        /* "src/lxml/apihelpers.pxi":1731
+        /* "src/lxml/apihelpers.pxi":1733
  *     try:
  *         filename = source.name
  *         if _isString(filename):             # <<<<<<<<<<<<<<
@@ -37105,7 +37220,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1729
+      /* "src/lxml/apihelpers.pxi":1731
  *         pass
  *     # file instances have a name attribute
  *     try:             # <<<<<<<<<<<<<<
@@ -37122,7 +37237,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1733
+    /* "src/lxml/apihelpers.pxi":1735
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  *     except:             # <<<<<<<<<<<<<<
@@ -37135,7 +37250,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     }
     __pyx_L13_try_return:;
 
-    /* "src/lxml/apihelpers.pxi":1729
+    /* "src/lxml/apihelpers.pxi":1731
  *         pass
  *     # file instances have a name attribute
  *     try:             # <<<<<<<<<<<<<<
@@ -37155,7 +37270,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __pyx_L14_try_end:;
   }
 
-  /* "src/lxml/apihelpers.pxi":1736
+  /* "src/lxml/apihelpers.pxi":1738
  *         pass
  *     # gzip file instances have a filename attribute (before Py3k)
  *     try:             # <<<<<<<<<<<<<<
@@ -37171,19 +37286,19 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "src/lxml/apihelpers.pxi":1737
+      /* "src/lxml/apihelpers.pxi":1739
  *     # gzip file instances have a filename attribute (before Py3k)
  *     try:
  *         filename = source.filename             # <<<<<<<<<<<<<<
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1737, __pyx_L16_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_source, __pyx_n_s_filename); if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1739, __pyx_L16_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_XDECREF_SET(__pyx_v_filename, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "src/lxml/apihelpers.pxi":1738
+      /* "src/lxml/apihelpers.pxi":1740
  *     try:
  *         filename = source.filename
  *         if _isString(filename):             # <<<<<<<<<<<<<<
@@ -37193,7 +37308,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
       __pyx_t_7 = (_isString(__pyx_v_filename) != 0);
       if (__pyx_t_7) {
 
-        /* "src/lxml/apihelpers.pxi":1739
+        /* "src/lxml/apihelpers.pxi":1741
  *         filename = source.filename
  *         if _isString(filename):
  *             return os_path_abspath(filename)             # <<<<<<<<<<<<<<
@@ -37214,14 +37329,14 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
         }
         __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_filename) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_filename);
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1739, __pyx_L16_error)
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(5, 1741, __pyx_L16_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_r = __pyx_t_4;
         __pyx_t_4 = 0;
         goto __pyx_L20_try_return;
 
-        /* "src/lxml/apihelpers.pxi":1738
+        /* "src/lxml/apihelpers.pxi":1740
  *     try:
  *         filename = source.filename
  *         if _isString(filename):             # <<<<<<<<<<<<<<
@@ -37230,7 +37345,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
  */
       }
 
-      /* "src/lxml/apihelpers.pxi":1736
+      /* "src/lxml/apihelpers.pxi":1738
  *         pass
  *     # gzip file instances have a filename attribute (before Py3k)
  *     try:             # <<<<<<<<<<<<<<
@@ -37247,7 +37362,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/apihelpers.pxi":1740
+    /* "src/lxml/apihelpers.pxi":1742
  *         if _isString(filename):
  *             return os_path_abspath(filename)
  *     except:             # <<<<<<<<<<<<<<
@@ -37260,7 +37375,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     }
     __pyx_L20_try_return:;
 
-    /* "src/lxml/apihelpers.pxi":1736
+    /* "src/lxml/apihelpers.pxi":1738
  *         pass
  *     # gzip file instances have a filename attribute (before Py3k)
  *     try:             # <<<<<<<<<<<<<<
@@ -37280,7 +37395,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
     __pyx_L21_try_end:;
   }
 
-  /* "src/lxml/apihelpers.pxi":1743
+  /* "src/lxml/apihelpers.pxi":1745
  *         pass
  *     # can't determine filename
  *     return None             # <<<<<<<<<<<<<<
@@ -37289,7 +37404,7 @@ static PyObject *__pyx_f_4lxml_5etree__getFilenameForFile(PyObject *__pyx_v_sour
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "src/lxml/apihelpers.pxi":1718
+  /* "src/lxml/apihelpers.pxi":1720
  *             return s
  * 
  * cdef _getFilenameForFile(source):             # <<<<<<<<<<<<<<
@@ -38074,7 +38189,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)             # <<<<<<<<<<<<<<
  * 
- *     property domain_name:
+ *     @property
  */
   __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);
@@ -38150,12 +38265,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_2__repr__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":118
+/* "src/lxml/xmlerror.pxi":116
+ * 
+ *     @property
+ *     def domain_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error domain.  See lxml.etree.ErrorDomains
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ErrorDomains._getName(self.domain, u"unknown")
- * 
  */
 
 /* Python wrapper */
@@ -38183,11 +38298,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xmlerror.pxi":119
+ *         """The name of the error domain.  See lxml.etree.ErrorDomains
  *         """
- *         def __get__(self):
- *             return ErrorDomains._getName(self.domain, u"unknown")             # <<<<<<<<<<<<<<
+ *         return ErrorDomains._getName(self.domain, u"unknown")             # <<<<<<<<<<<<<<
  * 
- *     property type_name:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 119, __pyx_L1_error)
@@ -38248,12 +38363,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":118
+  /* "src/lxml/xmlerror.pxi":116
+ * 
+ *     @property
+ *     def domain_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error domain.  See lxml.etree.ErrorDomains
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ErrorDomains._getName(self.domain, u"unknown")
- * 
  */
 
   /* function exit code */
@@ -38271,12 +38386,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_11domain_name___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":124
+/* "src/lxml/xmlerror.pxi":122
+ * 
+ *     @property
+ *     def type_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error type.  See lxml.etree.ErrorTypes
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self.domain == ErrorDomains.RELAXNGV:
- *                 getName = RelaxNGErrorTypes._getName
  */
 
 /* Python wrapper */
@@ -38306,11 +38421,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xmlerror.pxi":125
+ *         """The name of the error type.  See lxml.etree.ErrorTypes
  *         """
- *         def __get__(self):
- *             if self.domain == ErrorDomains.RELAXNGV:             # <<<<<<<<<<<<<<
- *                 getName = RelaxNGErrorTypes._getName
- *             else:
+ *         if self.domain == ErrorDomains.RELAXNGV:             # <<<<<<<<<<<<<<
+ *             getName = RelaxNGErrorTypes._getName
+ *         else:
  */
   __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);
@@ -38327,11 +38442,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   if (__pyx_t_4) {
 
     /* "src/lxml/xmlerror.pxi":126
- *         def __get__(self):
- *             if self.domain == ErrorDomains.RELAXNGV:
- *                 getName = RelaxNGErrorTypes._getName             # <<<<<<<<<<<<<<
- *             else:
- *                 getName = ErrorTypes._getName
+ *         """
+ *         if self.domain == ErrorDomains.RELAXNGV:
+ *             getName = RelaxNGErrorTypes._getName             # <<<<<<<<<<<<<<
+ *         else:
+ *             getName = ErrorTypes._getName
  */
     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 126, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
@@ -38342,20 +38457,20 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
     __pyx_t_3 = 0;
 
     /* "src/lxml/xmlerror.pxi":125
+ *         """The name of the error type.  See lxml.etree.ErrorTypes
  *         """
- *         def __get__(self):
- *             if self.domain == ErrorDomains.RELAXNGV:             # <<<<<<<<<<<<<<
- *                 getName = RelaxNGErrorTypes._getName
- *             else:
+ *         if self.domain == ErrorDomains.RELAXNGV:             # <<<<<<<<<<<<<<
+ *             getName = RelaxNGErrorTypes._getName
+ *         else:
  */
     goto __pyx_L3;
   }
 
   /* "src/lxml/xmlerror.pxi":128
- *                 getName = RelaxNGErrorTypes._getName
- *             else:
- *                 getName = ErrorTypes._getName             # <<<<<<<<<<<<<<
- *             return getName(self.type, u"unknown")
+ *             getName = RelaxNGErrorTypes._getName
+ *         else:
+ *             getName = ErrorTypes._getName             # <<<<<<<<<<<<<<
+ *         return getName(self.type, u"unknown")
  * 
  */
   /*else*/ {
@@ -38370,11 +38485,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   __pyx_L3:;
 
   /* "src/lxml/xmlerror.pxi":129
- *             else:
- *                 getName = ErrorTypes._getName
- *             return getName(self.type, u"unknown")             # <<<<<<<<<<<<<<
+ *         else:
+ *             getName = ErrorTypes._getName
+ *         return getName(self.type, u"unknown")             # <<<<<<<<<<<<<<
  * 
- *     property level_name:
+ *     @property
  */
   __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)
@@ -38431,12 +38546,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":124
+  /* "src/lxml/xmlerror.pxi":122
+ * 
+ *     @property
+ *     def type_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error type.  See lxml.etree.ErrorTypes
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self.domain == ErrorDomains.RELAXNGV:
- *                 getName = RelaxNGErrorTypes._getName
  */
 
   /* function exit code */
@@ -38455,12 +38570,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_9type_name___get__(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":134
+/* "src/lxml/xmlerror.pxi":132
+ * 
+ *     @property
+ *     def level_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error level.  See lxml.etree.ErrorLevels
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ErrorLevels._getName(self.level, u"unknown")
- * 
  */
 
 /* Python wrapper */
@@ -38488,11 +38603,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xmlerror.pxi":135
+ *         """The name of the error level.  See lxml.etree.ErrorLevels
  *         """
- *         def __get__(self):
- *             return ErrorLevels._getName(self.level, u"unknown")             # <<<<<<<<<<<<<<
+ *         return ErrorLevels._getName(self.level, u"unknown")             # <<<<<<<<<<<<<<
  * 
- *     property message:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 135, __pyx_L1_error)
@@ -38553,12 +38668,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":134
+  /* "src/lxml/xmlerror.pxi":132
+ * 
+ *     @property
+ *     def level_name(self):             # <<<<<<<<<<<<<<
  *         """The name of the error level.  See lxml.etree.ErrorLevels
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ErrorLevels._getName(self.level, u"unknown")
- * 
  */
 
   /* function exit code */
@@ -38578,10 +38693,10 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_10level_name___get__(struct __
 
 /* "src/lxml/xmlerror.pxi":138
  * 
- *     property message:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef size_t size
- *             if self._message is not None:
+ *     @property
+ *     def message(self):             # <<<<<<<<<<<<<<
+ *         """The log message string.
+ *         """
  */
 
 /* Python wrapper */
@@ -38618,83 +38733,83 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
   PyObject *__pyx_t_15 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/xmlerror.pxi":140
- *         def __get__(self):
- *             cdef size_t size
- *             if self._message is not None:             # <<<<<<<<<<<<<<
- *                 return self._message
- *             if self._c_message is NULL:
+  /* "src/lxml/xmlerror.pxi":142
+ *         """
+ *         cdef size_t size
+ *         if self._message is not None:             # <<<<<<<<<<<<<<
+ *             return self._message
+ *         if self._c_message is NULL:
  */
   __pyx_t_1 = (__pyx_v_self->_message != ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":141
- *             cdef size_t size
- *             if self._message is not None:
- *                 return self._message             # <<<<<<<<<<<<<<
- *             if self._c_message is NULL:
- *                 return None
+    /* "src/lxml/xmlerror.pxi":143
+ *         cdef size_t size
+ *         if self._message is not None:
+ *             return self._message             # <<<<<<<<<<<<<<
+ *         if self._c_message is NULL:
+ *             return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_v_self->_message);
     __pyx_r = __pyx_v_self->_message;
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":140
- *         def __get__(self):
- *             cdef size_t size
- *             if self._message is not None:             # <<<<<<<<<<<<<<
- *                 return self._message
- *             if self._c_message is NULL:
+    /* "src/lxml/xmlerror.pxi":142
+ *         """
+ *         cdef size_t size
+ *         if self._message is not None:             # <<<<<<<<<<<<<<
+ *             return self._message
+ *         if self._c_message is NULL:
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":142
- *             if self._message is not None:
- *                 return self._message
- *             if self._c_message is NULL:             # <<<<<<<<<<<<<<
- *                 return None
- *             size = cstring_h.strlen(self._c_message)
+  /* "src/lxml/xmlerror.pxi":144
+ *         if self._message is not None:
+ *             return self._message
+ *         if self._c_message is NULL:             # <<<<<<<<<<<<<<
+ *             return None
+ *         size = cstring_h.strlen(self._c_message)
  */
   __pyx_t_2 = ((__pyx_v_self->_c_message == NULL) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":143
- *                 return self._message
- *             if self._c_message is NULL:
- *                 return None             # <<<<<<<<<<<<<<
- *             size = cstring_h.strlen(self._c_message)
- *             if size > 0 and self._c_message[size-1] == '\n':
+    /* "src/lxml/xmlerror.pxi":145
+ *             return self._message
+ *         if self._c_message is NULL:
+ *             return None             # <<<<<<<<<<<<<<
+ *         size = cstring_h.strlen(self._c_message)
+ *         if size > 0 and self._c_message[size-1] == '\n':
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":142
- *             if self._message is not None:
- *                 return self._message
- *             if self._c_message is NULL:             # <<<<<<<<<<<<<<
- *                 return None
- *             size = cstring_h.strlen(self._c_message)
+    /* "src/lxml/xmlerror.pxi":144
+ *         if self._message is not None:
+ *             return self._message
+ *         if self._c_message is NULL:             # <<<<<<<<<<<<<<
+ *             return None
+ *         size = cstring_h.strlen(self._c_message)
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":144
- *             if self._c_message is NULL:
- *                 return None
- *             size = cstring_h.strlen(self._c_message)             # <<<<<<<<<<<<<<
- *             if size > 0 and self._c_message[size-1] == '\n':
- *                 size -= 1  # strip EOL
+  /* "src/lxml/xmlerror.pxi":146
+ *         if self._c_message is NULL:
+ *             return None
+ *         size = cstring_h.strlen(self._c_message)             # <<<<<<<<<<<<<<
+ *         if size > 0 and self._c_message[size-1] == '\n':
+ *             size -= 1  # strip EOL
  */
   __pyx_v_size = strlen(__pyx_v_self->_c_message);
 
-  /* "src/lxml/xmlerror.pxi":145
- *                 return None
- *             size = cstring_h.strlen(self._c_message)
- *             if size > 0 and self._c_message[size-1] == '\n':             # <<<<<<<<<<<<<<
- *                 size -= 1  # strip EOL
- *             # cannot use funicode() here because the message may contain
+  /* "src/lxml/xmlerror.pxi":147
+ *             return None
+ *         size = cstring_h.strlen(self._c_message)
+ *         if size > 0 and self._c_message[size-1] == '\n':             # <<<<<<<<<<<<<<
+ *             size -= 1  # strip EOL
+ *         # cannot use funicode() here because the message may contain
  */
   __pyx_t_1 = ((__pyx_v_size > 0) != 0);
   if (__pyx_t_1) {
@@ -38707,30 +38822,30 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
   __pyx_L6_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":146
- *             size = cstring_h.strlen(self._c_message)
- *             if size > 0 and self._c_message[size-1] == '\n':
- *                 size -= 1  # strip EOL             # <<<<<<<<<<<<<<
- *             # cannot use funicode() here because the message may contain
- *             # byte encoded file paths etc.
+    /* "src/lxml/xmlerror.pxi":148
+ *         size = cstring_h.strlen(self._c_message)
+ *         if size > 0 and self._c_message[size-1] == '\n':
+ *             size -= 1  # strip EOL             # <<<<<<<<<<<<<<
+ *         # cannot use funicode() here because the message may contain
+ *         # byte encoded file paths etc.
  */
     __pyx_v_size = (__pyx_v_size - 1);
 
-    /* "src/lxml/xmlerror.pxi":145
- *                 return None
- *             size = cstring_h.strlen(self._c_message)
- *             if size > 0 and self._c_message[size-1] == '\n':             # <<<<<<<<<<<<<<
- *                 size -= 1  # strip EOL
- *             # cannot use funicode() here because the message may contain
+    /* "src/lxml/xmlerror.pxi":147
+ *             return None
+ *         size = cstring_h.strlen(self._c_message)
+ *         if size > 0 and self._c_message[size-1] == '\n':             # <<<<<<<<<<<<<<
+ *             size -= 1  # strip EOL
+ *         # cannot use funicode() here because the message may contain
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":149
- *             # cannot use funicode() here because the message may contain
- *             # byte encoded file paths etc.
- *             try:             # <<<<<<<<<<<<<<
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
+  /* "src/lxml/xmlerror.pxi":151
+ *         # cannot use funicode() here because the message may contain
+ *         # byte encoded file paths etc.
+ *         try:             # <<<<<<<<<<<<<<
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
  */
   {
     __Pyx_PyThreadState_declare
@@ -38741,28 +38856,28 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
     __Pyx_XGOTREF(__pyx_t_5);
     /*try:*/ {
 
-      /* "src/lxml/xmlerror.pxi":150
- *             # byte encoded file paths etc.
+      /* "src/lxml/xmlerror.pxi":152
+ *         # byte encoded file paths etc.
+ *         try:
+ *             self._message = self._c_message[:size].decode('utf8')             # <<<<<<<<<<<<<<
+ *         except UnicodeDecodeError:
  *             try:
- *                 self._message = self._c_message[:size].decode('utf8')             # <<<<<<<<<<<<<<
- *             except UnicodeDecodeError:
- *                 try:
  */
-      __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_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, 152, __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)
+      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, 152, __pyx_L8_error)
       __Pyx_GIVEREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_v_self->_message);
       __Pyx_DECREF(__pyx_v_self->_message);
       __pyx_v_self->_message = ((PyObject*)__pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/xmlerror.pxi":149
- *             # cannot use funicode() here because the message may contain
- *             # byte encoded file paths etc.
- *             try:             # <<<<<<<<<<<<<<
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
+      /* "src/lxml/xmlerror.pxi":151
+ *         # cannot use funicode() here because the message may contain
+ *         # byte encoded file paths etc.
+ *         try:             # <<<<<<<<<<<<<<
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
  */
     }
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -38772,27 +38887,27 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
     __pyx_L8_error:;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "src/lxml/xmlerror.pxi":151
+    /* "src/lxml/xmlerror.pxi":153
+ *         try:
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:             # <<<<<<<<<<<<<<
  *             try:
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
- *                 try:
- *                     self._message = self._c_message[:size].decode(
+ *                 self._message = self._c_message[:size].decode(
  */
     __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);
-      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(1, 151, __pyx_L10_except_error)
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(1, 153, __pyx_L10_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_9);
 
-      /* "src/lxml/xmlerror.pxi":152
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._message = self._c_message[:size].decode(
- *                         'ascii', 'backslashreplace')
+      /* "src/lxml/xmlerror.pxi":154
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self._message = self._c_message[:size].decode(
+ *                     'ascii', 'backslashreplace')
  */
       {
         __Pyx_PyThreadState_declare
@@ -38803,28 +38918,28 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
         __Pyx_XGOTREF(__pyx_t_12);
         /*try:*/ {
 
-          /* "src/lxml/xmlerror.pxi":153
+          /* "src/lxml/xmlerror.pxi":155
+ *         except UnicodeDecodeError:
+ *             try:
+ *                 self._message = self._c_message[:size].decode(             # <<<<<<<<<<<<<<
+ *                     'ascii', 'backslashreplace')
  *             except UnicodeDecodeError:
- *                 try:
- *                     self._message = self._c_message[:size].decode(             # <<<<<<<<<<<<<<
- *                         'ascii', 'backslashreplace')
- *                 except UnicodeDecodeError:
  */
-          __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_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, 155, __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)
+          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, 155, __pyx_L16_error)
           __Pyx_GIVEREF(__pyx_t_13);
           __Pyx_GOTREF(__pyx_v_self->_message);
           __Pyx_DECREF(__pyx_v_self->_message);
           __pyx_v_self->_message = ((PyObject*)__pyx_t_13);
           __pyx_t_13 = 0;
 
-          /* "src/lxml/xmlerror.pxi":152
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._message = self._c_message[:size].decode(
- *                         'ascii', 'backslashreplace')
+          /* "src/lxml/xmlerror.pxi":154
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self._message = self._c_message[:size].decode(
+ *                     'ascii', 'backslashreplace')
  */
         }
         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
@@ -38834,27 +38949,27 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
         __pyx_L16_error:;
         __Pyx_XDECREF(__pyx_t_13); __pyx_t_13 = 0;
 
-        /* "src/lxml/xmlerror.pxi":155
- *                     self._message = self._c_message[:size].decode(
- *                         'ascii', 'backslashreplace')
- *                 except UnicodeDecodeError:             # <<<<<<<<<<<<<<
- *                     self._message = u'<undecodable error message>'
- *             if self._c_message:
+        /* "src/lxml/xmlerror.pxi":157
+ *                 self._message = self._c_message[:size].decode(
+ *                     'ascii', 'backslashreplace')
+ *             except UnicodeDecodeError:             # <<<<<<<<<<<<<<
+ *                 self._message = u'<undecodable error message>'
+ *         if self._c_message:
  */
         __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);
-          if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0) __PYX_ERR(1, 155, __pyx_L18_except_error)
+          if (__Pyx_GetException(&__pyx_t_13, &__pyx_t_14, &__pyx_t_15) < 0) __PYX_ERR(1, 157, __pyx_L18_except_error)
           __Pyx_GOTREF(__pyx_t_13);
           __Pyx_GOTREF(__pyx_t_14);
           __Pyx_GOTREF(__pyx_t_15);
 
-          /* "src/lxml/xmlerror.pxi":156
- *                         'ascii', 'backslashreplace')
- *                 except UnicodeDecodeError:
- *                     self._message = u'<undecodable error message>'             # <<<<<<<<<<<<<<
- *             if self._c_message:
- *                 # clean up early
+          /* "src/lxml/xmlerror.pxi":158
+ *                     'ascii', 'backslashreplace')
+ *             except UnicodeDecodeError:
+ *                 self._message = u'<undecodable error message>'             # <<<<<<<<<<<<<<
+ *         if self._c_message:
+ *             # clean up early
  */
           __Pyx_INCREF(__pyx_kp_u_undecodable_error_message);
           __Pyx_GIVEREF(__pyx_kp_u_undecodable_error_message);
@@ -38869,12 +38984,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
         goto __pyx_L18_except_error;
         __pyx_L18_except_error:;
 
-        /* "src/lxml/xmlerror.pxi":152
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
- *                 try:             # <<<<<<<<<<<<<<
- *                     self._message = self._c_message[:size].decode(
- *                         'ascii', 'backslashreplace')
+        /* "src/lxml/xmlerror.pxi":154
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
+ *             try:             # <<<<<<<<<<<<<<
+ *                 self._message = self._c_message[:size].decode(
+ *                     'ascii', 'backslashreplace')
  */
         __Pyx_XGIVEREF(__pyx_t_10);
         __Pyx_XGIVEREF(__pyx_t_11);
@@ -38896,12 +39011,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
     goto __pyx_L10_except_error;
     __pyx_L10_except_error:;
 
-    /* "src/lxml/xmlerror.pxi":149
- *             # cannot use funicode() here because the message may contain
- *             # byte encoded file paths etc.
- *             try:             # <<<<<<<<<<<<<<
- *                 self._message = self._c_message[:size].decode('utf8')
- *             except UnicodeDecodeError:
+    /* "src/lxml/xmlerror.pxi":151
+ *         # cannot use funicode() here because the message may contain
+ *         # byte encoded file paths etc.
+ *         try:             # <<<<<<<<<<<<<<
+ *             self._message = self._c_message[:size].decode('utf8')
+ *         except UnicodeDecodeError:
  */
     __Pyx_XGIVEREF(__pyx_t_3);
     __Pyx_XGIVEREF(__pyx_t_4);
@@ -38916,49 +39031,49 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
     __pyx_L13_try_end:;
   }
 
-  /* "src/lxml/xmlerror.pxi":157
- *                 except UnicodeDecodeError:
- *                     self._message = u'<undecodable error message>'
- *             if self._c_message:             # <<<<<<<<<<<<<<
- *                 # clean up early
- *                 tree.xmlFree(self._c_message)
+  /* "src/lxml/xmlerror.pxi":159
+ *             except UnicodeDecodeError:
+ *                 self._message = u'<undecodable error message>'
+ *         if self._c_message:             # <<<<<<<<<<<<<<
+ *             # clean up early
+ *             tree.xmlFree(self._c_message)
  */
   __pyx_t_2 = (__pyx_v_self->_c_message != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":159
- *             if self._c_message:
- *                 # clean up early
- *                 tree.xmlFree(self._c_message)             # <<<<<<<<<<<<<<
- *                 self._c_message = NULL
- *             return self._message
+    /* "src/lxml/xmlerror.pxi":161
+ *         if self._c_message:
+ *             # clean up early
+ *             tree.xmlFree(self._c_message)             # <<<<<<<<<<<<<<
+ *             self._c_message = NULL
+ *         return self._message
  */
     xmlFree(__pyx_v_self->_c_message);
 
-    /* "src/lxml/xmlerror.pxi":160
- *                 # clean up early
- *                 tree.xmlFree(self._c_message)
- *                 self._c_message = NULL             # <<<<<<<<<<<<<<
- *             return self._message
+    /* "src/lxml/xmlerror.pxi":162
+ *             # clean up early
+ *             tree.xmlFree(self._c_message)
+ *             self._c_message = NULL             # <<<<<<<<<<<<<<
+ *         return self._message
  * 
  */
     __pyx_v_self->_c_message = NULL;
 
-    /* "src/lxml/xmlerror.pxi":157
- *                 except UnicodeDecodeError:
- *                     self._message = u'<undecodable error message>'
- *             if self._c_message:             # <<<<<<<<<<<<<<
- *                 # clean up early
- *                 tree.xmlFree(self._c_message)
+    /* "src/lxml/xmlerror.pxi":159
+ *             except UnicodeDecodeError:
+ *                 self._message = u'<undecodable error message>'
+ *         if self._c_message:             # <<<<<<<<<<<<<<
+ *             # clean up early
+ *             tree.xmlFree(self._c_message)
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":161
- *                 tree.xmlFree(self._c_message)
- *                 self._c_message = NULL
- *             return self._message             # <<<<<<<<<<<<<<
+  /* "src/lxml/xmlerror.pxi":163
+ *             tree.xmlFree(self._c_message)
+ *             self._c_message = NULL
+ *         return self._message             # <<<<<<<<<<<<<<
  * 
- *     property filename:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_message);
@@ -38967,10 +39082,10 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
 
   /* "src/lxml/xmlerror.pxi":138
  * 
- *     property message:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef size_t size
- *             if self._message is not None:
+ *     @property
+ *     def message(self):             # <<<<<<<<<<<<<<
+ *         """The log message string.
+ *         """
  */
 
   /* function exit code */
@@ -38989,12 +39104,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_7message___get__(struct __pyx_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":164
+/* "src/lxml/xmlerror.pxi":166
  * 
- *     property filename:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._filename is None:
- *                 if self._c_filename is not NULL:
+ *     @property
+ *     def filename(self):             # <<<<<<<<<<<<<<
+ *         """The file path where the report originated, if any.
+ *         """
  */
 
 /* Python wrapper */
@@ -39018,97 +39133,97 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/xmlerror.pxi":165
- *     property filename:
- *         def __get__(self):
- *             if self._filename is None:             # <<<<<<<<<<<<<<
- *                 if self._c_filename is not NULL:
- *                     self._filename = _decodeFilename(self._c_filename)
+  /* "src/lxml/xmlerror.pxi":169
+ *         """The file path where the report originated, if any.
+ *         """
+ *         if self._filename is None:             # <<<<<<<<<<<<<<
+ *             if self._c_filename is not NULL:
+ *                 self._filename = _decodeFilename(self._c_filename)
  */
   __pyx_t_1 = (__pyx_v_self->_filename == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":166
- *         def __get__(self):
- *             if self._filename is None:
- *                 if self._c_filename is not NULL:             # <<<<<<<<<<<<<<
- *                     self._filename = _decodeFilename(self._c_filename)
- *                     # clean up early
+    /* "src/lxml/xmlerror.pxi":170
+ *         """
+ *         if self._filename is None:
+ *             if self._c_filename is not NULL:             # <<<<<<<<<<<<<<
+ *                 self._filename = _decodeFilename(self._c_filename)
+ *                 # clean up early
  */
     __pyx_t_2 = ((__pyx_v_self->_c_filename != NULL) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/xmlerror.pxi":167
- *             if self._filename is None:
- *                 if self._c_filename is not NULL:
- *                     self._filename = _decodeFilename(self._c_filename)             # <<<<<<<<<<<<<<
- *                     # clean up early
- *                     tree.xmlFree(self._c_filename)
+      /* "src/lxml/xmlerror.pxi":171
+ *         if self._filename is None:
+ *             if self._c_filename is not NULL:
+ *                 self._filename = _decodeFilename(self._c_filename)             # <<<<<<<<<<<<<<
+ *                 # clean up early
+ *                 tree.xmlFree(self._c_filename)
  */
-      __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_t_3 = __pyx_f_4lxml_5etree__decodeFilename(__pyx_v_self->_c_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 171, __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)
+      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, 171, __pyx_L1_error)
       __Pyx_GIVEREF(__pyx_t_3);
       __Pyx_GOTREF(__pyx_v_self->_filename);
       __Pyx_DECREF(__pyx_v_self->_filename);
       __pyx_v_self->_filename = ((PyObject*)__pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/xmlerror.pxi":169
- *                     self._filename = _decodeFilename(self._c_filename)
- *                     # clean up early
- *                     tree.xmlFree(self._c_filename)             # <<<<<<<<<<<<<<
- *                     self._c_filename = NULL
- *             return self._filename
+      /* "src/lxml/xmlerror.pxi":173
+ *                 self._filename = _decodeFilename(self._c_filename)
+ *                 # clean up early
+ *                 tree.xmlFree(self._c_filename)             # <<<<<<<<<<<<<<
+ *                 self._c_filename = NULL
+ *         return self._filename
  */
       xmlFree(__pyx_v_self->_c_filename);
 
-      /* "src/lxml/xmlerror.pxi":170
- *                     # clean up early
- *                     tree.xmlFree(self._c_filename)
- *                     self._c_filename = NULL             # <<<<<<<<<<<<<<
- *             return self._filename
+      /* "src/lxml/xmlerror.pxi":174
+ *                 # clean up early
+ *                 tree.xmlFree(self._c_filename)
+ *                 self._c_filename = NULL             # <<<<<<<<<<<<<<
+ *         return self._filename
  * 
  */
       __pyx_v_self->_c_filename = NULL;
 
-      /* "src/lxml/xmlerror.pxi":166
- *         def __get__(self):
- *             if self._filename is None:
- *                 if self._c_filename is not NULL:             # <<<<<<<<<<<<<<
- *                     self._filename = _decodeFilename(self._c_filename)
- *                     # clean up early
+      /* "src/lxml/xmlerror.pxi":170
+ *         """
+ *         if self._filename is None:
+ *             if self._c_filename is not NULL:             # <<<<<<<<<<<<<<
+ *                 self._filename = _decodeFilename(self._c_filename)
+ *                 # clean up early
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":165
- *     property filename:
- *         def __get__(self):
- *             if self._filename is None:             # <<<<<<<<<<<<<<
- *                 if self._c_filename is not NULL:
- *                     self._filename = _decodeFilename(self._c_filename)
+    /* "src/lxml/xmlerror.pxi":169
+ *         """The file path where the report originated, if any.
+ *         """
+ *         if self._filename is None:             # <<<<<<<<<<<<<<
+ *             if self._c_filename is not NULL:
+ *                 self._filename = _decodeFilename(self._c_filename)
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":171
- *                     tree.xmlFree(self._c_filename)
- *                     self._c_filename = NULL
- *             return self._filename             # <<<<<<<<<<<<<<
+  /* "src/lxml/xmlerror.pxi":175
+ *                 tree.xmlFree(self._c_filename)
+ *                 self._c_filename = NULL
+ *         return self._filename             # <<<<<<<<<<<<<<
  * 
- *     property path:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_self->_filename);
   __pyx_r = __pyx_v_self->_filename;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":164
+  /* "src/lxml/xmlerror.pxi":166
  * 
- *     property filename:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._filename is None:
- *                 if self._c_filename is not NULL:
+ *     @property
+ *     def filename(self):             # <<<<<<<<<<<<<<
+ *         """The file path where the report originated, if any.
+ *         """
  */
 
   /* function exit code */
@@ -39122,12 +39237,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_8filename___get__(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":176
+/* "src/lxml/xmlerror.pxi":178
+ * 
+ *     @property
+ *     def path(self):             # <<<<<<<<<<<<<<
  *         """The XPath for the node where the error was detected.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return funicode(self._c_path) if self._c_path is not NULL else None
- * 
  */
 
 /* Python wrapper */
@@ -39150,16 +39265,16 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4path___get__(struct __pyx_obj
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "src/lxml/xmlerror.pxi":177
+  /* "src/lxml/xmlerror.pxi":181
+ *         """The XPath for the node where the error was detected.
  *         """
- *         def __get__(self):
- *             return funicode(self._c_path) if self._c_path is not NULL else None             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_path) if self._c_path is not NULL else None             # <<<<<<<<<<<<<<
  * 
  * 
  */
   __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)
+    __pyx_t_2 = __pyx_f_4lxml_5etree_funicode(__pyx_v_self->_c_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 181, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -39171,12 +39286,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_4path___get__(struct __pyx_obj
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":176
+  /* "src/lxml/xmlerror.pxi":178
+ * 
+ *     @property
+ *     def path(self):             # <<<<<<<<<<<<<<
  *         """The XPath for the node where the error was detected.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return funicode(self._c_path) if self._c_path is not NULL else None
- * 
  */
 
   /* function exit code */
@@ -39411,7 +39526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_LogEntry_6column___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":183
+/* "src/lxml/xmlerror.pxi":187
  *     cdef _LogEntry _first_error
  *     cdef readonly object last_error
  *     def __init__(self, first_error, last_error):             # <<<<<<<<<<<<<<
@@ -39450,11 +39565,11 @@ static int __pyx_pw_4lxml_5etree_13_BaseErrorLog_1__init__(PyObject *__pyx_v_sel
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_last_error)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(1, 183, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, 1); __PYX_ERR(1, 187, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 183, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 187, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -39467,7 +39582,7 @@ static int __pyx_pw_4lxml_5etree_13_BaseErrorLog_1__init__(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 183, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 187, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._BaseErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -39486,14 +39601,14 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":184
+  /* "src/lxml/xmlerror.pxi":188
  *     cdef readonly object last_error
  *     def __init__(self, first_error, last_error):
  *         self._first_error = first_error             # <<<<<<<<<<<<<<
  *         self.last_error = last_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)
+  if (!(likely(((__pyx_v_first_error) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_first_error, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 188, __pyx_L1_error)
   __pyx_t_1 = __pyx_v_first_error;
   __Pyx_INCREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
@@ -39502,7 +39617,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
   __pyx_v_self->_first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":185
+  /* "src/lxml/xmlerror.pxi":189
  *     def __init__(self, first_error, last_error):
  *         self._first_error = first_error
  *         self.last_error = last_error             # <<<<<<<<<<<<<<
@@ -39515,7 +39630,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
   __Pyx_DECREF(__pyx_v_self->last_error);
   __pyx_v_self->last_error = __pyx_v_last_error;
 
-  /* "src/lxml/xmlerror.pxi":183
+  /* "src/lxml/xmlerror.pxi":187
  *     cdef _LogEntry _first_error
  *     cdef readonly object last_error
  *     def __init__(self, first_error, last_error):             # <<<<<<<<<<<<<<
@@ -39535,7 +39650,7 @@ static int __pyx_pf_4lxml_5etree_13_BaseErrorLog___init__(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":187
+/* "src/lxml/xmlerror.pxi":191
  *         self.last_error = last_error
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -39556,12 +39671,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 187, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 191, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_13_BaseErrorLog_3copy)) {
         __Pyx_XDECREF(__pyx_r);
@@ -39578,7 +39693,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 187, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 191, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -39586,7 +39701,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -39594,12 +39709,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":188
+  /* "src/lxml/xmlerror.pxi":192
  * 
  *     cpdef copy(self):
  *         return _BaseErrorLog(self._first_error, self.last_error)             # <<<<<<<<<<<<<<
@@ -39607,7 +39722,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
  *     def __repr__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 188, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 192, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self->_first_error));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self->_first_error));
@@ -39615,14 +39730,14 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_copy(struct __pyx_obj_4lxm
   __Pyx_INCREF(__pyx_v_self->last_error);
   __Pyx_GIVEREF(__pyx_v_self->last_error);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_self->last_error);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 188, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 192, __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/xmlerror.pxi":187
+  /* "src/lxml/xmlerror.pxi":191
  *         self.last_error = last_error
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -39664,7 +39779,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_2copy(struct __pyx_obj_4l
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("copy", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 191, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -39681,7 +39796,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_2copy(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":190
+/* "src/lxml/xmlerror.pxi":194
  *         return _BaseErrorLog(self._first_error, self.last_error)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -39707,7 +39822,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "src/lxml/xmlerror.pxi":191
+  /* "src/lxml/xmlerror.pxi":195
  * 
  *     def __repr__(self):
  *         return u''             # <<<<<<<<<<<<<<
@@ -39719,7 +39834,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
   __pyx_r = __pyx_kp_u__11;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":190
+  /* "src/lxml/xmlerror.pxi":194
  *         return _BaseErrorLog(self._first_error, self.last_error)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -39734,7 +39849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_4__repr__(CYTHON_UNUSED s
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":193
+/* "src/lxml/xmlerror.pxi":197
  *         return u''
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -39755,12 +39870,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 193, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 197, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_13_BaseErrorLog_7receive)) {
         __Pyx_XDECREF(__pyx_r);
@@ -39777,7 +39892,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_entry)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry));
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 193, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 197, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -39785,7 +39900,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -39793,12 +39908,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":194
+  /* "src/lxml/xmlerror.pxi":198
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         pass             # <<<<<<<<<<<<<<
@@ -39822,7 +39937,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog_receive(CYTHON_UNUSED stru
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":193
+/* "src/lxml/xmlerror.pxi":197
  *         return u''
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -39837,7 +39952,7 @@ static PyObject *__pyx_pw_4lxml_5etree_13_BaseErrorLog_7receive(PyObject *__pyx_
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 193, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 197, __pyx_L1_error)
   __pyx_r = __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));
 
   /* function exit code */
@@ -39855,7 +39970,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_6receive(struct __pyx_obj
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("receive", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_13_BaseErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 197, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -39872,7 +39987,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_6receive(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":197
+/* "src/lxml/xmlerror.pxi":201
  * 
  *     @cython.final
  *     cdef void _receive(self, xmlerror.xmlError* error):             # <<<<<<<<<<<<<<
@@ -39890,30 +40005,30 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_receive", 0);
 
-  /* "src/lxml/xmlerror.pxi":201
+  /* "src/lxml/xmlerror.pxi":205
  *         cdef _LogEntry entry
  *         cdef _BaseErrorLog global_log
  *         entry = _LogEntry.__new__(_LogEntry)             # <<<<<<<<<<<<<<
  *         entry._setError(error)
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  */
-  __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_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, 205, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":202
+  /* "src/lxml/xmlerror.pxi":206
  *         cdef _BaseErrorLog global_log
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setError(error)             # <<<<<<<<<<<<<<
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  *                    error.level == xmlerror.XML_ERR_FATAL
  */
-  __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_t_1 = __pyx_f_4lxml_5etree_9_LogEntry__setError(__pyx_v_entry, __pyx_v_error); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 206, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":203
+  /* "src/lxml/xmlerror.pxi":207
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setError(error)
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
@@ -39924,7 +40039,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
     case XML_ERR_ERROR:
     case XML_ERR_FATAL:
 
-    /* "src/lxml/xmlerror.pxi":204
+    /* "src/lxml/xmlerror.pxi":208
  *         entry._setError(error)
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  *                    error.level == xmlerror.XML_ERR_FATAL             # <<<<<<<<<<<<<<
@@ -39933,7 +40048,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  */
     __pyx_t_2 = 1;
 
-    /* "src/lxml/xmlerror.pxi":203
+    /* "src/lxml/xmlerror.pxi":207
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setError(error)
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
@@ -39947,19 +40062,19 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   }
   __pyx_v_is_error = __pyx_t_2;
 
-  /* "src/lxml/xmlerror.pxi":205
+  /* "src/lxml/xmlerror.pxi":209
  *         is_error = error.level == xmlerror.XML_ERR_ERROR or \
  *                    error.level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)             # <<<<<<<<<<<<<<
  *         if global_log is not self:
  *             global_log.receive(entry)
  */
-  __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_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 209, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":206
+  /* "src/lxml/xmlerror.pxi":210
  *                    error.level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:             # <<<<<<<<<<<<<<
@@ -39970,18 +40085,18 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/xmlerror.pxi":207
+    /* "src/lxml/xmlerror.pxi":211
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:
  *             global_log.receive(entry)             # <<<<<<<<<<<<<<
  *             if is_error:
  *                 global_log.last_error = entry
  */
-    __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_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, 211, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/xmlerror.pxi":208
+    /* "src/lxml/xmlerror.pxi":212
  *         if global_log is not self:
  *             global_log.receive(entry)
  *             if is_error:             # <<<<<<<<<<<<<<
@@ -39991,7 +40106,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
     __pyx_t_3 = (__pyx_v_is_error != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/xmlerror.pxi":209
+      /* "src/lxml/xmlerror.pxi":213
  *             global_log.receive(entry)
  *             if is_error:
  *                 global_log.last_error = entry             # <<<<<<<<<<<<<<
@@ -40004,7 +40119,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
       __Pyx_DECREF(__pyx_v_global_log->last_error);
       __pyx_v_global_log->last_error = ((PyObject *)__pyx_v_entry);
 
-      /* "src/lxml/xmlerror.pxi":208
+      /* "src/lxml/xmlerror.pxi":212
  *         if global_log is not self:
  *             global_log.receive(entry)
  *             if is_error:             # <<<<<<<<<<<<<<
@@ -40013,7 +40128,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":206
+    /* "src/lxml/xmlerror.pxi":210
  *                    error.level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:             # <<<<<<<<<<<<<<
@@ -40022,18 +40137,18 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":210
+  /* "src/lxml/xmlerror.pxi":214
  *             if is_error:
  *                 global_log.last_error = entry
  *         self.receive(entry)             # <<<<<<<<<<<<<<
  *         if is_error:
  *             self.last_error = entry
  */
-  __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_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, 214, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":211
+  /* "src/lxml/xmlerror.pxi":215
  *                 global_log.last_error = entry
  *         self.receive(entry)
  *         if is_error:             # <<<<<<<<<<<<<<
@@ -40043,7 +40158,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   __pyx_t_3 = (__pyx_v_is_error != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/xmlerror.pxi":212
+    /* "src/lxml/xmlerror.pxi":216
  *         self.receive(entry)
  *         if is_error:
  *             self.last_error = entry             # <<<<<<<<<<<<<<
@@ -40056,7 +40171,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
     __Pyx_DECREF(__pyx_v_self->last_error);
     __pyx_v_self->last_error = ((PyObject *)__pyx_v_entry);
 
-    /* "src/lxml/xmlerror.pxi":211
+    /* "src/lxml/xmlerror.pxi":215
  *                 global_log.last_error = entry
  *         self.receive(entry)
  *         if is_error:             # <<<<<<<<<<<<<<
@@ -40065,7 +40180,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":197
+  /* "src/lxml/xmlerror.pxi":201
  * 
  *     @cython.final
  *     cdef void _receive(self, xmlerror.xmlError* error):             # <<<<<<<<<<<<<<
@@ -40084,7 +40199,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(struct __pyx_obj_4lxml
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/xmlerror.pxi":215
+/* "src/lxml/xmlerror.pxi":219
  * 
  *     @cython.final
  *     cdef void _receiveGeneric(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
@@ -40102,30 +40217,30 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("_receiveGeneric", 0);
 
-  /* "src/lxml/xmlerror.pxi":220
+  /* "src/lxml/xmlerror.pxi":224
  *         cdef _LogEntry entry
  *         cdef _BaseErrorLog global_log
  *         entry = _LogEntry.__new__(_LogEntry)             # <<<<<<<<<<<<<<
  *         entry._setGeneric(domain, type, level, line, message, filename)
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  */
-  __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_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, 224, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_entry = ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":221
+  /* "src/lxml/xmlerror.pxi":225
  *         cdef _BaseErrorLog global_log
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setGeneric(domain, type, level, line, message, filename)             # <<<<<<<<<<<<<<
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  *                    level == xmlerror.XML_ERR_FATAL
  */
-  __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_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, 225, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":222
+  /* "src/lxml/xmlerror.pxi":226
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setGeneric(domain, type, level, line, message, filename)
  *         is_error = level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
@@ -40136,7 +40251,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
     case XML_ERR_ERROR:
     case XML_ERR_FATAL:
 
-    /* "src/lxml/xmlerror.pxi":223
+    /* "src/lxml/xmlerror.pxi":227
  *         entry._setGeneric(domain, type, level, line, message, filename)
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  *                    level == xmlerror.XML_ERR_FATAL             # <<<<<<<<<<<<<<
@@ -40145,7 +40260,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  */
     __pyx_t_2 = 1;
 
-    /* "src/lxml/xmlerror.pxi":222
+    /* "src/lxml/xmlerror.pxi":226
  *         entry = _LogEntry.__new__(_LogEntry)
  *         entry._setGeneric(domain, type, level, line, message, filename)
  *         is_error = level == xmlerror.XML_ERR_ERROR or \             # <<<<<<<<<<<<<<
@@ -40159,19 +40274,19 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   }
   __pyx_v_is_error = __pyx_t_2;
 
-  /* "src/lxml/xmlerror.pxi":224
+  /* "src/lxml/xmlerror.pxi":228
  *         is_error = level == xmlerror.XML_ERR_ERROR or \
  *                    level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)             # <<<<<<<<<<<<<<
  *         if global_log is not self:
  *             global_log.receive(entry)
  */
-  __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_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_global_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":225
+  /* "src/lxml/xmlerror.pxi":229
  *                    level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:             # <<<<<<<<<<<<<<
@@ -40182,18 +40297,18 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/xmlerror.pxi":226
+    /* "src/lxml/xmlerror.pxi":230
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:
  *             global_log.receive(entry)             # <<<<<<<<<<<<<<
  *             if is_error:
  *                 global_log.last_error = entry
  */
-    __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_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, 230, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "src/lxml/xmlerror.pxi":227
+    /* "src/lxml/xmlerror.pxi":231
  *         if global_log is not self:
  *             global_log.receive(entry)
  *             if is_error:             # <<<<<<<<<<<<<<
@@ -40203,7 +40318,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
     __pyx_t_3 = (__pyx_v_is_error != 0);
     if (__pyx_t_3) {
 
-      /* "src/lxml/xmlerror.pxi":228
+      /* "src/lxml/xmlerror.pxi":232
  *             global_log.receive(entry)
  *             if is_error:
  *                 global_log.last_error = entry             # <<<<<<<<<<<<<<
@@ -40216,7 +40331,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
       __Pyx_DECREF(__pyx_v_global_log->last_error);
       __pyx_v_global_log->last_error = ((PyObject *)__pyx_v_entry);
 
-      /* "src/lxml/xmlerror.pxi":227
+      /* "src/lxml/xmlerror.pxi":231
  *         if global_log is not self:
  *             global_log.receive(entry)
  *             if is_error:             # <<<<<<<<<<<<<<
@@ -40225,7 +40340,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":225
+    /* "src/lxml/xmlerror.pxi":229
  *                    level == xmlerror.XML_ERR_FATAL
  *         global_log = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *         if global_log is not self:             # <<<<<<<<<<<<<<
@@ -40234,18 +40349,18 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":229
+  /* "src/lxml/xmlerror.pxi":233
  *             if is_error:
  *                 global_log.last_error = entry
  *         self.receive(entry)             # <<<<<<<<<<<<<<
  *         if is_error:
  *             self.last_error = entry
  */
-  __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_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, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":230
+  /* "src/lxml/xmlerror.pxi":234
  *                 global_log.last_error = entry
  *         self.receive(entry)
  *         if is_error:             # <<<<<<<<<<<<<<
@@ -40255,7 +40370,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   __pyx_t_3 = (__pyx_v_is_error != 0);
   if (__pyx_t_3) {
 
-    /* "src/lxml/xmlerror.pxi":231
+    /* "src/lxml/xmlerror.pxi":235
  *         self.receive(entry)
  *         if is_error:
  *             self.last_error = entry             # <<<<<<<<<<<<<<
@@ -40268,7 +40383,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
     __Pyx_DECREF(__pyx_v_self->last_error);
     __pyx_v_self->last_error = ((PyObject *)__pyx_v_entry);
 
-    /* "src/lxml/xmlerror.pxi":230
+    /* "src/lxml/xmlerror.pxi":234
  *                 global_log.last_error = entry
  *         self.receive(entry)
  *         if is_error:             # <<<<<<<<<<<<<<
@@ -40277,7 +40392,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":215
+  /* "src/lxml/xmlerror.pxi":219
  * 
  *     @cython.final
  *     cdef void _receiveGeneric(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
@@ -40296,7 +40411,7 @@ static void __pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric(struct __pyx_ob
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/xmlerror.pxi":234
+/* "src/lxml/xmlerror.pxi":238
  * 
  *     @cython.final
  *     cdef _buildParseException(self, exctype, default_message):             # <<<<<<<<<<<<<<
@@ -40326,7 +40441,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   PyObject *__pyx_t_12 = NULL;
   __Pyx_RefNannySetupContext("_buildParseException", 0);
 
-  /* "src/lxml/xmlerror.pxi":235
+  /* "src/lxml/xmlerror.pxi":239
  *     @cython.final
  *     cdef _buildParseException(self, exctype, default_message):
  *         code = xmlerror.XML_ERR_INTERNAL_ERROR             # <<<<<<<<<<<<<<
@@ -40335,7 +40450,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  */
   __pyx_v_code = XML_ERR_INTERNAL_ERROR;
 
-  /* "src/lxml/xmlerror.pxi":236
+  /* "src/lxml/xmlerror.pxi":240
  *     cdef _buildParseException(self, exctype, default_message):
  *         code = xmlerror.XML_ERR_INTERNAL_ERROR
  *         if self._first_error is None:             # <<<<<<<<<<<<<<
@@ -40346,7 +40461,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":237
+    /* "src/lxml/xmlerror.pxi":241
  *         code = xmlerror.XML_ERR_INTERNAL_ERROR
  *         if self._first_error is None:
  *             return exctype(default_message, code, 0, 0)             # <<<<<<<<<<<<<<
@@ -40354,7 +40469,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *         if message:
  */
     __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_t_4 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 241, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_exctype);
     __pyx_t_5 = __pyx_v_exctype; __pyx_t_6 = NULL;
@@ -40372,7 +40487,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_5)) {
       PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_default_message, __pyx_t_4, __pyx_int_0, __pyx_int_0};
-      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 241, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -40381,14 +40496,14 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_5)) {
       PyObject *__pyx_temp[5] = {__pyx_t_6, __pyx_v_default_message, __pyx_t_4, __pyx_int_0, __pyx_int_0};
-      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_5, __pyx_temp+1-__pyx_t_7, 4+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 241, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else
     #endif
     {
-      __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 237, __pyx_L1_error)
+      __pyx_t_8 = PyTuple_New(4+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 241, __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;
@@ -40405,7 +40520,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
       __Pyx_GIVEREF(__pyx_int_0);
       PyTuple_SET_ITEM(__pyx_t_8, 3+__pyx_t_7, __pyx_int_0);
       __pyx_t_4 = 0;
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 237, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_t_8, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 241, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     }
@@ -40414,7 +40529,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":236
+    /* "src/lxml/xmlerror.pxi":240
  *     cdef _buildParseException(self, exctype, default_message):
  *         code = xmlerror.XML_ERR_INTERNAL_ERROR
  *         if self._first_error is None:             # <<<<<<<<<<<<<<
@@ -40423,29 +40538,29 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":238
+  /* "src/lxml/xmlerror.pxi":242
  *         if self._first_error is None:
  *             return exctype(default_message, code, 0, 0)
  *         message = self._first_error.message             # <<<<<<<<<<<<<<
  *         if message:
  *             code = self._first_error.type
  */
-  __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_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 242, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_message = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":239
+  /* "src/lxml/xmlerror.pxi":243
  *             return exctype(default_message, code, 0, 0)
  *         message = self._first_error.message
  *         if message:             # <<<<<<<<<<<<<<
  *             code = self._first_error.type
  *         else:
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_message); if (unlikely(__pyx_t_2 < 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, 243, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":240
+    /* "src/lxml/xmlerror.pxi":244
  *         message = self._first_error.message
  *         if message:
  *             code = self._first_error.type             # <<<<<<<<<<<<<<
@@ -40455,7 +40570,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     __pyx_t_7 = __pyx_v_self->_first_error->type;
     __pyx_v_code = __pyx_t_7;
 
-    /* "src/lxml/xmlerror.pxi":239
+    /* "src/lxml/xmlerror.pxi":243
  *             return exctype(default_message, code, 0, 0)
  *         message = self._first_error.message
  *         if message:             # <<<<<<<<<<<<<<
@@ -40465,7 +40580,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     goto __pyx_L4;
   }
 
-  /* "src/lxml/xmlerror.pxi":242
+  /* "src/lxml/xmlerror.pxi":246
  *             code = self._first_error.type
  *         else:
  *             message = default_message             # <<<<<<<<<<<<<<
@@ -40478,7 +40593,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   }
   __pyx_L4:;
 
-  /* "src/lxml/xmlerror.pxi":243
+  /* "src/lxml/xmlerror.pxi":247
  *         else:
  *             message = default_message
  *         line = self._first_error.line             # <<<<<<<<<<<<<<
@@ -40488,7 +40603,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __pyx_t_7 = __pyx_v_self->_first_error->line;
   __pyx_v_line = __pyx_t_7;
 
-  /* "src/lxml/xmlerror.pxi":244
+  /* "src/lxml/xmlerror.pxi":248
  *             message = default_message
  *         line = self._first_error.line
  *         column = self._first_error.column             # <<<<<<<<<<<<<<
@@ -40498,19 +40613,19 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __pyx_t_7 = __pyx_v_self->_first_error->column;
   __pyx_v_column = __pyx_t_7;
 
-  /* "src/lxml/xmlerror.pxi":245
+  /* "src/lxml/xmlerror.pxi":249
  *         line = self._first_error.line
  *         column = self._first_error.column
  *         filename = self._first_error.filename             # <<<<<<<<<<<<<<
  *         if line > 0:
  *             if column > 0:
  */
-  __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_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_filename); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 249, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_filename = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":246
+  /* "src/lxml/xmlerror.pxi":250
  *         column = self._first_error.column
  *         filename = self._first_error.filename
  *         if line > 0:             # <<<<<<<<<<<<<<
@@ -40520,7 +40635,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __pyx_t_2 = ((__pyx_v_line > 0) != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":247
+    /* "src/lxml/xmlerror.pxi":251
  *         filename = self._first_error.filename
  *         if line > 0:
  *             if column > 0:             # <<<<<<<<<<<<<<
@@ -40530,18 +40645,18 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     __pyx_t_2 = ((__pyx_v_column > 0) != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/xmlerror.pxi":248
+      /* "src/lxml/xmlerror.pxi":252
  *         if line > 0:
  *             if column > 0:
  *                 message = f"{message}, line {line}, column {column}"             # <<<<<<<<<<<<<<
  *             else:
  *                 message = f"{message}, line {line}"
  */
-      __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 248, __pyx_L1_error)
+      __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 = 0;
       __pyx_t_10 = 127;
-      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 248, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_5) : __pyx_t_10;
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
@@ -40552,7 +40667,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
       __pyx_t_9 += 7;
       __Pyx_GIVEREF(__pyx_kp_u_line);
       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u_line);
-      __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 248, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_5);
@@ -40562,19 +40677,19 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
       __pyx_t_9 += 9;
       __Pyx_GIVEREF(__pyx_kp_u_column);
       PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_kp_u_column);
-      __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_column, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 248, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyUnicode_From_int(__pyx_v_column, 0, ' ', 'd'); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
       __Pyx_GIVEREF(__pyx_t_5);
       PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_5);
       __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 248, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 252, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/xmlerror.pxi":247
+      /* "src/lxml/xmlerror.pxi":251
  *         filename = self._first_error.filename
  *         if line > 0:
  *             if column > 0:             # <<<<<<<<<<<<<<
@@ -40584,7 +40699,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
       goto __pyx_L6;
     }
 
-    /* "src/lxml/xmlerror.pxi":250
+    /* "src/lxml/xmlerror.pxi":254
  *                 message = f"{message}, line {line}, column {column}"
  *             else:
  *                 message = f"{message}, line {line}"             # <<<<<<<<<<<<<<
@@ -40592,11 +40707,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  * 
  */
     /*else*/ {
-      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 250, __pyx_L1_error)
+      __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 254, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_9 = 0;
       __pyx_t_10 = 127;
-      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 250, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 254, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_10 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_10) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_10;
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
@@ -40607,13 +40722,13 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
       __pyx_t_9 += 7;
       __Pyx_GIVEREF(__pyx_kp_u_line);
       PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_kp_u_line);
-      __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 250, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_line, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 254, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_9 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 250, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_9, __pyx_t_10); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 254, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_3);
@@ -40621,7 +40736,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     }
     __pyx_L6:;
 
-    /* "src/lxml/xmlerror.pxi":246
+    /* "src/lxml/xmlerror.pxi":250
  *         column = self._first_error.column
  *         filename = self._first_error.filename
  *         if line > 0:             # <<<<<<<<<<<<<<
@@ -40630,7 +40745,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":251
+  /* "src/lxml/xmlerror.pxi":255
  *             else:
  *                 message = f"{message}, line {line}"
  *         return exctype(message, code, line, column, filename)             # <<<<<<<<<<<<<<
@@ -40638,11 +40753,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
  *     @cython.final
  */
   __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_t_5 = __Pyx_PyInt_From_int(__pyx_v_code); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
-  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 251, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
-  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 251, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_column); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 255, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_exctype);
   __pyx_t_6 = __pyx_v_exctype; __pyx_t_11 = NULL;
@@ -40660,7 +40775,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_6)) {
     PyObject *__pyx_temp[6] = {__pyx_t_11, __pyx_v_message, __pyx_t_5, __pyx_t_8, __pyx_t_4, __pyx_v_filename};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 255, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -40671,7 +40786,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_6)) {
     PyObject *__pyx_temp[6] = {__pyx_t_11, __pyx_v_message, __pyx_t_5, __pyx_t_8, __pyx_t_4, __pyx_v_filename};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_6, __pyx_temp+1-__pyx_t_7, 5+__pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 255, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_11); __pyx_t_11 = 0;
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
@@ -40680,7 +40795,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   } else
   #endif
   {
-    __pyx_t_12 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 251, __pyx_L1_error)
+    __pyx_t_12 = PyTuple_New(5+__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(1, 255, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_12);
     if (__pyx_t_11) {
       __Pyx_GIVEREF(__pyx_t_11); PyTuple_SET_ITEM(__pyx_t_12, 0, __pyx_t_11); __pyx_t_11 = NULL;
@@ -40700,7 +40815,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
     __pyx_t_5 = 0;
     __pyx_t_8 = 0;
     __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 251, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_t_12, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 255, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
   }
@@ -40709,7 +40824,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":234
+  /* "src/lxml/xmlerror.pxi":238
  * 
  *     @cython.final
  *     cdef _buildParseException(self, exctype, default_message):             # <<<<<<<<<<<<<<
@@ -40736,7 +40851,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException(struc
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":254
+/* "src/lxml/xmlerror.pxi":258
  * 
  *     @cython.final
  *     cdef _buildExceptionMessage(self, default_message):             # <<<<<<<<<<<<<<
@@ -40756,7 +40871,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_buildExceptionMessage", 0);
 
-  /* "src/lxml/xmlerror.pxi":255
+  /* "src/lxml/xmlerror.pxi":259
  *     @cython.final
  *     cdef _buildExceptionMessage(self, default_message):
  *         if self._first_error is None:             # <<<<<<<<<<<<<<
@@ -40767,7 +40882,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":256
+    /* "src/lxml/xmlerror.pxi":260
  *     cdef _buildExceptionMessage(self, default_message):
  *         if self._first_error is None:
  *             return default_message             # <<<<<<<<<<<<<<
@@ -40779,7 +40894,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
     __pyx_r = __pyx_v_default_message;
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":255
+    /* "src/lxml/xmlerror.pxi":259
  *     @cython.final
  *     cdef _buildExceptionMessage(self, default_message):
  *         if self._first_error is None:             # <<<<<<<<<<<<<<
@@ -40788,32 +40903,32 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":257
+  /* "src/lxml/xmlerror.pxi":261
  *         if self._first_error is None:
  *             return default_message
  *         if self._first_error.message:             # <<<<<<<<<<<<<<
  *             message = self._first_error.message
  *         elif default_message is None:
  */
-  __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_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 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(1, 257, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 261, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":258
+    /* "src/lxml/xmlerror.pxi":262
  *             return default_message
  *         if self._first_error.message:
  *             message = self._first_error.message             # <<<<<<<<<<<<<<
  *         elif default_message is None:
  *             return None
  */
-    __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_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_first_error), __pyx_n_s_message); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 262, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_message = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "src/lxml/xmlerror.pxi":257
+    /* "src/lxml/xmlerror.pxi":261
  *         if self._first_error is None:
  *             return default_message
  *         if self._first_error.message:             # <<<<<<<<<<<<<<
@@ -40823,7 +40938,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
     goto __pyx_L4;
   }
 
-  /* "src/lxml/xmlerror.pxi":259
+  /* "src/lxml/xmlerror.pxi":263
  *         if self._first_error.message:
  *             message = self._first_error.message
  *         elif default_message is None:             # <<<<<<<<<<<<<<
@@ -40834,7 +40949,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":260
+    /* "src/lxml/xmlerror.pxi":264
  *             message = self._first_error.message
  *         elif default_message is None:
  *             return None             # <<<<<<<<<<<<<<
@@ -40845,7 +40960,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":259
+    /* "src/lxml/xmlerror.pxi":263
  *         if self._first_error.message:
  *             message = self._first_error.message
  *         elif default_message is None:             # <<<<<<<<<<<<<<
@@ -40854,7 +40969,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":262
+  /* "src/lxml/xmlerror.pxi":266
  *             return None
  *         else:
  *             message = default_message             # <<<<<<<<<<<<<<
@@ -40867,7 +40982,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   }
   __pyx_L4:;
 
-  /* "src/lxml/xmlerror.pxi":263
+  /* "src/lxml/xmlerror.pxi":267
  *         else:
  *             message = default_message
  *         if self._first_error.line > 0:             # <<<<<<<<<<<<<<
@@ -40877,7 +40992,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   __pyx_t_1 = ((__pyx_v_self->_first_error->line > 0) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":264
+    /* "src/lxml/xmlerror.pxi":268
  *             message = default_message
  *         if self._first_error.line > 0:
  *             if self._first_error.column > 0:             # <<<<<<<<<<<<<<
@@ -40887,18 +41002,18 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
     __pyx_t_1 = ((__pyx_v_self->_first_error->column > 0) != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":265
+      /* "src/lxml/xmlerror.pxi":269
  *         if self._first_error.line > 0:
  *             if self._first_error.column > 0:
  *                 message = f"{message}, line {self._first_error.line}, column {self._first_error.column}"             # <<<<<<<<<<<<<<
  *             else:
  *                 message = f"{message}, line {self._first_error.line}"
  */
-      __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 265, __pyx_L1_error)
+      __pyx_t_3 = PyTuple_New(5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 269, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 = 0;
       __pyx_t_5 = 127;
-      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 265, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 269, __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);
@@ -40909,7 +41024,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
       __pyx_t_4 += 7;
       __Pyx_GIVEREF(__pyx_kp_u_line);
       PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_kp_u_line);
-      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->line, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 265, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->line, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 269, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_6);
@@ -40919,19 +41034,19 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
       __pyx_t_4 += 9;
       __Pyx_GIVEREF(__pyx_kp_u_column);
       PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_kp_u_column);
-      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->column, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 265, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->column, 0, ' ', 'd'); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 269, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_6);
       __Pyx_GIVEREF(__pyx_t_6);
       PyTuple_SET_ITEM(__pyx_t_3, 4, __pyx_t_6);
       __pyx_t_6 = 0;
-      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 265, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_3, 5, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 269, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "src/lxml/xmlerror.pxi":264
+      /* "src/lxml/xmlerror.pxi":268
  *             message = default_message
  *         if self._first_error.line > 0:
  *             if self._first_error.column > 0:             # <<<<<<<<<<<<<<
@@ -40941,7 +41056,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
       goto __pyx_L6;
     }
 
-    /* "src/lxml/xmlerror.pxi":267
+    /* "src/lxml/xmlerror.pxi":271
  *                 message = f"{message}, line {self._first_error.line}, column {self._first_error.column}"
  *             else:
  *                 message = f"{message}, line {self._first_error.line}"             # <<<<<<<<<<<<<<
@@ -40949,11 +41064,11 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  * 
  */
     /*else*/ {
-      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 267, __pyx_L1_error)
+      __pyx_t_6 = PyTuple_New(3); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_4 = 0;
       __pyx_t_5 = 127;
-      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 267, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_message, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_5 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_5) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_5;
       __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
@@ -40964,13 +41079,13 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
       __pyx_t_4 += 7;
       __Pyx_GIVEREF(__pyx_kp_u_line);
       PyTuple_SET_ITEM(__pyx_t_6, 1, __pyx_kp_u_line);
-      __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->line, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 267, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyUnicode_From_int(__pyx_v_self->_first_error->line, 0, ' ', 'd'); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_t_4 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_6, 2, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 267, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_6, 3, __pyx_t_4, __pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 271, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __Pyx_DECREF_SET(__pyx_v_message, __pyx_t_3);
@@ -40978,7 +41093,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
     }
     __pyx_L6:;
 
-    /* "src/lxml/xmlerror.pxi":263
+    /* "src/lxml/xmlerror.pxi":267
  *         else:
  *             message = default_message
  *         if self._first_error.line > 0:             # <<<<<<<<<<<<<<
@@ -40987,7 +41102,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":268
+  /* "src/lxml/xmlerror.pxi":272
  *             else:
  *                 message = f"{message}, line {self._first_error.line}"
  *         return message             # <<<<<<<<<<<<<<
@@ -40999,7 +41114,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   __pyx_r = __pyx_v_message;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":254
+  /* "src/lxml/xmlerror.pxi":258
  * 
  *     @cython.final
  *     cdef _buildExceptionMessage(self, default_message):             # <<<<<<<<<<<<<<
@@ -41020,7 +41135,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage(str
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":182
+/* "src/lxml/xmlerror.pxi":186
  * cdef class _BaseErrorLog:
  *     cdef _LogEntry _first_error
  *     cdef readonly object last_error             # <<<<<<<<<<<<<<
@@ -41057,7 +41172,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_BaseErrorLog_10last_error___get__(stru
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":274
+/* "src/lxml/xmlerror.pxi":278
  *     cdef list _entries
  *     cdef int _offset
  *     def __init__(self, entries, first_error, last_error):             # <<<<<<<<<<<<<<
@@ -41099,17 +41214,17 @@ static int __pyx_pw_4lxml_5etree_13_ListErrorLog_1__init__(PyObject *__pyx_v_sel
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_first_error)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(1, 274, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 1); __PYX_ERR(1, 278, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_last_error)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(1, 274, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, 2); __PYX_ERR(1, 278, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 274, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 278, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 3) {
       goto __pyx_L5_argtuple_error;
@@ -41124,7 +41239,7 @@ static int __pyx_pw_4lxml_5etree_13_ListErrorLog_1__init__(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 274, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 3, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 278, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ListErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -41151,17 +41266,17 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   __Pyx_INCREF(__pyx_v_first_error);
   __Pyx_INCREF(__pyx_v_last_error);
 
-  /* "src/lxml/xmlerror.pxi":275
+  /* "src/lxml/xmlerror.pxi":279
  *     cdef int _offset
  *     def __init__(self, entries, first_error, last_error):
  *         if entries:             # <<<<<<<<<<<<<<
  *             if first_error is None:
  *                 first_error = entries[0]
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_entries); if (unlikely(__pyx_t_1 < 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, 279, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":276
+    /* "src/lxml/xmlerror.pxi":280
  *     def __init__(self, entries, first_error, last_error):
  *         if entries:
  *             if first_error is None:             # <<<<<<<<<<<<<<
@@ -41172,19 +41287,19 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "src/lxml/xmlerror.pxi":277
+      /* "src/lxml/xmlerror.pxi":281
  *         if entries:
  *             if first_error is None:
  *                 first_error = entries[0]             # <<<<<<<<<<<<<<
  *             if last_error is None:
  *                 last_error = entries[-1]
  */
-      __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_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, 281, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_first_error, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/xmlerror.pxi":276
+      /* "src/lxml/xmlerror.pxi":280
  *     def __init__(self, entries, first_error, last_error):
  *         if entries:
  *             if first_error is None:             # <<<<<<<<<<<<<<
@@ -41193,7 +41308,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":278
+    /* "src/lxml/xmlerror.pxi":282
  *             if first_error is None:
  *                 first_error = entries[0]
  *             if last_error is None:             # <<<<<<<<<<<<<<
@@ -41204,19 +41319,19 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":279
+      /* "src/lxml/xmlerror.pxi":283
  *                 first_error = entries[0]
  *             if last_error is None:
  *                 last_error = entries[-1]             # <<<<<<<<<<<<<<
  *         _BaseErrorLog.__init__(self, first_error, last_error)
  *         self._entries = entries
  */
-      __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_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, 283, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_last_error, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "src/lxml/xmlerror.pxi":278
+      /* "src/lxml/xmlerror.pxi":282
  *             if first_error is None:
  *                 first_error = entries[0]
  *             if last_error is None:             # <<<<<<<<<<<<<<
@@ -41225,7 +41340,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":275
+    /* "src/lxml/xmlerror.pxi":279
  *     cdef int _offset
  *     def __init__(self, entries, first_error, last_error):
  *         if entries:             # <<<<<<<<<<<<<<
@@ -41234,14 +41349,14 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":280
+  /* "src/lxml/xmlerror.pxi":284
  *             if last_error is None:
  *                 last_error = entries[-1]
  *         _BaseErrorLog.__init__(self, first_error, last_error)             # <<<<<<<<<<<<<<
  *         self._entries = entries
  * 
  */
-  __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_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 284, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -41258,7 +41373,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_first_error, __pyx_v_last_error};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 280, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 284, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
@@ -41266,13 +41381,13 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_first_error, __pyx_v_last_error};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 280, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 284, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
   #endif
   {
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 280, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 284, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -41286,21 +41401,21 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
     __Pyx_INCREF(__pyx_v_last_error);
     __Pyx_GIVEREF(__pyx_v_last_error);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_last_error);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 280, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 284, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":281
+  /* "src/lxml/xmlerror.pxi":285
  *                 last_error = entries[-1]
  *         _BaseErrorLog.__init__(self, first_error, last_error)
  *         self._entries = entries             # <<<<<<<<<<<<<<
  * 
  *     cpdef copy(self):
  */
-  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)
+  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, 285, __pyx_L1_error)
   __pyx_t_3 = __pyx_v_entries;
   __Pyx_INCREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
@@ -41309,7 +41424,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   __pyx_v_self->_entries = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":274
+  /* "src/lxml/xmlerror.pxi":278
  *     cdef list _entries
  *     cdef int _offset
  *     def __init__(self, entries, first_error, last_error):             # <<<<<<<<<<<<<<
@@ -41334,7 +41449,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog___init__(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":283
+/* "src/lxml/xmlerror.pxi":287
  *         self._entries = entries
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -41357,12 +41472,12 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 283, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_13_ListErrorLog_3copy)) {
         __Pyx_XDECREF(__pyx_r);
@@ -41379,7 +41494,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 283, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -41387,7 +41502,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -41395,19 +41510,19 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":287
+  /* "src/lxml/xmlerror.pxi":291
  *         entries.
  *         """
  *         cdef _ListErrorLog log = _ListErrorLog(             # <<<<<<<<<<<<<<
  *             self._entries, self._first_error, self.last_error)
  *         log._offset = self._offset
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 291, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_self->_entries);
   __Pyx_GIVEREF(__pyx_v_self->_entries);
@@ -41418,13 +41533,13 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
   __Pyx_INCREF(__pyx_v_self->__pyx_base.last_error);
   __Pyx_GIVEREF(__pyx_v_self->__pyx_base.last_error);
   PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_v_self->__pyx_base.last_error);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 287, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 291, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_log = ((struct __pyx_obj_4lxml_5etree__ListErrorLog *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":289
+  /* "src/lxml/xmlerror.pxi":293
  *         cdef _ListErrorLog log = _ListErrorLog(
  *             self._entries, self._first_error, self.last_error)
  *         log._offset = self._offset             # <<<<<<<<<<<<<<
@@ -41434,7 +41549,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
   __pyx_t_5 = __pyx_v_self->_offset;
   __pyx_v_log->_offset = __pyx_t_5;
 
-  /* "src/lxml/xmlerror.pxi":290
+  /* "src/lxml/xmlerror.pxi":294
  *             self._entries, self._first_error, self.last_error)
  *         log._offset = self._offset
  *         return log             # <<<<<<<<<<<<<<
@@ -41446,7 +41561,7 @@ static PyObject *__pyx_f_4lxml_5etree_13_ListErrorLog_copy(struct __pyx_obj_4lxm
   __pyx_r = ((PyObject *)__pyx_v_log);
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":283
+  /* "src/lxml/xmlerror.pxi":287
  *         self._entries = entries
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -41490,7 +41605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_2copy(struct __pyx_obj_4l
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("copy", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_13_ListErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -41507,7 +41622,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_2copy(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":292
+/* "src/lxml/xmlerror.pxi":296
  *         return log
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -41541,7 +41656,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "src/lxml/xmlerror.pxi":293
+  /* "src/lxml/xmlerror.pxi":297
  * 
  *     def __iter__(self):
  *         entries = self._entries             # <<<<<<<<<<<<<<
@@ -41553,7 +41668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   __pyx_v_entries = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":294
+  /* "src/lxml/xmlerror.pxi":298
  *     def __iter__(self):
  *         entries = self._entries
  *         if self._offset:             # <<<<<<<<<<<<<<
@@ -41563,14 +41678,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   __pyx_t_2 = (__pyx_v_self->_offset != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":295
+    /* "src/lxml/xmlerror.pxi":299
  *         entries = self._entries
  *         if self._offset:
  *             entries = islice(entries, self._offset)             # <<<<<<<<<<<<<<
  *         return iter(entries)
  * 
  */
-    __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_self->_offset); if (unlikely(!__pyx_t_3)) __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, 299, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_4lxml_5etree_islice);
     __pyx_t_4 = __pyx_v_4lxml_5etree_islice; __pyx_t_5 = NULL;
@@ -41588,7 +41703,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_4)) {
       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_entries, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 295, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 299, __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;
@@ -41597,14 +41712,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
       PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_entries, __pyx_t_3};
-      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 295, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 299, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else
     #endif
     {
-      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 295, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 299, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_5) {
         __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -41615,7 +41730,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
       __Pyx_GIVEREF(__pyx_t_3);
       PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_t_3);
       __pyx_t_3 = 0;
-      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 295, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 299, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
@@ -41623,7 +41738,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
     __Pyx_DECREF_SET(__pyx_v_entries, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "src/lxml/xmlerror.pxi":294
+    /* "src/lxml/xmlerror.pxi":298
  *     def __iter__(self):
  *         entries = self._entries
  *         if self._offset:             # <<<<<<<<<<<<<<
@@ -41632,7 +41747,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":296
+  /* "src/lxml/xmlerror.pxi":300
  *         if self._offset:
  *             entries = islice(entries, self._offset)
  *         return iter(entries)             # <<<<<<<<<<<<<<
@@ -41640,13 +41755,13 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
  *     def __repr__(self):
  */
   __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_t_1 = PyObject_GetIter(__pyx_v_entries); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":292
+  /* "src/lxml/xmlerror.pxi":296
  *         return log
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -41670,7 +41785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_4__iter__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":298
+/* "src/lxml/xmlerror.pxi":302
  *         return iter(entries)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -41702,7 +41817,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "src/lxml/xmlerror.pxi":299
+  /* "src/lxml/xmlerror.pxi":303
  * 
  *     def __repr__(self):
  *         return u'\n'.join([repr(entry) for entry in self])             # <<<<<<<<<<<<<<
@@ -41710,32 +41825,32 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
  *     def __getitem__(self, index):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 299, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 303, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
     __pyx_t_2 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 299, __pyx_L1_error)
+    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 299, __pyx_L1_error)
+    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 303, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_4)) {
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 299, __pyx_L1_error)
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 303, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 299, __pyx_L1_error)
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 303, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       } else {
         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 299, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 303, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 299, __pyx_L1_error)
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 303, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       }
@@ -41745,7 +41860,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(1, 299, __pyx_L1_error)
+          else __PYX_ERR(1, 303, __pyx_L1_error)
         }
         break;
       }
@@ -41753,20 +41868,20 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
     }
     __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_5 = PyObject_Repr(__pyx_v_entry); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 299, __pyx_L1_error)
+    __pyx_t_5 = PyObject_Repr(__pyx_v_entry); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 303, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 299, __pyx_L1_error)
+    if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_t_5))) __PYX_ERR(1, 303, __pyx_L1_error)
     __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__18, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 299, __pyx_L1_error)
+  __pyx_t_2 = PyUnicode_Join(__pyx_kp_u__18, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 303, __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/xmlerror.pxi":298
+  /* "src/lxml/xmlerror.pxi":302
  *         return iter(entries)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -41788,7 +41903,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_6__repr__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":301
+/* "src/lxml/xmlerror.pxi":305
  *         return u'\n'.join([repr(entry) for entry in self])
  * 
  *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
@@ -41818,7 +41933,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
   __Pyx_RefNannySetupContext("__getitem__", 0);
   __Pyx_INCREF(__pyx_v_index);
 
-  /* "src/lxml/xmlerror.pxi":302
+  /* "src/lxml/xmlerror.pxi":306
  * 
  *     def __getitem__(self, index):
  *         if self._offset:             # <<<<<<<<<<<<<<
@@ -41828,22 +41943,22 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
   __pyx_t_1 = (__pyx_v_self->_offset != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":303
+    /* "src/lxml/xmlerror.pxi":307
  *     def __getitem__(self, index):
  *         if self._offset:
  *             index += self._offset             # <<<<<<<<<<<<<<
  *         return self._entries[index]
  * 
  */
-    __pyx_t_2 = __Pyx_PyInt_From_int(__pyx_v_self->_offset); if (unlikely(!__pyx_t_2)) __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, 307, __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)
+    __pyx_t_3 = PyNumber_InPlaceAdd(__pyx_v_index, __pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 307, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_index, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/xmlerror.pxi":302
+    /* "src/lxml/xmlerror.pxi":306
  * 
  *     def __getitem__(self, index):
  *         if self._offset:             # <<<<<<<<<<<<<<
@@ -41852,7 +41967,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":304
+  /* "src/lxml/xmlerror.pxi":308
  *         if self._offset:
  *             index += self._offset
  *         return self._entries[index]             # <<<<<<<<<<<<<<
@@ -41862,15 +41977,15 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->_entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 304, __pyx_L1_error)
+    __PYX_ERR(1, 308, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_self->_entries, __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 304, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetItem(__pyx_v_self->_entries, __pyx_v_index); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 308, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":301
+  /* "src/lxml/xmlerror.pxi":305
  *         return u'\n'.join([repr(entry) for entry in self])
  * 
  *     def __getitem__(self, index):             # <<<<<<<<<<<<<<
@@ -41891,7 +42006,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_8__getitem__(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":306
+/* "src/lxml/xmlerror.pxi":310
  *         return self._entries[index]
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -41919,7 +42034,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_o
   Py_ssize_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "src/lxml/xmlerror.pxi":307
+  /* "src/lxml/xmlerror.pxi":311
  * 
  *     def __len__(self):
  *         return len(self._entries) - self._offset             # <<<<<<<<<<<<<<
@@ -41930,14 +42045,14 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_o
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 307, __pyx_L1_error)
+    __PYX_ERR(1, 311, __pyx_L1_error)
   }
-  __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 307, __pyx_L1_error)
+  __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 311, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = (__pyx_t_2 - __pyx_v_self->_offset);
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":306
+  /* "src/lxml/xmlerror.pxi":310
  *         return self._entries[index]
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -41955,7 +42070,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_13_ListErrorLog_10__len__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":309
+/* "src/lxml/xmlerror.pxi":313
  *         return len(self._entries) - self._offset
  * 
  *     def __contains__(self, error_type):             # <<<<<<<<<<<<<<
@@ -41989,7 +42104,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__contains__", 0);
 
-  /* "src/lxml/xmlerror.pxi":311
+  /* "src/lxml/xmlerror.pxi":315
  *     def __contains__(self, error_type):
  *         cdef Py_ssize_t i
  *         for i, entry in enumerate(self._entries):             # <<<<<<<<<<<<<<
@@ -42001,9 +42116,9 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   for (;;) {
     if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 311, __pyx_L1_error)
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_4); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 315, __pyx_L1_error)
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 311, __pyx_L1_error)
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 315, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_entry, __pyx_t_4);
@@ -42011,7 +42126,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
     __pyx_v_i = __pyx_t_1;
     __pyx_t_1 = (__pyx_t_1 + 1);
 
-    /* "src/lxml/xmlerror.pxi":312
+    /* "src/lxml/xmlerror.pxi":316
  *         cdef Py_ssize_t i
  *         for i, entry in enumerate(self._entries):
  *             if i < self._offset:             # <<<<<<<<<<<<<<
@@ -42021,7 +42136,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
     __pyx_t_5 = ((__pyx_v_i < __pyx_v_self->_offset) != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/xmlerror.pxi":313
+      /* "src/lxml/xmlerror.pxi":317
  *         for i, entry in enumerate(self._entries):
  *             if i < self._offset:
  *                 continue             # <<<<<<<<<<<<<<
@@ -42030,7 +42145,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  */
       goto __pyx_L3_continue;
 
-      /* "src/lxml/xmlerror.pxi":312
+      /* "src/lxml/xmlerror.pxi":316
  *         cdef Py_ssize_t i
  *         for i, entry in enumerate(self._entries):
  *             if i < self._offset:             # <<<<<<<<<<<<<<
@@ -42039,22 +42154,22 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":314
+    /* "src/lxml/xmlerror.pxi":318
  *             if i < self._offset:
  *                 continue
  *             if entry.type == error_type:             # <<<<<<<<<<<<<<
  *                 return True
  *         return False
  */
-    __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_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_entry, __pyx_n_s_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 318, __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)
+    __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, 318, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 314, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 318, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (__pyx_t_5) {
 
-      /* "src/lxml/xmlerror.pxi":315
+      /* "src/lxml/xmlerror.pxi":319
  *                 continue
  *             if entry.type == error_type:
  *                 return True             # <<<<<<<<<<<<<<
@@ -42065,7 +42180,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       goto __pyx_L0;
 
-      /* "src/lxml/xmlerror.pxi":314
+      /* "src/lxml/xmlerror.pxi":318
  *             if i < self._offset:
  *                 continue
  *             if entry.type == error_type:             # <<<<<<<<<<<<<<
@@ -42074,7 +42189,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":311
+    /* "src/lxml/xmlerror.pxi":315
  *     def __contains__(self, error_type):
  *         cdef Py_ssize_t i
  *         for i, entry in enumerate(self._entries):             # <<<<<<<<<<<<<<
@@ -42085,7 +42200,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":316
+  /* "src/lxml/xmlerror.pxi":320
  *             if entry.type == error_type:
  *                 return True
  *         return False             # <<<<<<<<<<<<<<
@@ -42095,7 +42210,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":309
+  /* "src/lxml/xmlerror.pxi":313
  *         return len(self._entries) - self._offset
  * 
  *     def __contains__(self, error_type):             # <<<<<<<<<<<<<<
@@ -42116,7 +42231,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_12__contains__(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":318
+/* "src/lxml/xmlerror.pxi":322
  *         return False
  * 
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -42144,7 +42259,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_
   Py_ssize_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
 
-  /* "src/lxml/xmlerror.pxi":319
+  /* "src/lxml/xmlerror.pxi":323
  * 
  *     def __nonzero__(self):
  *         return len(self._entries) > self._offset             # <<<<<<<<<<<<<<
@@ -42155,14 +42270,14 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 319, __pyx_L1_error)
+    __PYX_ERR(1, 323, __pyx_L1_error)
   }
-  __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 319, __pyx_L1_error)
+  __pyx_t_2 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_ssize_t)-1))) __PYX_ERR(1, 323, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = (__pyx_t_2 > __pyx_v_self->_offset);
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":318
+  /* "src/lxml/xmlerror.pxi":322
  *         return False
  * 
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -42180,7 +42295,7 @@ static int __pyx_pf_4lxml_5etree_13_ListErrorLog_14__nonzero__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":321
+/* "src/lxml/xmlerror.pxi":325
  *         return len(self._entries) > self._offset
  * 
  *     def filter_domains(self, domains):             # <<<<<<<<<<<<<<
@@ -42219,7 +42334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   __Pyx_RefNannySetupContext("filter_domains", 0);
   __Pyx_INCREF(__pyx_v_domains);
 
-  /* "src/lxml/xmlerror.pxi":326
+  /* "src/lxml/xmlerror.pxi":330
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(domains, (int, long)):             # <<<<<<<<<<<<<<
@@ -42240,14 +42355,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":327
+    /* "src/lxml/xmlerror.pxi":331
  *         cdef _LogEntry entry
  *         if isinstance(domains, (int, long)):
  *             domains = (domains,)             # <<<<<<<<<<<<<<
  *         filtered = [entry for entry in self if entry.domain in domains]
  *         return _ListErrorLog(filtered, None, None)
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 327, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 331, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_domains);
     __Pyx_GIVEREF(__pyx_v_domains);
@@ -42255,7 +42370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
     __Pyx_DECREF_SET(__pyx_v_domains, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/xmlerror.pxi":326
+    /* "src/lxml/xmlerror.pxi":330
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(domains, (int, long)):             # <<<<<<<<<<<<<<
@@ -42264,39 +42379,39 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":328
+  /* "src/lxml/xmlerror.pxi":332
  *         if isinstance(domains, (int, long)):
  *             domains = (domains,)
  *         filtered = [entry for entry in self if entry.domain in domains]             # <<<<<<<<<<<<<<
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 328, __pyx_L1_error)
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 332, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
     __pyx_t_5 = ((PyObject *)__pyx_v_self); __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_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 328, __pyx_L1_error)
+    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 332, __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(1, 328, __pyx_L1_error)
+    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 332, __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(1, 328, __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(1, 332, __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(1, 328, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 332, __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(1, 328, __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(1, 332, __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(1, 328, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 332, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         #endif
       }
@@ -42306,29 +42421,29 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(1, 328, __pyx_L1_error)
+          else __PYX_ERR(1, 332, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_8);
     }
-    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 328, __pyx_L1_error)
+    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 332, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_entry, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_8));
     __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 328, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 332, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_domains, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 328, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_domains, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 332, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 328, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 332, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_filtered = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/xmlerror.pxi":329
+  /* "src/lxml/xmlerror.pxi":333
  *             domains = (domains,)
  *         filtered = [entry for entry in self if entry.domain in domains]
  *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
@@ -42336,7 +42451,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
  *     def filter_types(self, types):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 329, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_filtered);
   __Pyx_GIVEREF(__pyx_v_filtered);
@@ -42347,14 +42462,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 329, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 333, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":321
+  /* "src/lxml/xmlerror.pxi":325
  *         return len(self._entries) > self._offset
  * 
  *     def filter_domains(self, domains):             # <<<<<<<<<<<<<<
@@ -42378,7 +42493,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_16filter_domains(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":331
+/* "src/lxml/xmlerror.pxi":335
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_types(self, types):             # <<<<<<<<<<<<<<
@@ -42417,7 +42532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   __Pyx_RefNannySetupContext("filter_types", 0);
   __Pyx_INCREF(__pyx_v_types);
 
-  /* "src/lxml/xmlerror.pxi":338
+  /* "src/lxml/xmlerror.pxi":342
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(types, (int, long)):             # <<<<<<<<<<<<<<
@@ -42438,14 +42553,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":339
+    /* "src/lxml/xmlerror.pxi":343
  *         cdef _LogEntry entry
  *         if isinstance(types, (int, long)):
  *             types = (types,)             # <<<<<<<<<<<<<<
  *         filtered = [entry for entry in self if entry.type in types]
  *         return _ListErrorLog(filtered, None, None)
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 339, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 343, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_types);
     __Pyx_GIVEREF(__pyx_v_types);
@@ -42453,7 +42568,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
     __Pyx_DECREF_SET(__pyx_v_types, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/xmlerror.pxi":338
+    /* "src/lxml/xmlerror.pxi":342
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(types, (int, long)):             # <<<<<<<<<<<<<<
@@ -42462,39 +42577,39 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":340
+  /* "src/lxml/xmlerror.pxi":344
  *         if isinstance(types, (int, long)):
  *             types = (types,)
  *         filtered = [entry for entry in self if entry.type in types]             # <<<<<<<<<<<<<<
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 340, __pyx_L1_error)
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 344, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
     __pyx_t_5 = ((PyObject *)__pyx_v_self); __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_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 340, __pyx_L1_error)
+    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 344, __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(1, 340, __pyx_L1_error)
+    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 344, __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(1, 340, __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(1, 344, __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(1, 340, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 344, __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(1, 340, __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(1, 344, __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(1, 340, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 344, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         #endif
       }
@@ -42504,29 +42619,29 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(1, 340, __pyx_L1_error)
+          else __PYX_ERR(1, 344, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_8);
     }
-    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 340, __pyx_L1_error)
+    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 344, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_entry, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_8));
     __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->type); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 340, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->type); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 344, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_types, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 340, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_types, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 344, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 340, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 344, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_filtered = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/xmlerror.pxi":341
+  /* "src/lxml/xmlerror.pxi":345
  *             types = (types,)
  *         filtered = [entry for entry in self if entry.type in types]
  *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
@@ -42534,7 +42649,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
  *     def filter_levels(self, levels):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 341, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 345, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_filtered);
   __Pyx_GIVEREF(__pyx_v_filtered);
@@ -42545,14 +42660,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 341, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 345, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":331
+  /* "src/lxml/xmlerror.pxi":335
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_types(self, types):             # <<<<<<<<<<<<<<
@@ -42576,7 +42691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_18filter_types(struct __p
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":343
+/* "src/lxml/xmlerror.pxi":347
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_levels(self, levels):             # <<<<<<<<<<<<<<
@@ -42615,7 +42730,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   __Pyx_RefNannySetupContext("filter_levels", 0);
   __Pyx_INCREF(__pyx_v_levels);
 
-  /* "src/lxml/xmlerror.pxi":350
+  /* "src/lxml/xmlerror.pxi":354
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(levels, (int, long)):             # <<<<<<<<<<<<<<
@@ -42636,14 +42751,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "src/lxml/xmlerror.pxi":351
+    /* "src/lxml/xmlerror.pxi":355
  *         cdef _LogEntry entry
  *         if isinstance(levels, (int, long)):
  *             levels = (levels,)             # <<<<<<<<<<<<<<
  *         filtered = [entry for entry in self if entry.level in levels]
  *         return _ListErrorLog(filtered, None, None)
  */
-    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 351, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 355, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_INCREF(__pyx_v_levels);
     __Pyx_GIVEREF(__pyx_v_levels);
@@ -42651,7 +42766,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
     __Pyx_DECREF_SET(__pyx_v_levels, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "src/lxml/xmlerror.pxi":350
+    /* "src/lxml/xmlerror.pxi":354
  *         """
  *         cdef _LogEntry entry
  *         if isinstance(levels, (int, long)):             # <<<<<<<<<<<<<<
@@ -42660,39 +42775,39 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":352
+  /* "src/lxml/xmlerror.pxi":356
  *         if isinstance(levels, (int, long)):
  *             levels = (levels,)
  *         filtered = [entry for entry in self if entry.level in levels]             # <<<<<<<<<<<<<<
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 352, __pyx_L1_error)
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 356, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
     __pyx_t_5 = ((PyObject *)__pyx_v_self); __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_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 352, __pyx_L1_error)
+    __pyx_t_6 = -1; __pyx_t_5 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 356, __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(1, 352, __pyx_L1_error)
+    __pyx_t_7 = Py_TYPE(__pyx_t_5)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 356, __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(1, 352, __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(1, 356, __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(1, 352, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 356, __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(1, 352, __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(1, 356, __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(1, 352, __pyx_L1_error)
+        __pyx_t_8 = PySequence_ITEM(__pyx_t_5, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 356, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_8);
         #endif
       }
@@ -42702,29 +42817,29 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(1, 352, __pyx_L1_error)
+          else __PYX_ERR(1, 356, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_8);
     }
-    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 352, __pyx_L1_error)
+    if (!(likely(((__pyx_t_8) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_8, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 356, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_entry, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_8));
     __pyx_t_8 = 0;
-    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->level); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 352, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyInt_From_int(__pyx_v_entry->level); if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 356, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_levels, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 352, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_8, __pyx_v_levels, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(1, 356, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 352, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_4, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 356, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_v_filtered = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "src/lxml/xmlerror.pxi":353
+  /* "src/lxml/xmlerror.pxi":357
  *             levels = (levels,)
  *         filtered = [entry for entry in self if entry.level in levels]
  *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
@@ -42732,7 +42847,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
  *     def filter_from_level(self, level):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 353, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 357, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v_filtered);
   __Pyx_GIVEREF(__pyx_v_filtered);
@@ -42743,14 +42858,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_4, 2, Py_None);
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 353, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_4, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 357, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_5;
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":343
+  /* "src/lxml/xmlerror.pxi":347
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_levels(self, levels):             # <<<<<<<<<<<<<<
@@ -42774,7 +42889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_20filter_levels(struct __
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":355
+/* "src/lxml/xmlerror.pxi":359
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_level(self, level):             # <<<<<<<<<<<<<<
@@ -42811,39 +42926,39 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("filter_from_level", 0);
 
-  /* "src/lxml/xmlerror.pxi":361
+  /* "src/lxml/xmlerror.pxi":365
  *         """
  *         cdef _LogEntry entry
  *         filtered = [entry for entry in self if entry.level >= level]             # <<<<<<<<<<<<<<
  *         return _ListErrorLog(filtered, None, None)
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 361, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 365, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(((PyObject *)__pyx_v_self))) || PyTuple_CheckExact(((PyObject *)__pyx_v_self))) {
     __pyx_t_2 = ((PyObject *)__pyx_v_self); __Pyx_INCREF(__pyx_t_2); __pyx_t_3 = 0;
     __pyx_t_4 = NULL;
   } else {
-    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 361, __pyx_L1_error)
+    __pyx_t_3 = -1; __pyx_t_2 = PyObject_GetIter(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 365, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 361, __pyx_L1_error)
+    __pyx_t_4 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 365, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_4)) {
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_3 >= PyList_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 361, __pyx_L1_error)
+        __pyx_t_5 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 365, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 361, __pyx_L1_error)
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 365, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       } else {
         if (__pyx_t_3 >= PyTuple_GET_SIZE(__pyx_t_2)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 361, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_3); __Pyx_INCREF(__pyx_t_5); __pyx_t_3++; if (unlikely(0 < 0)) __PYX_ERR(1, 365, __pyx_L1_error)
         #else
-        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 361, __pyx_L1_error)
+        __pyx_t_5 = PySequence_ITEM(__pyx_t_2, __pyx_t_3); __pyx_t_3++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 365, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         #endif
       }
@@ -42853,30 +42968,30 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(1, 361, __pyx_L1_error)
+          else __PYX_ERR(1, 365, __pyx_L1_error)
         }
         break;
       }
       __Pyx_GOTREF(__pyx_t_5);
     }
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 361, __pyx_L1_error)
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__LogEntry))))) __PYX_ERR(1, 365, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_entry, ((struct __pyx_obj_4lxml_5etree__LogEntry *)__pyx_t_5));
     __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_entry->level); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 361, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_entry->level); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 365, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
-    __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_v_level, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 361, __pyx_L1_error)
+    __pyx_t_6 = PyObject_RichCompare(__pyx_t_5, __pyx_v_level, Py_GE); __Pyx_XGOTREF(__pyx_t_6); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 365, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 361, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(1, 365, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     if (__pyx_t_7) {
-      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 361, __pyx_L1_error)
+      if (unlikely(__Pyx_ListComp_Append(__pyx_t_1, (PyObject*)__pyx_v_entry))) __PYX_ERR(1, 365, __pyx_L1_error)
     }
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_filtered = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":362
+  /* "src/lxml/xmlerror.pxi":366
  *         cdef _LogEntry entry
  *         filtered = [entry for entry in self if entry.level >= level]
  *         return _ListErrorLog(filtered, None, None)             # <<<<<<<<<<<<<<
@@ -42884,7 +42999,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
  *     def filter_from_fatals(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 362, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_filtered);
   __Pyx_GIVEREF(__pyx_v_filtered);
@@ -42895,14 +43010,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   __Pyx_INCREF(Py_None);
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_1, 2, Py_None);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 362, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 366, __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/xmlerror.pxi":355
+  /* "src/lxml/xmlerror.pxi":359
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_level(self, level):             # <<<<<<<<<<<<<<
@@ -42926,7 +43041,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_22filter_from_level(struc
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":364
+/* "src/lxml/xmlerror.pxi":368
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_fatals(self):             # <<<<<<<<<<<<<<
@@ -42958,7 +43073,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("filter_from_fatals", 0);
 
-  /* "src/lxml/xmlerror.pxi":369
+  /* "src/lxml/xmlerror.pxi":373
  *         Convenience method to get all fatal error messages.
  *         """
  *         return self.filter_from_level(ErrorLevels.FATAL)             # <<<<<<<<<<<<<<
@@ -42966,11 +43081,11 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
  *     def filter_from_errors(self):
  */
   __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 369, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 369, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -42986,14 +43101,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 369, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 373, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":364
+  /* "src/lxml/xmlerror.pxi":368
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_fatals(self):             # <<<<<<<<<<<<<<
@@ -43015,7 +43130,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_24filter_from_fatals(stru
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":371
+/* "src/lxml/xmlerror.pxi":375
  *         return self.filter_from_level(ErrorLevels.FATAL)
  * 
  *     def filter_from_errors(self):             # <<<<<<<<<<<<<<
@@ -43047,7 +43162,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("filter_from_errors", 0);
 
-  /* "src/lxml/xmlerror.pxi":376
+  /* "src/lxml/xmlerror.pxi":380
  *         Convenience method to get all error messages or worse.
  *         """
  *         return self.filter_from_level(ErrorLevels.ERROR)             # <<<<<<<<<<<<<<
@@ -43055,11 +43170,11 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
  *     def filter_from_warnings(self):
  */
   __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 376, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 376, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -43075,14 +43190,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 376, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 380, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":371
+  /* "src/lxml/xmlerror.pxi":375
  *         return self.filter_from_level(ErrorLevels.FATAL)
  * 
  *     def filter_from_errors(self):             # <<<<<<<<<<<<<<
@@ -43104,7 +43219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_26filter_from_errors(stru
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":378
+/* "src/lxml/xmlerror.pxi":382
  *         return self.filter_from_level(ErrorLevels.ERROR)
  * 
  *     def filter_from_warnings(self):             # <<<<<<<<<<<<<<
@@ -43136,7 +43251,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("filter_from_warnings", 0);
 
-  /* "src/lxml/xmlerror.pxi":383
+  /* "src/lxml/xmlerror.pxi":387
  *         Convenience method to get all warnings or worse.
  *         """
  *         return self.filter_from_level(ErrorLevels.WARNING)             # <<<<<<<<<<<<<<
@@ -43144,11 +43259,11 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
  * 
  */
   __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_filter_from_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 387, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 383, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 387, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 383, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 387, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -43164,14 +43279,14 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_4);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 383, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 387, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":378
+  /* "src/lxml/xmlerror.pxi":382
  *         return self.filter_from_level(ErrorLevels.ERROR)
  * 
  *     def filter_from_warnings(self):             # <<<<<<<<<<<<<<
@@ -43193,7 +43308,7 @@ static PyObject *__pyx_pf_4lxml_5etree_13_ListErrorLog_28filter_from_warnings(st
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":400
+/* "src/lxml/xmlerror.pxi":404
  *     cdef _BaseErrorLog old_xslt_error_log
  * 
  *     cdef int push_error_log(self, _BaseErrorLog log) except -1:             # <<<<<<<<<<<<<<
@@ -43207,7 +43322,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("push_error_log", 0);
 
-  /* "src/lxml/xmlerror.pxi":401
+  /* "src/lxml/xmlerror.pxi":405
  * 
  *     cdef int push_error_log(self, _BaseErrorLog log) except -1:
  *         self.old_error_func = xmlerror.xmlStructuredError             # <<<<<<<<<<<<<<
@@ -43216,7 +43331,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   __pyx_v_self->old_error_func = xmlStructuredError;
 
-  /* "src/lxml/xmlerror.pxi":402
+  /* "src/lxml/xmlerror.pxi":406
  *     cdef int push_error_log(self, _BaseErrorLog log) except -1:
  *         self.old_error_func = xmlerror.xmlStructuredError
  *         self.old_error_context = xmlerror.xmlStructuredErrorContext             # <<<<<<<<<<<<<<
@@ -43225,7 +43340,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   __pyx_v_self->old_error_context = xmlStructuredErrorContext;
 
-  /* "src/lxml/xmlerror.pxi":403
+  /* "src/lxml/xmlerror.pxi":407
  *         self.old_error_func = xmlerror.xmlStructuredError
  *         self.old_error_context = xmlerror.xmlStructuredErrorContext
  *         xmlerror.xmlSetStructuredErrorFunc(             # <<<<<<<<<<<<<<
@@ -43234,7 +43349,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   xmlSetStructuredErrorFunc(((void *)__pyx_v_log), ((xmlStructuredErrorFunc)__pyx_f_4lxml_5etree__receiveError));
 
-  /* "src/lxml/xmlerror.pxi":407
+  /* "src/lxml/xmlerror.pxi":411
  * 
  *         # xslt.xsltSetGenericErrorFunc() is not thread-local => keep error log in TLS
  *         self.old_xslt_error_func = xslt.xsltGenericError             # <<<<<<<<<<<<<<
@@ -43243,7 +43358,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   __pyx_v_self->old_xslt_error_func = xsltGenericError;
 
-  /* "src/lxml/xmlerror.pxi":408
+  /* "src/lxml/xmlerror.pxi":412
  *         # xslt.xsltSetGenericErrorFunc() is not thread-local => keep error log in TLS
  *         self.old_xslt_error_func = xslt.xsltGenericError
  *         self.old_xslt_error_context = xslt.xsltGenericErrorContext             # <<<<<<<<<<<<<<
@@ -43252,14 +43367,14 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   __pyx_v_self->old_xslt_error_context = xsltGenericErrorContext;
 
-  /* "src/lxml/xmlerror.pxi":409
+  /* "src/lxml/xmlerror.pxi":413
  *         self.old_xslt_error_func = xslt.xsltGenericError
  *         self.old_xslt_error_context = xslt.xsltGenericErrorContext
  *         self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)             # <<<<<<<<<<<<<<
  *         _setThreadErrorLog(XSLT_ERROR_LOG, log)
  *         xslt.xsltSetGenericErrorFunc(
  */
-  __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_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_XSLTErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 413, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->old_xslt_error_log);
@@ -43267,18 +43382,18 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
   __pyx_v_self->old_xslt_error_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":410
+  /* "src/lxml/xmlerror.pxi":414
  *         self.old_xslt_error_context = xslt.xsltGenericErrorContext
  *         self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, log)             # <<<<<<<<<<<<<<
  *         xslt.xsltSetGenericErrorFunc(
  *             NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  */
-  __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_t_1 = __pyx_f_4lxml_5etree__setThreadErrorLog(__pyx_n_u_XSLTErrorLog, __pyx_v_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 414, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":411
+  /* "src/lxml/xmlerror.pxi":415
  *         self.old_xslt_error_log = _getThreadErrorLog(XSLT_ERROR_LOG)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, log)
  *         xslt.xsltSetGenericErrorFunc(             # <<<<<<<<<<<<<<
@@ -43287,7 +43402,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
  */
   xsltSetGenericErrorFunc(NULL, ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError));
 
-  /* "src/lxml/xmlerror.pxi":413
+  /* "src/lxml/xmlerror.pxi":417
  *         xslt.xsltSetGenericErrorFunc(
  *             NULL, <xmlerror.xmlGenericErrorFunc>_receiveXSLTError)
  *         return 0             # <<<<<<<<<<<<<<
@@ -43297,7 +43412,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":400
+  /* "src/lxml/xmlerror.pxi":404
  *     cdef _BaseErrorLog old_xslt_error_log
  * 
  *     cdef int push_error_log(self, _BaseErrorLog log) except -1:             # <<<<<<<<<<<<<<
@@ -43315,7 +43430,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":415
+/* "src/lxml/xmlerror.pxi":419
  *         return 0
  * 
  *     cdef int pop_error_log(self) except -1:             # <<<<<<<<<<<<<<
@@ -43330,7 +43445,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("pop_error_log", 0);
 
-  /* "src/lxml/xmlerror.pxi":416
+  /* "src/lxml/xmlerror.pxi":420
  * 
  *     cdef int pop_error_log(self) except -1:
  *         xmlerror.xmlSetStructuredErrorFunc(             # <<<<<<<<<<<<<<
@@ -43339,7 +43454,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  */
   xmlSetStructuredErrorFunc(__pyx_v_self->old_error_context, __pyx_v_self->old_error_func);
 
-  /* "src/lxml/xmlerror.pxi":418
+  /* "src/lxml/xmlerror.pxi":422
  *         xmlerror.xmlSetStructuredErrorFunc(
  *             self.old_error_context, self.old_error_func)
  *         xslt.xsltSetGenericErrorFunc(             # <<<<<<<<<<<<<<
@@ -43348,7 +43463,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  */
   xsltSetGenericErrorFunc(__pyx_v_self->old_xslt_error_context, __pyx_v_self->old_xslt_error_func);
 
-  /* "src/lxml/xmlerror.pxi":420
+  /* "src/lxml/xmlerror.pxi":424
  *         xslt.xsltSetGenericErrorFunc(
  *             self.old_xslt_error_context, self.old_xslt_error_func)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, self.old_xslt_error_log)             # <<<<<<<<<<<<<<
@@ -43357,12 +43472,12 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
  */
   __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)
+  __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, 424, __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/xmlerror.pxi":421
+  /* "src/lxml/xmlerror.pxi":425
  *             self.old_xslt_error_context, self.old_xslt_error_func)
  *         _setThreadErrorLog(XSLT_ERROR_LOG, self.old_xslt_error_log)
  *         self.old_xslt_error_log= None             # <<<<<<<<<<<<<<
@@ -43375,7 +43490,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
   __Pyx_DECREF(((PyObject *)__pyx_v_self->old_xslt_error_log));
   __pyx_v_self->old_xslt_error_log = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)Py_None);
 
-  /* "src/lxml/xmlerror.pxi":422
+  /* "src/lxml/xmlerror.pxi":426
  *         _setThreadErrorLog(XSLT_ERROR_LOG, self.old_xslt_error_log)
  *         self.old_xslt_error_log= None
  *         return 0             # <<<<<<<<<<<<<<
@@ -43385,7 +43500,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":415
+  /* "src/lxml/xmlerror.pxi":419
  *         return 0
  * 
  *     cdef int pop_error_log(self) except -1:             # <<<<<<<<<<<<<<
@@ -43404,7 +43519,7 @@ static int __pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":427
+/* "src/lxml/xmlerror.pxi":431
  * cdef class _ErrorLog(_ListErrorLog):
  *     cdef list _logContexts
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -43434,14 +43549,14 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "src/lxml/xmlerror.pxi":428
+  /* "src/lxml/xmlerror.pxi":432
  *     cdef list _logContexts
  *     def __cinit__(self):
  *         self._logContexts = []             # <<<<<<<<<<<<<<
  * 
  *     def __init__(self):
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 428, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 432, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_logContexts);
@@ -43449,7 +43564,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   __pyx_v_self->_logContexts = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":427
+  /* "src/lxml/xmlerror.pxi":431
  * cdef class _ErrorLog(_ListErrorLog):
  *     cdef list _logContexts
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -43469,7 +43584,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog___cinit__(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":430
+/* "src/lxml/xmlerror.pxi":434
  *         self._logContexts = []
  * 
  *     def __init__(self):             # <<<<<<<<<<<<<<
@@ -43504,16 +43619,16 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":431
+  /* "src/lxml/xmlerror.pxi":435
  * 
  *     def __init__(self):
  *         _ListErrorLog.__init__(self, [], None, None)             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 435, __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)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 435, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -43530,7 +43645,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_v_self), __pyx_t_3, Py_None, Py_None};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 435, __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;
@@ -43539,14 +43654,14 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[5] = {__pyx_t_4, ((PyObject *)__pyx_v_self), __pyx_t_3, Py_None, Py_None};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 4+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 435, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 431, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(4+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -43563,14 +43678,14 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
     __Pyx_GIVEREF(Py_None);
     PyTuple_SET_ITEM(__pyx_t_6, 3+__pyx_t_5, Py_None);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 431, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 435, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":430
+  /* "src/lxml/xmlerror.pxi":434
  *         self._logContexts = []
  * 
  *     def __init__(self):             # <<<<<<<<<<<<<<
@@ -43594,7 +43709,7 @@ static int __pyx_pf_4lxml_5etree_9_ErrorLog_2__init__(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":434
+/* "src/lxml/xmlerror.pxi":438
  * 
  *     @cython.final
  *     cdef int __enter__(self) except -1:             # <<<<<<<<<<<<<<
@@ -43608,18 +43723,18 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__enter__", 0);
 
-  /* "src/lxml/xmlerror.pxi":435
+  /* "src/lxml/xmlerror.pxi":439
  *     @cython.final
  *     cdef int __enter__(self) except -1:
  *         return self.connect()             # <<<<<<<<<<<<<<
  * 
  *     def __exit__(self, *args):
  */
-  __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_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_connect(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 439, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":434
+  /* "src/lxml/xmlerror.pxi":438
  * 
  *     @cython.final
  *     cdef int __enter__(self) except -1:             # <<<<<<<<<<<<<<
@@ -43636,7 +43751,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog___enter__(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":437
+/* "src/lxml/xmlerror.pxi":441
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
@@ -43669,16 +43784,16 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__exit__", 0);
 
-  /* "src/lxml/xmlerror.pxi":439
+  /* "src/lxml/xmlerror.pxi":443
  *     def __exit__(self, *args):
  *         #  TODO: make this a cdef function when Cython supports it
  *         self.disconnect()             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __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)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(1, 443, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":437
+  /* "src/lxml/xmlerror.pxi":441
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
@@ -43698,7 +43813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_4__exit__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":442
+/* "src/lxml/xmlerror.pxi":446
  * 
  *     @cython.final
  *     cdef int connect(self) except -1:             # <<<<<<<<<<<<<<
@@ -43715,7 +43830,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("connect", 0);
 
-  /* "src/lxml/xmlerror.pxi":443
+  /* "src/lxml/xmlerror.pxi":447
  *     @cython.final
  *     cdef int connect(self) except -1:
  *         self._first_error = None             # <<<<<<<<<<<<<<
@@ -43728,7 +43843,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
   __pyx_v_self->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);
 
-  /* "src/lxml/xmlerror.pxi":444
+  /* "src/lxml/xmlerror.pxi":448
  *     cdef int connect(self) except -1:
  *         self._first_error = None
  *         del self._entries[:]             # <<<<<<<<<<<<<<
@@ -43737,32 +43852,32 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  */
   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)
+    __PYX_ERR(1, 448, __pyx_L1_error)
   }
-  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(1, 444, __pyx_L1_error)
+  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(1, 448, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":446
+  /* "src/lxml/xmlerror.pxi":450
  *         del self._entries[:]
  * 
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)             # <<<<<<<<<<<<<<
  *         context.push_error_log(self)
  *         self._logContexts.append(context)
  */
-  __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_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, 450, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ErrorLogContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":447
+  /* "src/lxml/xmlerror.pxi":451
  * 
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  *         context.push_error_log(self)             # <<<<<<<<<<<<<<
  *         self._logContexts.append(context)
  *         return 0
  */
-  __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)
+  __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, 451, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":448
+  /* "src/lxml/xmlerror.pxi":452
  *         cdef _ErrorLogContext context = _ErrorLogContext.__new__(_ErrorLogContext)
  *         context.push_error_log(self)
  *         self._logContexts.append(context)             # <<<<<<<<<<<<<<
@@ -43771,11 +43886,11 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
  */
   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)
+    __PYX_ERR(1, 452, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_self->_logContexts, ((PyObject *)__pyx_v_context)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 448, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_self->_logContexts, ((PyObject *)__pyx_v_context)); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(1, 452, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":449
+  /* "src/lxml/xmlerror.pxi":453
  *         context.push_error_log(self)
  *         self._logContexts.append(context)
  *         return 0             # <<<<<<<<<<<<<<
@@ -43785,7 +43900,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":442
+  /* "src/lxml/xmlerror.pxi":446
  * 
  *     @cython.final
  *     cdef int connect(self) except -1:             # <<<<<<<<<<<<<<
@@ -43804,7 +43919,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_connect(struct __pyx_obj_4lxml_5etree
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":452
+/* "src/lxml/xmlerror.pxi":456
  * 
  *     @cython.final
  *     cdef int disconnect(self) except -1:             # <<<<<<<<<<<<<<
@@ -43820,7 +43935,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("disconnect", 0);
 
-  /* "src/lxml/xmlerror.pxi":453
+  /* "src/lxml/xmlerror.pxi":457
  *     @cython.final
  *     cdef int disconnect(self) except -1:
  *         cdef _ErrorLogContext context = self._logContexts.pop()             # <<<<<<<<<<<<<<
@@ -43829,24 +43944,24 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
  */
   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)
+    __PYX_ERR(1, 457, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_logContexts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 453, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyList_Pop(__pyx_v_self->_logContexts); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 457, __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__ErrorLogContext))))) __PYX_ERR(1, 453, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ErrorLogContext))))) __PYX_ERR(1, 457, __pyx_L1_error)
   __pyx_v_context = ((struct __pyx_obj_4lxml_5etree__ErrorLogContext *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":454
+  /* "src/lxml/xmlerror.pxi":458
  *     cdef int disconnect(self) except -1:
  *         cdef _ErrorLogContext context = self._logContexts.pop()
  *         context.pop_error_log()             # <<<<<<<<<<<<<<
  *         return 0
  * 
  */
-  __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)
+  __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, 458, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":455
+  /* "src/lxml/xmlerror.pxi":459
  *         cdef _ErrorLogContext context = self._logContexts.pop()
  *         context.pop_error_log()
  *         return 0             # <<<<<<<<<<<<<<
@@ -43856,7 +43971,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":452
+  /* "src/lxml/xmlerror.pxi":456
  * 
  *     @cython.final
  *     cdef int disconnect(self) except -1:             # <<<<<<<<<<<<<<
@@ -43875,7 +43990,7 @@ static int __pyx_f_4lxml_5etree_9_ErrorLog_disconnect(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":457
+/* "src/lxml/xmlerror.pxi":461
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
@@ -43896,12 +44011,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 457, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 461, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_9_ErrorLog_7clear)) {
         __Pyx_XDECREF(__pyx_r);
@@ -43918,7 +44033,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 457, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 461, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -43926,7 +44041,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -43934,12 +44049,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":458
+  /* "src/lxml/xmlerror.pxi":462
  * 
  *     cpdef clear(self):
  *         self._first_error = None             # <<<<<<<<<<<<<<
@@ -43952,7 +44067,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
   __pyx_v_self->__pyx_base.__pyx_base._first_error = ((struct __pyx_obj_4lxml_5etree__LogEntry *)Py_None);
 
-  /* "src/lxml/xmlerror.pxi":459
+  /* "src/lxml/xmlerror.pxi":463
  *     cpdef clear(self):
  *         self._first_error = None
  *         self.last_error = None             # <<<<<<<<<<<<<<
@@ -43965,7 +44080,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
   __Pyx_DECREF(__pyx_v_self->__pyx_base.__pyx_base.last_error);
   __pyx_v_self->__pyx_base.__pyx_base.last_error = Py_None;
 
-  /* "src/lxml/xmlerror.pxi":460
+  /* "src/lxml/xmlerror.pxi":464
  *         self._first_error = None
  *         self.last_error = None
  *         self._offset = 0             # <<<<<<<<<<<<<<
@@ -43974,7 +44089,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  */
   __pyx_v_self->__pyx_base._offset = 0;
 
-  /* "src/lxml/xmlerror.pxi":461
+  /* "src/lxml/xmlerror.pxi":465
  *         self.last_error = None
  *         self._offset = 0
  *         del self._entries[:]             # <<<<<<<<<<<<<<
@@ -43983,11 +44098,11 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_clear(struct __pyx_obj_4lxml_5e
  */
   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)
+    __PYX_ERR(1, 465, __pyx_L1_error)
   }
-  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(1, 461, __pyx_L1_error)
+  if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base._entries, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(1, 465, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":457
+  /* "src/lxml/xmlerror.pxi":461
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
@@ -44031,7 +44146,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("clear", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_clear(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 461, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -44048,7 +44163,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_6clear(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":463
+/* "src/lxml/xmlerror.pxi":467
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -44069,12 +44184,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 463, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 467, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_9_ErrorLog_9copy)) {
         __Pyx_XDECREF(__pyx_r);
@@ -44091,7 +44206,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 463, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 467, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -44099,7 +44214,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -44107,12 +44222,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":466
+  /* "src/lxml/xmlerror.pxi":470
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  *         return _ListErrorLog(             # <<<<<<<<<<<<<<
@@ -44121,7 +44236,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "src/lxml/xmlerror.pxi":467
+  /* "src/lxml/xmlerror.pxi":471
  *         """
  *         return _ListErrorLog(
  *             self._entries[self._offset:],             # <<<<<<<<<<<<<<
@@ -44130,19 +44245,19 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
  */
   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)
+    __PYX_ERR(1, 471, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 467, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 471, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
 
-  /* "src/lxml/xmlerror.pxi":466
+  /* "src/lxml/xmlerror.pxi":470
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  *         return _ListErrorLog(             # <<<<<<<<<<<<<<
  *             self._entries[self._offset:],
  *             self._first_error, self.last_error)
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 466, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 470, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -44153,14 +44268,14 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_copy(struct __pyx_obj_4lxml_5et
   __Pyx_GIVEREF(__pyx_v_self->__pyx_base.__pyx_base.last_error);
   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_v_self->__pyx_base.__pyx_base.last_error);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 466, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 470, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":463
+  /* "src/lxml/xmlerror.pxi":467
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -44203,7 +44318,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("copy", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -44220,7 +44335,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_8copy(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":470
+/* "src/lxml/xmlerror.pxi":474
  *             self._first_error, self.last_error)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -44248,7 +44363,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "src/lxml/xmlerror.pxi":471
+  /* "src/lxml/xmlerror.pxi":475
  * 
  *     def __iter__(self):
  *         return iter(self._entries[self._offset:])             # <<<<<<<<<<<<<<
@@ -44258,18 +44373,18 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   __Pyx_XDECREF(__pyx_r);
   if (unlikely(__pyx_v_self->__pyx_base._entries == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(1, 471, __pyx_L1_error)
+    __PYX_ERR(1, 475, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 471, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyList_GetSlice(__pyx_v_self->__pyx_base._entries, __pyx_v_self->__pyx_base._offset, PY_SSIZE_T_MAX); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 471, __pyx_L1_error)
+  __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 475, __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/xmlerror.pxi":470
+  /* "src/lxml/xmlerror.pxi":474
  *             self._first_error, self.last_error)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -44289,7 +44404,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_10__iter__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":473
+/* "src/lxml/xmlerror.pxi":477
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -44314,12 +44429,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 473, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 477, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_9_ErrorLog_13receive)) {
         __Pyx_XDECREF(__pyx_r);
@@ -44336,7 +44451,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_entry)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry));
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 473, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 477, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -44344,7 +44459,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -44352,12 +44467,12 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":474
+  /* "src/lxml/xmlerror.pxi":478
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -44376,7 +44491,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "src/lxml/xmlerror.pxi":475
+    /* "src/lxml/xmlerror.pxi":479
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry             # <<<<<<<<<<<<<<
@@ -44389,7 +44504,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
     __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base._first_error));
     __pyx_v_self->__pyx_base.__pyx_base._first_error = __pyx_v_entry;
 
-    /* "src/lxml/xmlerror.pxi":474
+    /* "src/lxml/xmlerror.pxi":478
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -44398,7 +44513,7 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":476
+  /* "src/lxml/xmlerror.pxi":480
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  *         self._entries.append(entry)             # <<<<<<<<<<<<<<
@@ -44407,11 +44522,11 @@ static PyObject *__pyx_f_4lxml_5etree_9_ErrorLog_receive(struct __pyx_obj_4lxml_
  */
   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)
+    __PYX_ERR(1, 480, __pyx_L1_error)
   }
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 476, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 480, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":473
+  /* "src/lxml/xmlerror.pxi":477
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -44442,7 +44557,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9_ErrorLog_13receive(PyObject *__pyx_v_se
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 473, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 477, __pyx_L1_error)
   __pyx_r = __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));
 
   /* function exit code */
@@ -44460,7 +44575,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lx
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("receive", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_9_ErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 477, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -44477,7 +44592,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9_ErrorLog_12receive(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":479
+/* "src/lxml/xmlerror.pxi":483
  * 
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):             # <<<<<<<<<<<<<<
@@ -44511,7 +44626,7 @@ static int __pyx_pw_4lxml_5etree_15_DomainErrorLog_1__init__(PyObject *__pyx_v_s
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 479, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 483, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -44522,7 +44637,7 @@ static int __pyx_pw_4lxml_5etree_15_DomainErrorLog_1__init__(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 479, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 483, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._DomainErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -44543,14 +44658,14 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":480
+  /* "src/lxml/xmlerror.pxi":484
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):
  *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
  *         self._accepted_domains = tuple(domains)
  * 
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -44564,24 +44679,24 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self));
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 480, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 484, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":481
+  /* "src/lxml/xmlerror.pxi":485
  *     def __init__(self, domains):
  *         _ErrorLog.__init__(self)
  *         self._accepted_domains = tuple(domains)             # <<<<<<<<<<<<<<
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
-  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_domains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 481, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PySequence_Tuple(__pyx_v_domains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 485, __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)
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains, __pyx_t_1) < 0) __PYX_ERR(1, 485, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":479
+  /* "src/lxml/xmlerror.pxi":483
  * 
  * cdef class _DomainErrorLog(_ErrorLog):
  *     def __init__(self, domains):             # <<<<<<<<<<<<<<
@@ -44603,7 +44718,7 @@ static int __pyx_pf_4lxml_5etree_15_DomainErrorLog___init__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":483
+/* "src/lxml/xmlerror.pxi":487
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -44626,12 +44741,12 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 483, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 487, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_15_DomainErrorLog_3receive)) {
         __Pyx_XDECREF(__pyx_r);
@@ -44648,7 +44763,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_entry)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry));
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 483, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 487, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -44656,7 +44771,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -44664,40 +44779,40 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":484
+  /* "src/lxml/xmlerror.pxi":488
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:             # <<<<<<<<<<<<<<
  *             _ErrorLog.receive(self, entry)
  * 
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_entry->domain); if (unlikely(!__pyx_t_1)) __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, 488, __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)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_accepted_domains); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 484, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_t_1, __pyx_t_2, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(1, 488, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_6 = (__pyx_t_5 != 0);
   if (__pyx_t_6) {
 
-    /* "src/lxml/xmlerror.pxi":485
+    /* "src/lxml/xmlerror.pxi":489
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:
  *             _ErrorLog.receive(self, entry)             # <<<<<<<<<<<<<<
  * 
  * cdef class _RotatingErrorLog(_ErrorLog):
  */
-    __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_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, 489, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-    /* "src/lxml/xmlerror.pxi":484
+    /* "src/lxml/xmlerror.pxi":488
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if entry.domain in self._accepted_domains:             # <<<<<<<<<<<<<<
@@ -44706,7 +44821,7 @@ static PyObject *__pyx_f_4lxml_5etree_15_DomainErrorLog_receive(struct __pyx_obj
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":483
+  /* "src/lxml/xmlerror.pxi":487
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -44737,7 +44852,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15_DomainErrorLog_3receive(PyObject *__py
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 483, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 487, __pyx_L1_error)
   __pyx_r = __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));
 
   /* function exit code */
@@ -44755,7 +44870,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_o
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("receive", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_15_DomainErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -44772,7 +44887,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DomainErrorLog_2receive(struct __pyx_o
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":489
+/* "src/lxml/xmlerror.pxi":493
  * cdef class _RotatingErrorLog(_ErrorLog):
  *     cdef int _max_len
  *     def __init__(self, max_len):             # <<<<<<<<<<<<<<
@@ -44806,7 +44921,7 @@ static int __pyx_pw_4lxml_5etree_17_RotatingErrorLog_1__init__(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 489, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 493, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -44817,7 +44932,7 @@ static int __pyx_pw_4lxml_5etree_17_RotatingErrorLog_1__init__(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 489, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 493, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._RotatingErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -44839,14 +44954,14 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__init__", 0);
 
-  /* "src/lxml/xmlerror.pxi":490
+  /* "src/lxml/xmlerror.pxi":494
  *     cdef int _max_len
  *     def __init__(self, max_len):
  *         _ErrorLog.__init__(self)             # <<<<<<<<<<<<<<
  *         self._max_len = max_len
  * 
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -44860,22 +44975,22 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_2, ((PyObject *)__pyx_v_self));
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 490, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":491
+  /* "src/lxml/xmlerror.pxi":495
  *     def __init__(self, max_len):
  *         _ErrorLog.__init__(self)
  *         self._max_len = max_len             # <<<<<<<<<<<<<<
  * 
  *     cpdef receive(self, _LogEntry entry):
  */
-  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_max_len); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 491, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyInt_As_int(__pyx_v_max_len); if (unlikely((__pyx_t_4 == (int)-1) && PyErr_Occurred())) __PYX_ERR(1, 495, __pyx_L1_error)
   __pyx_v_self->_max_len = __pyx_t_4;
 
-  /* "src/lxml/xmlerror.pxi":489
+  /* "src/lxml/xmlerror.pxi":493
  * cdef class _RotatingErrorLog(_ErrorLog):
  *     cdef int _max_len
  *     def __init__(self, max_len):             # <<<<<<<<<<<<<<
@@ -44897,7 +45012,7 @@ static int __pyx_pf_4lxml_5etree_17_RotatingErrorLog___init__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":493
+/* "src/lxml/xmlerror.pxi":497
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -44925,12 +45040,12 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 493, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_17_RotatingErrorLog_3receive)) {
         __Pyx_XDECREF(__pyx_r);
@@ -44947,7 +45062,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_entry)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_entry));
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 493, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 497, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -44955,7 +45070,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -44963,12 +45078,12 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":494
+  /* "src/lxml/xmlerror.pxi":498
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -44987,7 +45102,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "src/lxml/xmlerror.pxi":495
+    /* "src/lxml/xmlerror.pxi":499
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry             # <<<<<<<<<<<<<<
@@ -45000,7 +45115,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
     __Pyx_DECREF(((PyObject *)__pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error));
     __pyx_v_self->__pyx_base.__pyx_base.__pyx_base._first_error = __pyx_v_entry;
 
-    /* "src/lxml/xmlerror.pxi":494
+    /* "src/lxml/xmlerror.pxi":498
  * 
  *     cpdef receive(self, _LogEntry entry):
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:             # <<<<<<<<<<<<<<
@@ -45009,7 +45124,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":496
+  /* "src/lxml/xmlerror.pxi":500
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  *         self._entries.append(entry)             # <<<<<<<<<<<<<<
@@ -45018,11 +45133,11 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   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)
+    __PYX_ERR(1, 500, __pyx_L1_error)
   }
-  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base.__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 496, __pyx_L1_error)
+  __pyx_t_8 = __Pyx_PyList_Append(__pyx_v_self->__pyx_base.__pyx_base._entries, ((PyObject *)__pyx_v_entry)); if (unlikely(__pyx_t_8 == ((int)-1))) __PYX_ERR(1, 500, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":498
+  /* "src/lxml/xmlerror.pxi":502
  *         self._entries.append(entry)
  * 
  *         if len(self._entries) > self._max_len:             # <<<<<<<<<<<<<<
@@ -45033,14 +45148,14 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
   __Pyx_INCREF(__pyx_t_1);
   if (unlikely(__pyx_t_1 == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-    __PYX_ERR(1, 498, __pyx_L1_error)
+    __PYX_ERR(1, 502, __pyx_L1_error)
   }
-  __pyx_t_9 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 498, __pyx_L1_error)
+  __pyx_t_9 = PyList_GET_SIZE(__pyx_t_1); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(1, 502, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_5 = ((__pyx_t_9 > __pyx_v_self->_max_len) != 0);
   if (__pyx_t_5) {
 
-    /* "src/lxml/xmlerror.pxi":499
+    /* "src/lxml/xmlerror.pxi":503
  * 
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1             # <<<<<<<<<<<<<<
@@ -45049,7 +45164,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
     __pyx_v_self->__pyx_base.__pyx_base._offset = (__pyx_v_self->__pyx_base.__pyx_base._offset + 1);
 
-    /* "src/lxml/xmlerror.pxi":500
+    /* "src/lxml/xmlerror.pxi":504
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:             # <<<<<<<<<<<<<<
@@ -45059,7 +45174,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
     __pyx_t_5 = ((__pyx_v_self->__pyx_base.__pyx_base._offset > __Pyx_div_long(__pyx_v_self->_max_len, 3)) != 0);
     if (__pyx_t_5) {
 
-      /* "src/lxml/xmlerror.pxi":501
+      /* "src/lxml/xmlerror.pxi":505
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:
  *                 offset = self._offset             # <<<<<<<<<<<<<<
@@ -45069,7 +45184,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
       __pyx_t_10 = __pyx_v_self->__pyx_base.__pyx_base._offset;
       __pyx_v_offset = __pyx_t_10;
 
-      /* "src/lxml/xmlerror.pxi":502
+      /* "src/lxml/xmlerror.pxi":506
  *             if self._offset > self._max_len // 3:
  *                 offset = self._offset
  *                 self._offset = 0             # <<<<<<<<<<<<<<
@@ -45078,7 +45193,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
       __pyx_v_self->__pyx_base.__pyx_base._offset = 0;
 
-      /* "src/lxml/xmlerror.pxi":503
+      /* "src/lxml/xmlerror.pxi":507
  *                 offset = self._offset
  *                 self._offset = 0
  *                 del self._entries[:offset]             # <<<<<<<<<<<<<<
@@ -45087,11 +45202,11 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
       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)
+        __PYX_ERR(1, 507, __pyx_L1_error)
       }
-      if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base.__pyx_base._entries, 0, __pyx_v_offset, NULL, NULL, NULL, 0, 1, 1) < 0) __PYX_ERR(1, 503, __pyx_L1_error)
+      if (__Pyx_PyObject_DelSlice(__pyx_v_self->__pyx_base.__pyx_base._entries, 0, __pyx_v_offset, NULL, NULL, NULL, 0, 1, 1) < 0) __PYX_ERR(1, 507, __pyx_L1_error)
 
-      /* "src/lxml/xmlerror.pxi":500
+      /* "src/lxml/xmlerror.pxi":504
  *         if len(self._entries) > self._max_len:
  *             self._offset += 1
  *             if self._offset > self._max_len // 3:             # <<<<<<<<<<<<<<
@@ -45100,7 +45215,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":498
+    /* "src/lxml/xmlerror.pxi":502
  *         self._entries.append(entry)
  * 
  *         if len(self._entries) > self._max_len:             # <<<<<<<<<<<<<<
@@ -45109,7 +45224,7 @@ static PyObject *__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(struct __pyx_o
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":493
+  /* "src/lxml/xmlerror.pxi":497
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
@@ -45140,7 +45255,7 @@ static PyObject *__pyx_pw_4lxml_5etree_17_RotatingErrorLog_3receive(PyObject *__
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 493, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "entry", 0))) __PYX_ERR(1, 497, __pyx_L1_error)
   __pyx_r = __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));
 
   /* function exit code */
@@ -45158,7 +45273,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("receive", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_17_RotatingErrorLog_receive(__pyx_v_self, __pyx_v_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -45175,7 +45290,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_RotatingErrorLog_2receive(struct __pyx
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":528
+/* "src/lxml/xmlerror.pxi":532
  *     cdef object _map_level
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):             # <<<<<<<<<<<<<<
@@ -45222,7 +45337,7 @@ static int __pyx_pw_4lxml_5etree_10PyErrorLog_1__init__(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 528, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(1, 532, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -45239,7 +45354,7 @@ static int __pyx_pw_4lxml_5etree_10PyErrorLog_1__init__(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 528, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 532, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.PyErrorLog.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -45266,14 +45381,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_logger);
 
-  /* "src/lxml/xmlerror.pxi":529
+  /* "src/lxml/xmlerror.pxi":533
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):
  *         _BaseErrorLog.__init__(self, None, None)             # <<<<<<<<<<<<<<
  *         import logging
  *         self.level_map = {
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog), __pyx_n_s_init); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   __pyx_t_4 = 0;
@@ -45290,7 +45405,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), Py_None, Py_None};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 529, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 533, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else
@@ -45298,13 +45413,13 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[4] = {__pyx_t_3, ((PyObject *)__pyx_v_self), Py_None, Py_None};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 529, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_4, 3+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 533, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else
   #endif
   {
-    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 529, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(3+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 533, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_3) {
       __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -45318,82 +45433,82 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
     __Pyx_INCREF(Py_None);
     __Pyx_GIVEREF(Py_None);
     PyTuple_SET_ITEM(__pyx_t_5, 2+__pyx_t_4, Py_None);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 529, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 533, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":530
+  /* "src/lxml/xmlerror.pxi":534
  *     def __init__(self, logger_name=None, logger=None):
  *         _BaseErrorLog.__init__(self, None, None)
  *         import logging             # <<<<<<<<<<<<<<
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,
  */
-  __pyx_t_1 = __Pyx_Import(__pyx_n_s_logging, 0, 0); if (unlikely(!__pyx_t_1)) __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, 534, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_logging = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":532
+  /* "src/lxml/xmlerror.pxi":536
  *         import logging
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,             # <<<<<<<<<<<<<<
  *             ErrorLevels.ERROR   : logging.ERROR,
  *             ErrorLevels.FATAL   : logging.CRITICAL
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 532, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 532, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 532, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 532, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_WARNING); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 532, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":533
+  /* "src/lxml/xmlerror.pxi":537
  *         self.level_map = {
  *             ErrorLevels.WARNING : logging.WARNING,
  *             ErrorLevels.ERROR   : logging.ERROR,             # <<<<<<<<<<<<<<
  *             ErrorLevels.FATAL   : logging.CRITICAL
  *             }
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 537, __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)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 537, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 533, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_ERROR); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 537, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 532, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":534
+  /* "src/lxml/xmlerror.pxi":538
  *             ErrorLevels.WARNING : logging.WARNING,
  *             ErrorLevels.ERROR   : logging.ERROR,
  *             ErrorLevels.FATAL   : logging.CRITICAL             # <<<<<<<<<<<<<<
  *             }
  *         self._map_level = self.level_map.get
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 534, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 538, __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)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_FATAL); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 538, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_CRITICAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 534, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_CRITICAL); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 538, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 532, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_t_5, __pyx_t_2) < 0) __PYX_ERR(1, 536, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":531
+  /* "src/lxml/xmlerror.pxi":535
  *         _BaseErrorLog.__init__(self, None, None)
  *         import logging
  *         self.level_map = {             # <<<<<<<<<<<<<<
@@ -45406,14 +45521,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->level_map = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":536
+  /* "src/lxml/xmlerror.pxi":540
  *             ErrorLevels.FATAL   : logging.CRITICAL
  *             }
  *         self._map_level = self.level_map.get             # <<<<<<<<<<<<<<
  *         if logger is None:
  *             if logger_name:
  */
-  __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_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->level_map, __pyx_n_s_get); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 540, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_map_level);
@@ -45421,7 +45536,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->_map_level = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":537
+  /* "src/lxml/xmlerror.pxi":541
  *             }
  *         self._map_level = self.level_map.get
  *         if logger is None:             # <<<<<<<<<<<<<<
@@ -45432,24 +45547,24 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_t_7 = (__pyx_t_6 != 0);
   if (__pyx_t_7) {
 
-    /* "src/lxml/xmlerror.pxi":538
+    /* "src/lxml/xmlerror.pxi":542
  *         self._map_level = self.level_map.get
  *         if logger is None:
  *             if logger_name:             # <<<<<<<<<<<<<<
  *                 logger = logging.getLogger(logger_name)
  *             else:
  */
-    __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_logger_name); if (unlikely(__pyx_t_7 < 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, 542, __pyx_L1_error)
     if (__pyx_t_7) {
 
-      /* "src/lxml/xmlerror.pxi":539
+      /* "src/lxml/xmlerror.pxi":543
  *         if logger is None:
  *             if logger_name:
  *                 logger = logging.getLogger(logger_name)             # <<<<<<<<<<<<<<
  *             else:
  *                 logger = logging.getLogger()
  */
-      __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_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 543, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -45463,13 +45578,13 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       }
       __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_5, __pyx_v_logger_name) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_logger_name);
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 539, __pyx_L1_error)
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 543, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF_SET(__pyx_v_logger, __pyx_t_1);
       __pyx_t_1 = 0;
 
-      /* "src/lxml/xmlerror.pxi":538
+      /* "src/lxml/xmlerror.pxi":542
  *         self._map_level = self.level_map.get
  *         if logger is None:
  *             if logger_name:             # <<<<<<<<<<<<<<
@@ -45479,7 +45594,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       goto __pyx_L4;
     }
 
-    /* "src/lxml/xmlerror.pxi":541
+    /* "src/lxml/xmlerror.pxi":545
  *                 logger = logging.getLogger(logger_name)
  *             else:
  *                 logger = logging.getLogger()             # <<<<<<<<<<<<<<
@@ -45487,7 +45602,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  * 
  */
     /*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_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_logging, __pyx_n_s_getLogger); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 545, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -45501,7 +45616,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
       }
       __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 541, __pyx_L1_error)
+      if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 545, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF_SET(__pyx_v_logger, __pyx_t_1);
@@ -45509,7 +45624,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
     }
     __pyx_L4:;
 
-    /* "src/lxml/xmlerror.pxi":537
+    /* "src/lxml/xmlerror.pxi":541
  *             }
  *         self._map_level = self.level_map.get
  *         if logger is None:             # <<<<<<<<<<<<<<
@@ -45518,14 +45633,14 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":542
+  /* "src/lxml/xmlerror.pxi":546
  *             else:
  *                 logger = logging.getLogger()
  *         self._log = logger.log             # <<<<<<<<<<<<<<
  * 
  *     cpdef copy(self):
  */
-  __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_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_logger, __pyx_n_s_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_log);
@@ -45533,7 +45648,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   __pyx_v_self->_log = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":528
+  /* "src/lxml/xmlerror.pxi":532
  *     cdef object _map_level
  *     cdef object _log
  *     def __init__(self, logger_name=None, logger=None):             # <<<<<<<<<<<<<<
@@ -45558,7 +45673,7 @@ static int __pyx_pf_4lxml_5etree_10PyErrorLog___init__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":544
+/* "src/lxml/xmlerror.pxi":548
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -45579,12 +45694,12 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 544, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_copy); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 548, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_10PyErrorLog_3copy)) {
         __Pyx_XDECREF(__pyx_r);
@@ -45601,7 +45716,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 544, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 548, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -45609,7 +45724,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -45617,12 +45732,12 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":547
+  /* "src/lxml/xmlerror.pxi":551
  *         u"""Dummy method that returns an empty error log.
  *         """
  *         return _ListErrorLog([], None, None)             # <<<<<<<<<<<<<<
@@ -45630,9 +45745,9 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
  *     def log(self, log_entry, message, *args):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 547, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 547, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -45643,14 +45758,14 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_copy(CYTHON_UNUSED struct __p
   __Pyx_GIVEREF(Py_None);
   PyTuple_SET_ITEM(__pyx_t_2, 2, Py_None);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 547, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xmlerror.pxi":544
+  /* "src/lxml/xmlerror.pxi":548
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
@@ -45693,7 +45808,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("copy", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_copy(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -45710,7 +45825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_2copy(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":549
+/* "src/lxml/xmlerror.pxi":553
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
@@ -45762,12 +45877,12 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_5log(PyObject *__pyx_v_self,
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, 1); __PYX_ERR(1, 549, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, 1); __PYX_ERR(1, 553, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 2) ? pos_args : 2;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "log") < 0)) __PYX_ERR(1, 549, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "log") < 0)) __PYX_ERR(1, 553, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 2) {
       goto __pyx_L5_argtuple_error;
@@ -45780,7 +45895,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_5log(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 549, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("log", 0, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(1, 553, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
   __Pyx_AddTraceback("lxml.etree.PyErrorLog.log", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -45806,14 +45921,14 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("log", 0);
 
-  /* "src/lxml/xmlerror.pxi":562
+  /* "src/lxml/xmlerror.pxi":566
  *         """
  *         self._log(
  *             self._map_level(log_entry.level, 0),             # <<<<<<<<<<<<<<
  *             message, *args
  *             )
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_log_entry, __pyx_n_s_level); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 566, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->_map_level);
   __pyx_t_3 = __pyx_v_self->_map_level; __pyx_t_4 = NULL;
@@ -45831,7 +45946,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_int_0};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
@@ -45840,14 +45955,14 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_t_2, __pyx_int_0};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 562, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 566, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -45858,20 +45973,20 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
     __Pyx_GIVEREF(__pyx_int_0);
     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_int_0);
     __pyx_t_2 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 562, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":561
+  /* "src/lxml/xmlerror.pxi":565
  *         override the .receive() method instead of this one.
  *         """
  *         self._log(             # <<<<<<<<<<<<<<
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 561, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 565, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -45880,30 +45995,30 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_message);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":563
+  /* "src/lxml/xmlerror.pxi":567
  *         self._log(
  *             self._map_level(log_entry.level, 0),
  *             message, *args             # <<<<<<<<<<<<<<
  *             )
  * 
  */
-  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 561, __pyx_L1_error)
+  __pyx_t_1 = PyNumber_Add(__pyx_t_3, __pyx_v_args); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 565, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":561
+  /* "src/lxml/xmlerror.pxi":565
  *         override the .receive() method instead of this one.
  *         """
  *         self._log(             # <<<<<<<<<<<<<<
  *             self._map_level(log_entry.level, 0),
  *             message, *args
  */
-  __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_t_3 = __Pyx_PyObject_Call(__pyx_v_self->_log, __pyx_t_1, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 565, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "src/lxml/xmlerror.pxi":549
+  /* "src/lxml/xmlerror.pxi":553
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
@@ -45928,7 +46043,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_4log(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":566
+/* "src/lxml/xmlerror.pxi":570
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
@@ -45951,12 +46066,12 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 566, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_receive); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 570, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_10PyErrorLog_7receive)) {
         __Pyx_XDECREF(__pyx_r);
@@ -45973,7 +46088,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_log_entry)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_log_entry));
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 566, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 570, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -45981,7 +46096,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -45989,21 +46104,21 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "src/lxml/xmlerror.pxi":577
+  /* "src/lxml/xmlerror.pxi":581
  *         format.
  *         """
  *         self.log(log_entry, repr(log_entry))             # <<<<<<<<<<<<<<
  * 
  * # thread-local, global list log to collect error output messages from
  */
-  __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_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_log); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 581, __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)
+  __pyx_t_3 = PyObject_Repr(((PyObject *)__pyx_v_log_entry)); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 581, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_5 = 0;
@@ -46020,7 +46135,7 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_log_entry), __pyx_t_3};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 577, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 581, __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;
@@ -46029,14 +46144,14 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_2)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, ((PyObject *)__pyx_v_log_entry), __pyx_t_3};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 577, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_2, __pyx_temp+1-__pyx_t_5, 2+__pyx_t_5); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 581, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 577, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2+__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(1, 581, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -46047,14 +46162,14 @@ static PyObject *__pyx_f_4lxml_5etree_10PyErrorLog_receive(struct __pyx_obj_4lxm
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_5, __pyx_t_3);
     __pyx_t_3 = 0;
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 577, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_t_6, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 581, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":566
+  /* "src/lxml/xmlerror.pxi":570
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
@@ -46087,7 +46202,7 @@ static PyObject *__pyx_pw_4lxml_5etree_10PyErrorLog_7receive(PyObject *__pyx_v_s
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("receive (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "log_entry", 0))) __PYX_ERR(1, 566, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log_entry), __pyx_ptype_4lxml_5etree__LogEntry, 1, "log_entry", 0))) __PYX_ERR(1, 570, __pyx_L1_error)
   __pyx_r = __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));
 
   /* function exit code */
@@ -46105,7 +46220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4l
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("receive", 0);
   __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_t_1 = __pyx_f_4lxml_5etree_10PyErrorLog_receive(__pyx_v_self, __pyx_v_log_entry, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 570, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -46122,7 +46237,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_6receive(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":525
+/* "src/lxml/xmlerror.pxi":529
  *     with appropriate data.
  *     """
  *     cdef readonly dict level_map             # <<<<<<<<<<<<<<
@@ -46159,7 +46274,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10PyErrorLog_9level_map___get__(struct __
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":585
+/* "src/lxml/xmlerror.pxi":589
  * 
  * 
  * cdef _BaseErrorLog _getThreadErrorLog(name):             # <<<<<<<<<<<<<<
@@ -46183,7 +46298,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   PyObject *__pyx_t_9 = NULL;
   __Pyx_RefNannySetupContext("_getThreadErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":588
+  /* "src/lxml/xmlerror.pxi":592
  *     u"""Retrieve the current error log with name 'name' of this thread."""
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
@@ -46192,7 +46307,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  */
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
-  /* "src/lxml/xmlerror.pxi":589
+  /* "src/lxml/xmlerror.pxi":593
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -46202,7 +46317,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":590
+    /* "src/lxml/xmlerror.pxi":594
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG             # <<<<<<<<<<<<<<
@@ -46214,7 +46329,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     __pyx_r = __pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG;
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":589
+    /* "src/lxml/xmlerror.pxi":593
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -46223,7 +46338,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":591
+  /* "src/lxml/xmlerror.pxi":595
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -46239,7 +46354,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     __Pyx_XGOTREF(__pyx_t_4);
     /*try:*/ {
 
-      /* "src/lxml/xmlerror.pxi":592
+      /* "src/lxml/xmlerror.pxi":596
  *         return __GLOBAL_ERROR_LOG
  *     try:
  *         return (<object>thread_dict)[name]             # <<<<<<<<<<<<<<
@@ -46247,14 +46362,14 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
  *         log = (<object>thread_dict)[name] = \
  */
       __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_t_5 = __Pyx_PyObject_GetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 596, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_5);
-      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) __PYX_ERR(1, 592, __pyx_L4_error)
+      if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__BaseErrorLog))))) __PYX_ERR(1, 596, __pyx_L4_error)
       __pyx_r = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_5);
       __pyx_t_5 = 0;
       goto __pyx_L8_try_return;
 
-      /* "src/lxml/xmlerror.pxi":591
+      /* "src/lxml/xmlerror.pxi":595
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -46265,7 +46380,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     __pyx_L4_error:;
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":593
+    /* "src/lxml/xmlerror.pxi":597
  *     try:
  *         return (<object>thread_dict)[name]
  *     except KeyError:             # <<<<<<<<<<<<<<
@@ -46275,34 +46390,34 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     __pyx_t_6 = __Pyx_PyErr_ExceptionMatches(__pyx_builtin_KeyError);
     if (__pyx_t_6) {
       __Pyx_AddTraceback("lxml.etree._getThreadErrorLog", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(1, 593, __pyx_L6_except_error)
+      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_7, &__pyx_t_8) < 0) __PYX_ERR(1, 597, __pyx_L6_except_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_8);
 
-      /* "src/lxml/xmlerror.pxi":595
+      /* "src/lxml/xmlerror.pxi":599
  *     except KeyError:
  *         log = (<object>thread_dict)[name] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  *         return log
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 595, __pyx_L6_except_error)
+      __pyx_t_9 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(1, 599, __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);
 
-      /* "src/lxml/xmlerror.pxi":594
+      /* "src/lxml/xmlerror.pxi":598
  *         return (<object>thread_dict)[name]
  *     except KeyError:
  *         log = (<object>thread_dict)[name] = \             # <<<<<<<<<<<<<<
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  *         return log
  */
-      if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name, __pyx_t_9) < 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, 598, __pyx_L6_except_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-      /* "src/lxml/xmlerror.pxi":596
+      /* "src/lxml/xmlerror.pxi":600
  *         log = (<object>thread_dict)[name] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)
  *         return log             # <<<<<<<<<<<<<<
@@ -46320,7 +46435,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
 
-    /* "src/lxml/xmlerror.pxi":591
+    /* "src/lxml/xmlerror.pxi":595
  *     if thread_dict is NULL:
  *         return __GLOBAL_ERROR_LOG
  *     try:             # <<<<<<<<<<<<<<
@@ -46346,7 +46461,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
     goto __pyx_L0;
   }
 
-  /* "src/lxml/xmlerror.pxi":585
+  /* "src/lxml/xmlerror.pxi":589
  * 
  * 
  * cdef _BaseErrorLog _getThreadErrorLog(name):             # <<<<<<<<<<<<<<
@@ -46369,7 +46484,7 @@ static struct __pyx_obj_4lxml_5etree__BaseErrorLog *__pyx_f_4lxml_5etree__getThr
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":599
+/* "src/lxml/xmlerror.pxi":603
  * 
  * 
  * cdef _setThreadErrorLog(name, _BaseErrorLog log):             # <<<<<<<<<<<<<<
@@ -46384,7 +46499,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_setThreadErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":602
+  /* "src/lxml/xmlerror.pxi":606
  *     u"""Set the global error log of this thread."""
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()             # <<<<<<<<<<<<<<
@@ -46393,7 +46508,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  */
   __pyx_v_thread_dict = PyThreadState_GetDict();
 
-  /* "src/lxml/xmlerror.pxi":603
+  /* "src/lxml/xmlerror.pxi":607
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -46403,17 +46518,17 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
   __pyx_t_1 = ((__pyx_v_thread_dict == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":604
+    /* "src/lxml/xmlerror.pxi":608
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:
  *         if name == GLOBAL_ERROR_LOG:             # <<<<<<<<<<<<<<
  *             global __GLOBAL_ERROR_LOG
  *             __GLOBAL_ERROR_LOG = log
  */
-    __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)
+    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v_name, __pyx_n_u_GlobalErrorLog, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(1, 608, __pyx_L1_error)
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":606
+      /* "src/lxml/xmlerror.pxi":610
  *         if name == GLOBAL_ERROR_LOG:
  *             global __GLOBAL_ERROR_LOG
  *             __GLOBAL_ERROR_LOG = log             # <<<<<<<<<<<<<<
@@ -46425,7 +46540,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
       __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___GLOBAL_ERROR_LOG, __pyx_v_log);
       __Pyx_GIVEREF(((PyObject *)__pyx_v_log));
 
-      /* "src/lxml/xmlerror.pxi":604
+      /* "src/lxml/xmlerror.pxi":608
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:
  *         if name == GLOBAL_ERROR_LOG:             # <<<<<<<<<<<<<<
@@ -46434,7 +46549,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  */
     }
 
-    /* "src/lxml/xmlerror.pxi":603
+    /* "src/lxml/xmlerror.pxi":607
  *     cdef python.PyObject* thread_dict
  *     thread_dict = python.PyThreadState_GetDict()
  *     if thread_dict is NULL:             # <<<<<<<<<<<<<<
@@ -46444,7 +46559,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
     goto __pyx_L3;
   }
 
-  /* "src/lxml/xmlerror.pxi":608
+  /* "src/lxml/xmlerror.pxi":612
  *             __GLOBAL_ERROR_LOG = log
  *     else:
  *         (<object>thread_dict)[name] = log             # <<<<<<<<<<<<<<
@@ -46452,11 +46567,11 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
  * 
  */
   /*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)
+    if (unlikely(PyObject_SetItem(((PyObject *)__pyx_v_thread_dict), __pyx_v_name, ((PyObject *)__pyx_v_log)) < 0)) __PYX_ERR(1, 612, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "src/lxml/xmlerror.pxi":599
+  /* "src/lxml/xmlerror.pxi":603
  * 
  * 
  * cdef _setThreadErrorLog(name, _BaseErrorLog log):             # <<<<<<<<<<<<<<
@@ -46476,7 +46591,7 @@ static PyObject *__pyx_f_4lxml_5etree__setThreadErrorLog(PyObject *__pyx_v_name,
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":611
+/* "src/lxml/xmlerror.pxi":615
  * 
  * 
  * cdef __copyGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -46491,7 +46606,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__copyGlobalErrorLog", 0);
 
-  /* "src/lxml/xmlerror.pxi":613
+  /* "src/lxml/xmlerror.pxi":617
  * cdef __copyGlobalErrorLog():
  *     u"Helper function for properties in exceptions."
  *     return _getThreadErrorLog(GLOBAL_ERROR_LOG).copy()             # <<<<<<<<<<<<<<
@@ -46499,16 +46614,16 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
  * 
  */
   __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_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 617, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1)->__pyx_vtab)->copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 613, __pyx_L1_error)
+  __pyx_t_2 = ((struct __pyx_vtabstruct_4lxml_5etree__BaseErrorLog *)((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1)->__pyx_vtab)->copy(((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_1), 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 617, __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/xmlerror.pxi":611
+  /* "src/lxml/xmlerror.pxi":615
  * 
  * 
  * cdef __copyGlobalErrorLog():             # <<<<<<<<<<<<<<
@@ -46528,7 +46643,7 @@ static PyObject *__pyx_f_4lxml_5etree___copyGlobalErrorLog(void) {
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":616
+/* "src/lxml/xmlerror.pxi":620
  * 
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
@@ -46544,7 +46659,7 @@ static PyObject *__pyx_pw_4lxml_5etree_5use_global_python_log(PyObject *__pyx_se
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("use_global_python_log (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log), __pyx_ptype_4lxml_5etree_PyErrorLog, 0, "log", 0))) __PYX_ERR(1, 616, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_log), __pyx_ptype_4lxml_5etree_PyErrorLog, 0, "log", 0))) __PYX_ERR(1, 620, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_4use_global_python_log(__pyx_self, ((struct __pyx_obj_4lxml_5etree_PyErrorLog *)__pyx_v_log));
 
   /* function exit code */
@@ -46562,18 +46677,18 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("use_global_python_log", 0);
 
-  /* "src/lxml/xmlerror.pxi":629
+  /* "src/lxml/xmlerror.pxi":633
  *     function will only set the global error log of the current thread.
  *     """
  *     _setThreadErrorLog(GLOBAL_ERROR_LOG, log)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __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_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, 633, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":616
+  /* "src/lxml/xmlerror.pxi":620
  * 
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
@@ -46594,7 +46709,7 @@ static PyObject *__pyx_pf_4lxml_5etree_4use_global_python_log(CYTHON_UNUSED PyOb
   return __pyx_r;
 }
 
-/* "src/lxml/xmlerror.pxi":633
+/* "src/lxml/xmlerror.pxi":637
  * 
  * # local log functions: forward error to logger object
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -46612,7 +46727,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   #endif
   __Pyx_RefNannySetupContext("_forwardError", 0);
 
-  /* "src/lxml/xmlerror.pxi":635
+  /* "src/lxml/xmlerror.pxi":639
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:             # <<<<<<<<<<<<<<
@@ -46622,7 +46737,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   __pyx_t_1 = ((__pyx_v_c_log_handler != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":636
+    /* "src/lxml/xmlerror.pxi":640
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:
  *         log_handler = <_BaseErrorLog>c_log_handler             # <<<<<<<<<<<<<<
@@ -46634,7 +46749,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "src/lxml/xmlerror.pxi":635
+    /* "src/lxml/xmlerror.pxi":639
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:
  *     cdef _BaseErrorLog log_handler
  *     if c_log_handler is not NULL:             # <<<<<<<<<<<<<<
@@ -46644,7 +46759,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
     goto __pyx_L3;
   }
 
-  /* "src/lxml/xmlerror.pxi":637
+  /* "src/lxml/xmlerror.pxi":641
  *     if c_log_handler is not NULL:
  *         log_handler = <_BaseErrorLog>c_log_handler
  *     elif error.domain == xmlerror.XML_FROM_XSLT:             # <<<<<<<<<<<<<<
@@ -46654,19 +46769,19 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   __pyx_t_1 = ((__pyx_v_error->domain == XML_FROM_XSLT) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":638
+    /* "src/lxml/xmlerror.pxi":642
  *         log_handler = <_BaseErrorLog>c_log_handler
  *     elif error.domain == xmlerror.XML_FROM_XSLT:
  *         log_handler = _getThreadErrorLog(XSLT_ERROR_LOG)             # <<<<<<<<<<<<<<
  *     else:
  *         log_handler = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  */
-    __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_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_XSLTErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 642, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "src/lxml/xmlerror.pxi":637
+    /* "src/lxml/xmlerror.pxi":641
  *     if c_log_handler is not NULL:
  *         log_handler = <_BaseErrorLog>c_log_handler
  *     elif error.domain == xmlerror.XML_FROM_XSLT:             # <<<<<<<<<<<<<<
@@ -46676,7 +46791,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
     goto __pyx_L3;
   }
 
-  /* "src/lxml/xmlerror.pxi":640
+  /* "src/lxml/xmlerror.pxi":644
  *         log_handler = _getThreadErrorLog(XSLT_ERROR_LOG)
  *     else:
  *         log_handler = _getThreadErrorLog(GLOBAL_ERROR_LOG)             # <<<<<<<<<<<<<<
@@ -46684,14 +46799,14 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  * 
  */
   /*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_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__getThreadErrorLog(__pyx_n_u_GlobalErrorLog)); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 644, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_log_handler = ((struct __pyx_obj_4lxml_5etree__BaseErrorLog *)__pyx_t_2);
     __pyx_t_2 = 0;
   }
   __pyx_L3:;
 
-  /* "src/lxml/xmlerror.pxi":641
+  /* "src/lxml/xmlerror.pxi":645
  *     else:
  *         log_handler = _getThreadErrorLog(GLOBAL_ERROR_LOG)
  *     log_handler._receive(error)             # <<<<<<<<<<<<<<
@@ -46700,7 +46815,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
  */
   __pyx_f_4lxml_5etree_13_BaseErrorLog__receive(__pyx_v_log_handler, __pyx_v_error);
 
-  /* "src/lxml/xmlerror.pxi":633
+  /* "src/lxml/xmlerror.pxi":637
  * 
  * # local log functions: forward error to logger object
  * cdef void _forwardError(void* c_log_handler, xmlerror.xmlError* error) with gil:             # <<<<<<<<<<<<<<
@@ -46721,7 +46836,7 @@ static void __pyx_f_4lxml_5etree__forwardError(void *__pyx_v_c_log_handler, xmlE
   #endif
 }
 
-/* "src/lxml/xmlerror.pxi":644
+/* "src/lxml/xmlerror.pxi":648
  * 
  * 
  * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -46731,7 +46846,7 @@ 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) {
 
-  /* "src/lxml/xmlerror.pxi":647
+  /* "src/lxml/xmlerror.pxi":651
  *     # no Python objects here, may be called without thread context !
  *     if __DEBUG:
  *         _forwardError(c_log_handler, error)             # <<<<<<<<<<<<<<
@@ -46740,7 +46855,7 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
  */
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, __pyx_v_error);
 
-  /* "src/lxml/xmlerror.pxi":644
+  /* "src/lxml/xmlerror.pxi":648
  * 
  * 
  * cdef void _receiveError(void* c_log_handler, xmlerror.xmlError* error) nogil:             # <<<<<<<<<<<<<<
@@ -46751,7 +46866,7 @@ static void __pyx_f_4lxml_5etree__receiveError(void *__pyx_v_c_log_handler, xmlE
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":650
+/* "src/lxml/xmlerror.pxi":654
  * 
  * 
  * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46762,7 +46877,7 @@ 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;
 
-  /* "src/lxml/xmlerror.pxi":653
+  /* "src/lxml/xmlerror.pxi":657
  *     # no Python objects here, may be called without thread context !
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)             # <<<<<<<<<<<<<<
@@ -46771,7 +46886,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   va_start(__pyx_v_args, __pyx_v_msg);
 
-  /* "src/lxml/xmlerror.pxi":654
+  /* "src/lxml/xmlerror.pxi":658
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_XSLT, msg, args)             # <<<<<<<<<<<<<<
@@ -46780,7 +46895,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_XSLT, __pyx_v_msg, __pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":655
+  /* "src/lxml/xmlerror.pxi":659
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_XSLT, msg, args)
  *     cvarargs.va_end(args)             # <<<<<<<<<<<<<<
@@ -46789,7 +46904,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
  */
   va_end(__pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":650
+  /* "src/lxml/xmlerror.pxi":654
  * 
  * 
  * cdef void _receiveXSLTError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46800,7 +46915,7 @@ static void __pyx_f_4lxml_5etree__receiveXSLTError(void *__pyx_v_c_log_handler,
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":657
+/* "src/lxml/xmlerror.pxi":661
  *     cvarargs.va_end(args)
  * 
  * cdef void _receiveRelaxNGParseError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46811,7 +46926,7 @@ 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;
 
-  /* "src/lxml/xmlerror.pxi":660
+  /* "src/lxml/xmlerror.pxi":664
  *     # no Python objects here, may be called without thread context !
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)             # <<<<<<<<<<<<<<
@@ -46820,7 +46935,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  */
   va_start(__pyx_v_args, __pyx_v_msg);
 
-  /* "src/lxml/xmlerror.pxi":661
+  /* "src/lxml/xmlerror.pxi":665
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGP, msg, args)             # <<<<<<<<<<<<<<
@@ -46829,7 +46944,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  */
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_RELAXNGP, __pyx_v_msg, __pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":662
+  /* "src/lxml/xmlerror.pxi":666
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGP, msg, args)
  *     cvarargs.va_end(args)             # <<<<<<<<<<<<<<
@@ -46838,7 +46953,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
  */
   va_end(__pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":657
+  /* "src/lxml/xmlerror.pxi":661
  *     cvarargs.va_end(args)
  * 
  * cdef void _receiveRelaxNGParseError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46849,7 +46964,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGParseError(void *__pyx_v_c_log_h
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":664
+/* "src/lxml/xmlerror.pxi":668
  *     cvarargs.va_end(args)
  * 
  * cdef void _receiveRelaxNGValidationError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46860,7 +46975,7 @@ 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;
 
-  /* "src/lxml/xmlerror.pxi":667
+  /* "src/lxml/xmlerror.pxi":671
  *     # no Python objects here, may be called without thread context !
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)             # <<<<<<<<<<<<<<
@@ -46869,7 +46984,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  */
   va_start(__pyx_v_args, __pyx_v_msg);
 
-  /* "src/lxml/xmlerror.pxi":668
+  /* "src/lxml/xmlerror.pxi":672
  *     cdef cvarargs.va_list args
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGV, msg, args)             # <<<<<<<<<<<<<<
@@ -46878,7 +46993,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  */
   __pyx_f_4lxml_5etree__receiveGenericError(__pyx_v_c_log_handler, XML_FROM_RELAXNGV, __pyx_v_msg, __pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":669
+  /* "src/lxml/xmlerror.pxi":673
  *     cvarargs.va_start(args, msg)
  *     _receiveGenericError(c_log_handler, xmlerror.XML_FROM_RELAXNGV, msg, args)
  *     cvarargs.va_end(args)             # <<<<<<<<<<<<<<
@@ -46887,7 +47002,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
  */
   va_end(__pyx_v_args);
 
-  /* "src/lxml/xmlerror.pxi":664
+  /* "src/lxml/xmlerror.pxi":668
  *     cvarargs.va_end(args)
  * 
  * cdef void _receiveRelaxNGValidationError(void* c_log_handler, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46898,7 +47013,7 @@ static void __pyx_f_4lxml_5etree__receiveRelaxNGValidationError(void *__pyx_v_c_
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":672
+/* "src/lxml/xmlerror.pxi":676
  * 
  * # dummy function: no log output at all
  * cdef void _nullGenericErrorFunc(void* ctxt, char* msg, ...) nogil:             # <<<<<<<<<<<<<<
@@ -46911,7 +47026,7 @@ static void __pyx_f_4lxml_5etree__nullGenericErrorFunc(CYTHON_UNUSED void *__pyx
   /* function exit code */
 }
 
-/* "src/lxml/xmlerror.pxi":676
+/* "src/lxml/xmlerror.pxi":680
  * 
  * 
  * cdef void _connectGenericErrorLog(log, int c_domain=-1):             # <<<<<<<<<<<<<<
@@ -46934,7 +47049,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
     }
   }
 
-  /* "src/lxml/xmlerror.pxi":677
+  /* "src/lxml/xmlerror.pxi":681
  * 
  * cdef void _connectGenericErrorLog(log, int c_domain=-1):
  *     cdef xmlerror.xmlGenericErrorFunc error_func = NULL             # <<<<<<<<<<<<<<
@@ -46943,7 +47058,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
   __pyx_v_error_func = NULL;
 
-  /* "src/lxml/xmlerror.pxi":678
+  /* "src/lxml/xmlerror.pxi":682
  * cdef void _connectGenericErrorLog(log, int c_domain=-1):
  *     cdef xmlerror.xmlGenericErrorFunc error_func = NULL
  *     c_log = <void*>log             # <<<<<<<<<<<<<<
@@ -46952,7 +47067,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
   __pyx_v_c_log = ((void *)__pyx_v_log);
 
-  /* "src/lxml/xmlerror.pxi":679
+  /* "src/lxml/xmlerror.pxi":683
  *     cdef xmlerror.xmlGenericErrorFunc error_func = NULL
  *     c_log = <void*>log
  *     if c_domain == xmlerror.XML_FROM_XSLT:             # <<<<<<<<<<<<<<
@@ -46962,7 +47077,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
   switch (__pyx_v_c_domain) {
     case XML_FROM_XSLT:
 
-    /* "src/lxml/xmlerror.pxi":680
+    /* "src/lxml/xmlerror.pxi":684
  *     c_log = <void*>log
  *     if c_domain == xmlerror.XML_FROM_XSLT:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError             # <<<<<<<<<<<<<<
@@ -46971,7 +47086,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveXSLTError);
 
-    /* "src/lxml/xmlerror.pxi":679
+    /* "src/lxml/xmlerror.pxi":683
  *     cdef xmlerror.xmlGenericErrorFunc error_func = NULL
  *     c_log = <void*>log
  *     if c_domain == xmlerror.XML_FROM_XSLT:             # <<<<<<<<<<<<<<
@@ -46981,7 +47096,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
     break;
     case XML_FROM_RELAXNGP:
 
-    /* "src/lxml/xmlerror.pxi":682
+    /* "src/lxml/xmlerror.pxi":686
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGP:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError             # <<<<<<<<<<<<<<
@@ -46990,7 +47105,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveRelaxNGParseError);
 
-    /* "src/lxml/xmlerror.pxi":681
+    /* "src/lxml/xmlerror.pxi":685
  *     if c_domain == xmlerror.XML_FROM_XSLT:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveXSLTError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGP:             # <<<<<<<<<<<<<<
@@ -47000,7 +47115,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
     break;
     case XML_FROM_RELAXNGV:
 
-    /* "src/lxml/xmlerror.pxi":684
+    /* "src/lxml/xmlerror.pxi":688
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGV:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError             # <<<<<<<<<<<<<<
@@ -47009,7 +47124,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__receiveRelaxNGValidationError);
 
-    /* "src/lxml/xmlerror.pxi":683
+    /* "src/lxml/xmlerror.pxi":687
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGP:
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGParseError
  *     elif c_domain == xmlerror.XML_FROM_RELAXNGV:             # <<<<<<<<<<<<<<
@@ -47020,7 +47135,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
     default: break;
   }
 
-  /* "src/lxml/xmlerror.pxi":686
+  /* "src/lxml/xmlerror.pxi":690
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError
  * 
  *     if log is None or error_func is NULL:             # <<<<<<<<<<<<<<
@@ -47039,7 +47154,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":687
+    /* "src/lxml/xmlerror.pxi":691
  * 
  *     if log is None or error_func is NULL:
  *         c_log = NULL             # <<<<<<<<<<<<<<
@@ -47048,7 +47163,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
     __pyx_v_c_log = NULL;
 
-    /* "src/lxml/xmlerror.pxi":688
+    /* "src/lxml/xmlerror.pxi":692
  *     if log is None or error_func is NULL:
  *         c_log = NULL
  *         error_func = <xmlerror.xmlGenericErrorFunc>_nullGenericErrorFunc             # <<<<<<<<<<<<<<
@@ -47057,7 +47172,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
     __pyx_v_error_func = ((xmlGenericErrorFunc)__pyx_f_4lxml_5etree__nullGenericErrorFunc);
 
-    /* "src/lxml/xmlerror.pxi":686
+    /* "src/lxml/xmlerror.pxi":690
  *         error_func = <xmlerror.xmlGenericErrorFunc>_receiveRelaxNGValidationError
  * 
  *     if log is None or error_func is NULL:             # <<<<<<<<<<<<<<
@@ -47066,7 +47181,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":689
+  /* "src/lxml/xmlerror.pxi":693
  *         c_log = NULL
  *         error_func = <xmlerror.xmlGenericErrorFunc>_nullGenericErrorFunc
  *     xmlerror.xmlSetGenericErrorFunc(c_log, error_func)             # <<<<<<<<<<<<<<
@@ -47075,7 +47190,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
  */
   xmlSetGenericErrorFunc(__pyx_v_c_log, __pyx_v_error_func);
 
-  /* "src/lxml/xmlerror.pxi":676
+  /* "src/lxml/xmlerror.pxi":680
  * 
  * 
  * cdef void _connectGenericErrorLog(log, int c_domain=-1):             # <<<<<<<<<<<<<<
@@ -47087,7 +47202,7 @@ static void __pyx_f_4lxml_5etree__connectGenericErrorLog(PyObject *__pyx_v_log,
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/xmlerror.pxi":692
+/* "src/lxml/xmlerror.pxi":696
  * 
  * 
  * cdef void _receiveGenericError(void* c_log_handler, int c_domain,             # <<<<<<<<<<<<<<
@@ -47110,7 +47225,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   int __pyx_t_1;
   int __pyx_t_2;
 
-  /* "src/lxml/xmlerror.pxi":703
+  /* "src/lxml/xmlerror.pxi":707
  *     cdef char* c_str
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:             # <<<<<<<<<<<<<<
@@ -47120,7 +47235,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_t_1 = ((__pyx_v_msg == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":704
+    /* "src/lxml/xmlerror.pxi":708
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:
  *         return             # <<<<<<<<<<<<<<
@@ -47129,7 +47244,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":703
+    /* "src/lxml/xmlerror.pxi":707
  *     cdef char* c_str
  *     cdef int text_size, element_size, format_count, c_int
  *     if not __DEBUG or msg is NULL:             # <<<<<<<<<<<<<<
@@ -47138,7 +47253,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":705
+  /* "src/lxml/xmlerror.pxi":709
  *     if not __DEBUG or msg is NULL:
  *         return
  *     if msg[0] in b'\n\0':             # <<<<<<<<<<<<<<
@@ -47149,7 +47264,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     case '\x00':
     case '\n':
 
-    /* "src/lxml/xmlerror.pxi":706
+    /* "src/lxml/xmlerror.pxi":710
  *         return
  *     if msg[0] in b'\n\0':
  *         return             # <<<<<<<<<<<<<<
@@ -47158,7 +47273,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     goto __pyx_L0;
 
-    /* "src/lxml/xmlerror.pxi":705
+    /* "src/lxml/xmlerror.pxi":709
  *     if not __DEBUG or msg is NULL:
  *         return
  *     if msg[0] in b'\n\0':             # <<<<<<<<<<<<<<
@@ -47169,7 +47284,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     default: break;
   }
 
-  /* "src/lxml/xmlerror.pxi":708
+  /* "src/lxml/xmlerror.pxi":712
  *         return
  * 
  *     c_text = c_element = c_error.file = c_error.node = NULL             # <<<<<<<<<<<<<<
@@ -47181,7 +47296,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_v_c_error.file = NULL;
   __pyx_v_c_error.node = NULL;
 
-  /* "src/lxml/xmlerror.pxi":709
+  /* "src/lxml/xmlerror.pxi":713
  * 
  *     c_text = c_element = c_error.file = c_error.node = NULL
  *     c_error.line = 0             # <<<<<<<<<<<<<<
@@ -47190,7 +47305,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_error.line = 0;
 
-  /* "src/lxml/xmlerror.pxi":712
+  /* "src/lxml/xmlerror.pxi":716
  * 
  *     # parse "NAME %s" chunks from the format string
  *     c_name_pos = c_pos = msg             # <<<<<<<<<<<<<<
@@ -47200,7 +47315,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_v_c_name_pos = __pyx_v_msg;
   __pyx_v_c_pos = __pyx_v_msg;
 
-  /* "src/lxml/xmlerror.pxi":713
+  /* "src/lxml/xmlerror.pxi":717
  *     # parse "NAME %s" chunks from the format string
  *     c_name_pos = c_pos = msg
  *     format_count = 0             # <<<<<<<<<<<<<<
@@ -47209,7 +47324,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_format_count = 0;
 
-  /* "src/lxml/xmlerror.pxi":714
+  /* "src/lxml/xmlerror.pxi":718
  *     c_name_pos = c_pos = msg
  *     format_count = 0
  *     while c_pos[0]:             # <<<<<<<<<<<<<<
@@ -47220,7 +47335,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     __pyx_t_1 = ((__pyx_v_c_pos[0]) != 0);
     if (!__pyx_t_1) break;
 
-    /* "src/lxml/xmlerror.pxi":715
+    /* "src/lxml/xmlerror.pxi":719
  *     format_count = 0
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':             # <<<<<<<<<<<<<<
@@ -47230,7 +47345,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == '%') != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":716
+      /* "src/lxml/xmlerror.pxi":720
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':
  *             c_pos += 1             # <<<<<<<<<<<<<<
@@ -47239,7 +47354,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       __pyx_v_c_pos = (__pyx_v_c_pos + 1);
 
-      /* "src/lxml/xmlerror.pxi":717
+      /* "src/lxml/xmlerror.pxi":721
  *         if c_pos[0] == b'%':
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"             # <<<<<<<<<<<<<<
@@ -47249,7 +47364,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 's') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":718
+        /* "src/lxml/xmlerror.pxi":722
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -47258,7 +47373,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":719
+        /* "src/lxml/xmlerror.pxi":723
  *             if c_pos[0] == b's':  # "%s"
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)             # <<<<<<<<<<<<<<
@@ -47267,7 +47382,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_c_str = va_charptr(__pyx_v_args);
 
-        /* "src/lxml/xmlerror.pxi":720
+        /* "src/lxml/xmlerror.pxi":724
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:             # <<<<<<<<<<<<<<
@@ -47277,7 +47392,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         __pyx_t_1 = ((__pyx_v_c_pos == (__pyx_v_msg + 1)) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":721
+          /* "src/lxml/xmlerror.pxi":725
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."             # <<<<<<<<<<<<<<
@@ -47286,7 +47401,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
           __pyx_v_c_text = __pyx_v_c_str;
 
-          /* "src/lxml/xmlerror.pxi":720
+          /* "src/lxml/xmlerror.pxi":724
  *                 format_count += 1
  *                 c_str = cvarargs.va_charptr(args)
  *                 if c_pos == msg + 1:             # <<<<<<<<<<<<<<
@@ -47296,7 +47411,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
           goto __pyx_L8;
         }
 
-        /* "src/lxml/xmlerror.pxi":722
+        /* "src/lxml/xmlerror.pxi":726
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':             # <<<<<<<<<<<<<<
@@ -47306,7 +47421,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'e') != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":723
+          /* "src/lxml/xmlerror.pxi":727
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:             # <<<<<<<<<<<<<<
@@ -47316,7 +47431,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
           __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"element %s"), 10) == 0) != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/xmlerror.pxi":724
+            /* "src/lxml/xmlerror.pxi":728
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  *                         c_element = c_str             # <<<<<<<<<<<<<<
@@ -47325,7 +47440,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
             __pyx_v_c_element = __pyx_v_c_str;
 
-            /* "src/lxml/xmlerror.pxi":723
+            /* "src/lxml/xmlerror.pxi":727
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:             # <<<<<<<<<<<<<<
@@ -47334,7 +47449,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
           }
 
-          /* "src/lxml/xmlerror.pxi":722
+          /* "src/lxml/xmlerror.pxi":726
  *                 if c_pos == msg + 1:
  *                     c_text = c_str  # msg == "%s..."
  *                 elif c_name_pos[0] == b'e':             # <<<<<<<<<<<<<<
@@ -47344,7 +47459,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
           goto __pyx_L8;
         }
 
-        /* "src/lxml/xmlerror.pxi":725
+        /* "src/lxml/xmlerror.pxi":729
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':             # <<<<<<<<<<<<<<
@@ -47354,7 +47469,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         __pyx_t_1 = (((__pyx_v_c_name_pos[0]) == 'f') != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":726
+          /* "src/lxml/xmlerror.pxi":730
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:             # <<<<<<<<<<<<<<
@@ -47364,7 +47479,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
           __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"file %s"), 7) == 0) != 0);
           if (__pyx_t_1) {
 
-            /* "src/lxml/xmlerror.pxi":728
+            /* "src/lxml/xmlerror.pxi":732
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  *                                              c_str, 23) == 0:             # <<<<<<<<<<<<<<
@@ -47373,7 +47488,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
             __pyx_t_1 = ((strncmp(((char const *)"string://__STRING__XSLT"), __pyx_v_c_str, 23) == 0) != 0);
 
-            /* "src/lxml/xmlerror.pxi":727
+            /* "src/lxml/xmlerror.pxi":731
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  *                         if cstring_h.strncmp('string://__STRING__XSLT',             # <<<<<<<<<<<<<<
@@ -47382,7 +47497,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
             if (__pyx_t_1) {
 
-              /* "src/lxml/xmlerror.pxi":729
+              /* "src/lxml/xmlerror.pxi":733
  *                         if cstring_h.strncmp('string://__STRING__XSLT',
  *                                              c_str, 23) == 0:
  *                             c_str = '<xslt>'             # <<<<<<<<<<<<<<
@@ -47391,7 +47506,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
               __pyx_v_c_str = ((char *)"<xslt>");
 
-              /* "src/lxml/xmlerror.pxi":727
+              /* "src/lxml/xmlerror.pxi":731
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:
  *                         if cstring_h.strncmp('string://__STRING__XSLT',             # <<<<<<<<<<<<<<
@@ -47400,7 +47515,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
             }
 
-            /* "src/lxml/xmlerror.pxi":730
+            /* "src/lxml/xmlerror.pxi":734
  *                                              c_str, 23) == 0:
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str             # <<<<<<<<<<<<<<
@@ -47409,7 +47524,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
             __pyx_v_c_error.file = __pyx_v_c_str;
 
-            /* "src/lxml/xmlerror.pxi":726
+            /* "src/lxml/xmlerror.pxi":730
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':
  *                     if cstring_h.strncmp(c_name_pos, 'file %s', 7) == 0:             # <<<<<<<<<<<<<<
@@ -47418,7 +47533,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
           }
 
-          /* "src/lxml/xmlerror.pxi":725
+          /* "src/lxml/xmlerror.pxi":729
  *                     if cstring_h.strncmp(c_name_pos, 'element %s', 10) == 0:
  *                         c_element = c_str
  *                 elif c_name_pos[0] == b'f':             # <<<<<<<<<<<<<<
@@ -47428,7 +47543,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         }
         __pyx_L8:;
 
-        /* "src/lxml/xmlerror.pxi":717
+        /* "src/lxml/xmlerror.pxi":721
  *         if c_pos[0] == b'%':
  *             c_pos += 1
  *             if c_pos[0] == b's':  # "%s"             # <<<<<<<<<<<<<<
@@ -47438,7 +47553,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         goto __pyx_L7;
       }
 
-      /* "src/lxml/xmlerror.pxi":731
+      /* "src/lxml/xmlerror.pxi":735
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"             # <<<<<<<<<<<<<<
@@ -47448,7 +47563,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       __pyx_t_1 = (((__pyx_v_c_pos[0]) == 'd') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":732
+        /* "src/lxml/xmlerror.pxi":736
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -47457,7 +47572,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":733
+        /* "src/lxml/xmlerror.pxi":737
  *             elif c_pos[0] == b'd':  # "%d"
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)             # <<<<<<<<<<<<<<
@@ -47466,7 +47581,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_c_int = va_int(__pyx_v_args);
 
-        /* "src/lxml/xmlerror.pxi":734
+        /* "src/lxml/xmlerror.pxi":738
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:             # <<<<<<<<<<<<<<
@@ -47476,7 +47591,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         __pyx_t_1 = ((strncmp(__pyx_v_c_name_pos, ((char const *)"line %d"), 7) == 0) != 0);
         if (__pyx_t_1) {
 
-          /* "src/lxml/xmlerror.pxi":735
+          /* "src/lxml/xmlerror.pxi":739
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  *                     c_error.line = c_int             # <<<<<<<<<<<<<<
@@ -47485,7 +47600,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
           __pyx_v_c_error.line = __pyx_v_c_int;
 
-          /* "src/lxml/xmlerror.pxi":734
+          /* "src/lxml/xmlerror.pxi":738
  *                 format_count += 1
  *                 c_int = cvarargs.va_int(args)
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:             # <<<<<<<<<<<<<<
@@ -47494,7 +47609,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         }
 
-        /* "src/lxml/xmlerror.pxi":731
+        /* "src/lxml/xmlerror.pxi":735
  *                             c_str = '<xslt>'
  *                         c_error.file = c_str
  *             elif c_pos[0] == b'd':  # "%d"             # <<<<<<<<<<<<<<
@@ -47504,7 +47619,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
         goto __pyx_L7;
       }
 
-      /* "src/lxml/xmlerror.pxi":736
+      /* "src/lxml/xmlerror.pxi":740
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"             # <<<<<<<<<<<<<<
@@ -47514,7 +47629,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       __pyx_t_1 = (((__pyx_v_c_pos[0]) != '%') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":737
+        /* "src/lxml/xmlerror.pxi":741
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  *                 format_count += 1             # <<<<<<<<<<<<<<
@@ -47523,7 +47638,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_format_count = (__pyx_v_format_count + 1);
 
-        /* "src/lxml/xmlerror.pxi":738
+        /* "src/lxml/xmlerror.pxi":742
  *             elif c_pos[0] != b'%':  # "%%" == "%"
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort             # <<<<<<<<<<<<<<
@@ -47532,7 +47647,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         goto __pyx_L5_break;
 
-        /* "src/lxml/xmlerror.pxi":736
+        /* "src/lxml/xmlerror.pxi":740
  *                 if cstring_h.strncmp(c_name_pos, 'line %d', 7) == 0:
  *                     c_error.line = c_int
  *             elif c_pos[0] != b'%':  # "%%" == "%"             # <<<<<<<<<<<<<<
@@ -47542,7 +47657,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       }
       __pyx_L7:;
 
-      /* "src/lxml/xmlerror.pxi":715
+      /* "src/lxml/xmlerror.pxi":719
  *     format_count = 0
  *     while c_pos[0]:
  *         if c_pos[0] == b'%':             # <<<<<<<<<<<<<<
@@ -47552,7 +47667,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       goto __pyx_L6;
     }
 
-    /* "src/lxml/xmlerror.pxi":739
+    /* "src/lxml/xmlerror.pxi":743
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':             # <<<<<<<<<<<<<<
@@ -47562,7 +47677,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     __pyx_t_1 = (((__pyx_v_c_pos[0]) == ' ') != 0);
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":740
+      /* "src/lxml/xmlerror.pxi":744
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':             # <<<<<<<<<<<<<<
@@ -47572,7 +47687,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       __pyx_t_1 = (((__pyx_v_c_pos[1]) != '%') != 0);
       if (__pyx_t_1) {
 
-        /* "src/lxml/xmlerror.pxi":741
+        /* "src/lxml/xmlerror.pxi":745
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':
  *                 c_name_pos = c_pos + 1             # <<<<<<<<<<<<<<
@@ -47581,7 +47696,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
         __pyx_v_c_name_pos = (__pyx_v_c_pos + 1);
 
-        /* "src/lxml/xmlerror.pxi":740
+        /* "src/lxml/xmlerror.pxi":744
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':
  *             if c_pos[1] != b'%':             # <<<<<<<<<<<<<<
@@ -47590,7 +47705,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       }
 
-      /* "src/lxml/xmlerror.pxi":739
+      /* "src/lxml/xmlerror.pxi":743
  *                 format_count += 1
  *                 break  # unexpected format or end of string => abort
  *         elif c_pos[0] == b' ':             # <<<<<<<<<<<<<<
@@ -47600,7 +47715,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     }
     __pyx_L6:;
 
-    /* "src/lxml/xmlerror.pxi":742
+    /* "src/lxml/xmlerror.pxi":746
  *             if c_pos[1] != b'%':
  *                 c_name_pos = c_pos + 1
  *         c_pos += 1             # <<<<<<<<<<<<<<
@@ -47611,7 +47726,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   }
   __pyx_L5_break:;
 
-  /* "src/lxml/xmlerror.pxi":744
+  /* "src/lxml/xmlerror.pxi":748
  *         c_pos += 1
  * 
  *     c_message = NULL             # <<<<<<<<<<<<<<
@@ -47620,7 +47735,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_message = NULL;
 
-  /* "src/lxml/xmlerror.pxi":745
+  /* "src/lxml/xmlerror.pxi":749
  * 
  *     c_message = NULL
  *     if c_text is NULL:             # <<<<<<<<<<<<<<
@@ -47630,7 +47745,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_t_1 = ((__pyx_v_c_text == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":746
+    /* "src/lxml/xmlerror.pxi":750
  *     c_message = NULL
  *     if c_text is NULL:
  *         if c_element is not NULL and format_count == 1:             # <<<<<<<<<<<<<<
@@ -47648,7 +47763,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     __pyx_L16_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "src/lxml/xmlerror.pxi":748
+      /* "src/lxml/xmlerror.pxi":752
  *         if c_element is not NULL and format_count == 1:
  *             # special case: a single occurrence of 'element %s'
  *             text_size    = cstring_h.strlen(msg)             # <<<<<<<<<<<<<<
@@ -47657,7 +47772,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       __pyx_v_text_size = strlen(__pyx_v_msg);
 
-      /* "src/lxml/xmlerror.pxi":749
+      /* "src/lxml/xmlerror.pxi":753
  *             # special case: a single occurrence of 'element %s'
  *             text_size    = cstring_h.strlen(msg)
  *             element_size = cstring_h.strlen(c_element)             # <<<<<<<<<<<<<<
@@ -47666,7 +47781,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       __pyx_v_element_size = strlen(__pyx_v_c_element);
 
-      /* "src/lxml/xmlerror.pxi":750
+      /* "src/lxml/xmlerror.pxi":754
  *             text_size    = cstring_h.strlen(msg)
  *             element_size = cstring_h.strlen(c_element)
  *             c_message = <char*>stdlib.malloc(             # <<<<<<<<<<<<<<
@@ -47675,7 +47790,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       __pyx_v_c_message = ((char *)malloc((((__pyx_v_text_size + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
-      /* "src/lxml/xmlerror.pxi":752
+      /* "src/lxml/xmlerror.pxi":756
  *             c_message = <char*>stdlib.malloc(
  *                 (text_size + element_size + 1) * sizeof(char))
  *             stdio.sprintf(c_message, msg, c_element)             # <<<<<<<<<<<<<<
@@ -47684,7 +47799,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       (void)(sprintf(__pyx_v_c_message, __pyx_v_msg, __pyx_v_c_element));
 
-      /* "src/lxml/xmlerror.pxi":753
+      /* "src/lxml/xmlerror.pxi":757
  *                 (text_size + element_size + 1) * sizeof(char))
  *             stdio.sprintf(c_message, msg, c_element)
  *             c_error.message = c_message             # <<<<<<<<<<<<<<
@@ -47693,7 +47808,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
       __pyx_v_c_error.message = __pyx_v_c_message;
 
-      /* "src/lxml/xmlerror.pxi":746
+      /* "src/lxml/xmlerror.pxi":750
  *     c_message = NULL
  *     if c_text is NULL:
  *         if c_element is not NULL and format_count == 1:             # <<<<<<<<<<<<<<
@@ -47703,7 +47818,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
       goto __pyx_L15;
     }
 
-    /* "src/lxml/xmlerror.pxi":755
+    /* "src/lxml/xmlerror.pxi":759
  *             c_error.message = c_message
  *         else:
  *             c_error.message = ''             # <<<<<<<<<<<<<<
@@ -47715,7 +47830,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     }
     __pyx_L15:;
 
-    /* "src/lxml/xmlerror.pxi":745
+    /* "src/lxml/xmlerror.pxi":749
  * 
  *     c_message = NULL
  *     if c_text is NULL:             # <<<<<<<<<<<<<<
@@ -47725,7 +47840,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     goto __pyx_L14;
   }
 
-  /* "src/lxml/xmlerror.pxi":756
+  /* "src/lxml/xmlerror.pxi":760
  *         else:
  *             c_error.message = ''
  *     elif c_element is NULL:             # <<<<<<<<<<<<<<
@@ -47735,7 +47850,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_t_1 = ((__pyx_v_c_element == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":757
+    /* "src/lxml/xmlerror.pxi":761
  *             c_error.message = ''
  *     elif c_element is NULL:
  *         c_error.message = c_text             # <<<<<<<<<<<<<<
@@ -47744,7 +47859,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     __pyx_v_c_error.message = __pyx_v_c_text;
 
-    /* "src/lxml/xmlerror.pxi":756
+    /* "src/lxml/xmlerror.pxi":760
  *         else:
  *             c_error.message = ''
  *     elif c_element is NULL:             # <<<<<<<<<<<<<<
@@ -47754,7 +47869,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
     goto __pyx_L14;
   }
 
-  /* "src/lxml/xmlerror.pxi":759
+  /* "src/lxml/xmlerror.pxi":763
  *         c_error.message = c_text
  *     else:
  *         text_size    = cstring_h.strlen(c_text)             # <<<<<<<<<<<<<<
@@ -47764,7 +47879,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   /*else*/ {
     __pyx_v_text_size = strlen(__pyx_v_c_text);
 
-    /* "src/lxml/xmlerror.pxi":760
+    /* "src/lxml/xmlerror.pxi":764
  *     else:
  *         text_size    = cstring_h.strlen(c_text)
  *         element_size = cstring_h.strlen(c_element)             # <<<<<<<<<<<<<<
@@ -47773,7 +47888,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     __pyx_v_element_size = strlen(__pyx_v_c_element);
 
-    /* "src/lxml/xmlerror.pxi":761
+    /* "src/lxml/xmlerror.pxi":765
  *         text_size    = cstring_h.strlen(c_text)
  *         element_size = cstring_h.strlen(c_element)
  *         c_message = <char*>stdlib.malloc(             # <<<<<<<<<<<<<<
@@ -47782,7 +47897,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     __pyx_v_c_message = ((char *)malloc(((((__pyx_v_text_size + 12) + __pyx_v_element_size) + 1) * (sizeof(char)))));
 
-    /* "src/lxml/xmlerror.pxi":763
+    /* "src/lxml/xmlerror.pxi":767
  *         c_message = <char*>stdlib.malloc(
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  *         stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)             # <<<<<<<<<<<<<<
@@ -47791,7 +47906,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     (void)(sprintf(__pyx_v_c_message, ((char const *)"%s, element '%s'"), __pyx_v_c_text, __pyx_v_c_element));
 
-    /* "src/lxml/xmlerror.pxi":764
+    /* "src/lxml/xmlerror.pxi":768
  *             (text_size + 12 + element_size + 1) * sizeof(char))
  *         stdio.sprintf(c_message, "%s, element '%s'", c_text, c_element)
  *         c_error.message = c_message             # <<<<<<<<<<<<<<
@@ -47802,7 +47917,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   }
   __pyx_L14:;
 
-  /* "src/lxml/xmlerror.pxi":766
+  /* "src/lxml/xmlerror.pxi":770
  *         c_error.message = c_message
  * 
  *     c_error.domain = c_domain             # <<<<<<<<<<<<<<
@@ -47811,7 +47926,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_error.domain = __pyx_v_c_domain;
 
-  /* "src/lxml/xmlerror.pxi":767
+  /* "src/lxml/xmlerror.pxi":771
  * 
  *     c_error.domain = c_domain
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?             # <<<<<<<<<<<<<<
@@ -47820,7 +47935,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_error.code = XML_ERR_OK;
 
-  /* "src/lxml/xmlerror.pxi":768
+  /* "src/lxml/xmlerror.pxi":772
  *     c_error.domain = c_domain
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?             # <<<<<<<<<<<<<<
@@ -47829,7 +47944,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_error.level = XML_ERR_ERROR;
 
-  /* "src/lxml/xmlerror.pxi":769
+  /* "src/lxml/xmlerror.pxi":773
  *     c_error.code   = xmlerror.XML_ERR_OK    # what else?
  *     c_error.level  = xmlerror.XML_ERR_ERROR # what else?
  *     c_error.int2   = 0             # <<<<<<<<<<<<<<
@@ -47838,7 +47953,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_v_c_error.int2 = 0;
 
-  /* "src/lxml/xmlerror.pxi":771
+  /* "src/lxml/xmlerror.pxi":775
  *     c_error.int2   = 0
  * 
  *     _forwardError(c_log_handler, &c_error)             # <<<<<<<<<<<<<<
@@ -47847,7 +47962,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   __pyx_f_4lxml_5etree__forwardError(__pyx_v_c_log_handler, (&__pyx_v_c_error));
 
-  /* "src/lxml/xmlerror.pxi":773
+  /* "src/lxml/xmlerror.pxi":777
  *     _forwardError(c_log_handler, &c_error)
  * 
  *     if c_message is not NULL:             # <<<<<<<<<<<<<<
@@ -47857,7 +47972,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_t_1 = ((__pyx_v_c_message != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "src/lxml/xmlerror.pxi":774
+    /* "src/lxml/xmlerror.pxi":778
  * 
  *     if c_message is not NULL:
  *         stdlib.free(c_message)             # <<<<<<<<<<<<<<
@@ -47866,7 +47981,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
     free(__pyx_v_c_message);
 
-    /* "src/lxml/xmlerror.pxi":773
+    /* "src/lxml/xmlerror.pxi":777
  *     _forwardError(c_log_handler, &c_error)
  * 
  *     if c_message is not NULL:             # <<<<<<<<<<<<<<
@@ -47875,7 +47990,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
  */
   }
 
-  /* "src/lxml/xmlerror.pxi":692
+  /* "src/lxml/xmlerror.pxi":696
  * 
  * 
  * cdef void _receiveGenericError(void* c_log_handler, int c_domain,             # <<<<<<<<<<<<<<
@@ -47887,7 +48002,7 @@ static void __pyx_f_4lxml_5etree__receiveGenericError(void *__pyx_v_c_log_handle
   __pyx_L0:;
 }
 
-/* "src/lxml/xmlerror.pxi":780
+/* "src/lxml/xmlerror.pxi":784
  * ################################################################################
  * 
  * cdef __initErrorConstants():             # <<<<<<<<<<<<<<
@@ -47920,16 +48035,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("__initErrorConstants", 0);
 
-  /* "src/lxml/xmlerror.pxi":783
+  /* "src/lxml/xmlerror.pxi":787
  *     "Called at setup time to parse the constants and build the classes below."
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),             # <<<<<<<<<<<<<<
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorLevels); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 787, __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)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -47938,16 +48053,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_v_4lxml_5etree___ERROR_LEVELS);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":784
+  /* "src/lxml/xmlerror.pxi":788
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),             # <<<<<<<<<<<<<<
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 784, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorDomains); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 788, __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)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 788, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_1);
@@ -47956,16 +48071,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_4lxml_5etree___ERROR_DOMAINS);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":785
+  /* "src/lxml/xmlerror.pxi":789
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),             # <<<<<<<<<<<<<<
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  * 
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 785, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 789, __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)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_1);
@@ -47974,16 +48089,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_4lxml_5etree___PARSER_ERROR_TYPES);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":786
+  /* "src/lxml/xmlerror.pxi":790
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))             # <<<<<<<<<<<<<<
  * 
  *     for cls, constants in const_defs:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 786, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_RelaxNGErrorTypes); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 790, __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)
+  __pyx_t_5 = PyTuple_New(2); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 790, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_1);
@@ -47992,14 +48107,14 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   PyTuple_SET_ITEM(__pyx_t_5, 1, __pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":783
+  /* "src/lxml/xmlerror.pxi":787
  *     "Called at setup time to parse the constants and build the classes below."
  *     global __ERROR_LEVELS, __ERROR_DOMAINS, __PARSER_ERROR_TYPES, __RELAXNG_ERROR_TYPES
  *     const_defs = ((ErrorLevels,          __ERROR_LEVELS),             # <<<<<<<<<<<<<<
  *                   (ErrorDomains,         __ERROR_DOMAINS),
  *                   (ErrorTypes,           __PARSER_ERROR_TYPES),
  */
-  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 783, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_t_2);
@@ -48016,7 +48131,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   __pyx_v_const_defs = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":788
+  /* "src/lxml/xmlerror.pxi":792
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  * 
  *     for cls, constants in const_defs:             # <<<<<<<<<<<<<<
@@ -48027,9 +48142,9 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   for (;;) {
     if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 788, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_6); __Pyx_INCREF(__pyx_t_5); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(1, 792, __pyx_L1_error)
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 788, __pyx_L1_error)
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 792, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if (likely(__pyx_t_5 != Py_None)) {
@@ -48038,7 +48153,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(1, 788, __pyx_L1_error)
+        __PYX_ERR(1, 792, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       __pyx_t_4 = PyTuple_GET_ITEM(sequence, 0); 
@@ -48046,61 +48161,61 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_3);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 788, __pyx_L1_error)
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 788, __pyx_L1_error)
+      __pyx_t_3 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 792, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
-      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 788, __pyx_L1_error)
+      __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(1, 792, __pyx_L1_error)
     }
     __Pyx_XDECREF_SET(__pyx_v_cls, __pyx_t_4);
     __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_constants, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "src/lxml/xmlerror.pxi":789
+    /* "src/lxml/xmlerror.pxi":793
  * 
  *     for cls, constants in const_defs:
  *         reverse_dict = {}             # <<<<<<<<<<<<<<
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  */
-    __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 789, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 793, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_XDECREF_SET(__pyx_v_reverse_dict, ((PyObject*)__pyx_t_5));
     __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":790
+    /* "src/lxml/xmlerror.pxi":794
  *     for cls, constants in const_defs:
  *         reverse_dict = {}
  *         cls._names   = reverse_dict             # <<<<<<<<<<<<<<
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():
  */
-    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_names, __pyx_v_reverse_dict) < 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, 794, __pyx_L1_error)
 
-    /* "src/lxml/xmlerror.pxi":791
+    /* "src/lxml/xmlerror.pxi":795
  *         reverse_dict = {}
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get             # <<<<<<<<<<<<<<
  *         for line in constants.splitlines():
  *             if not line:
  */
-    __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_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_reverse_dict, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 795, __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)
+    if (__Pyx_PyObject_SetAttrStr(__pyx_v_cls, __pyx_n_s_getName, __pyx_t_5) < 0) __PYX_ERR(1, 795, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-    /* "src/lxml/xmlerror.pxi":792
+    /* "src/lxml/xmlerror.pxi":796
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():             # <<<<<<<<<<<<<<
  *             if not line:
  *                 continue
  */
-    __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_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_constants, __pyx_n_s_splitlines); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -48114,16 +48229,16 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
     }
     __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 792, __pyx_L1_error)
+    if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 796, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
       __pyx_t_3 = __pyx_t_5; __Pyx_INCREF(__pyx_t_3); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
     } else {
-      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 792, __pyx_L1_error)
+      __pyx_t_7 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_3)) __PYX_ERR(1, 796, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 792, __pyx_L1_error)
+      __pyx_t_8 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(1, 796, __pyx_L1_error)
     }
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     for (;;) {
@@ -48131,17 +48246,17 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 792, __pyx_L1_error)
+          __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 796, __pyx_L1_error)
           #else
-          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 792, __pyx_L1_error)
+          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 796, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           #endif
         } else {
           if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 792, __pyx_L1_error)
+          __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_7); __Pyx_INCREF(__pyx_t_5); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(1, 796, __pyx_L1_error)
           #else
-          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 792, __pyx_L1_error)
+          __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 796, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
           #endif
         }
@@ -48151,7 +48266,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(1, 792, __pyx_L1_error)
+            else __PYX_ERR(1, 796, __pyx_L1_error)
           }
           break;
         }
@@ -48160,18 +48275,18 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __Pyx_XDECREF_SET(__pyx_v_line, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/xmlerror.pxi":793
+      /* "src/lxml/xmlerror.pxi":797
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():
  *             if not line:             # <<<<<<<<<<<<<<
  *                 continue
  *             name, value = line.split('=')
  */
-      __pyx_t_9 = __Pyx_PyObject_IsTrue(__pyx_v_line); if (unlikely(__pyx_t_9 < 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, 797, __pyx_L1_error)
       __pyx_t_10 = ((!__pyx_t_9) != 0);
       if (__pyx_t_10) {
 
-        /* "src/lxml/xmlerror.pxi":794
+        /* "src/lxml/xmlerror.pxi":798
  *         for line in constants.splitlines():
  *             if not line:
  *                 continue             # <<<<<<<<<<<<<<
@@ -48180,7 +48295,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  */
         goto __pyx_L5_continue;
 
-        /* "src/lxml/xmlerror.pxi":793
+        /* "src/lxml/xmlerror.pxi":797
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():
  *             if not line:             # <<<<<<<<<<<<<<
@@ -48189,14 +48304,14 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
  */
       }
 
-      /* "src/lxml/xmlerror.pxi":795
+      /* "src/lxml/xmlerror.pxi":799
  *             if not line:
  *                 continue
  *             name, value = line.split('=')             # <<<<<<<<<<<<<<
  *             value = int(value)
  *             setattr(cls, name, value)
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 795, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_line, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 799, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_2 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -48210,7 +48325,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       }
       __pyx_t_5 = (__pyx_t_2) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_2, __pyx_kp_s__20) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_kp_s__20);
       __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
-      if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 795, __pyx_L1_error)
+      if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 799, __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))) {
@@ -48219,7 +48334,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          __PYX_ERR(1, 795, __pyx_L1_error)
+          __PYX_ERR(1, 799, __pyx_L1_error)
         }
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -48232,15 +48347,15 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         __Pyx_INCREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_2);
         #else
-        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 795, __pyx_L1_error)
+        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(1, 799, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 795, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(1, 799, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 795, __pyx_L1_error)
+        __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(1, 799, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
@@ -48248,7 +48363,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         __Pyx_GOTREF(__pyx_t_4);
         index = 1; __pyx_t_2 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_2)) goto __pyx_L8_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_2);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(1, 795, __pyx_L1_error)
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(1, 799, __pyx_L1_error)
         __pyx_t_12 = NULL;
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         goto __pyx_L9_unpacking_done;
@@ -48256,7 +48371,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __pyx_t_12 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        __PYX_ERR(1, 795, __pyx_L1_error)
+        __PYX_ERR(1, 799, __pyx_L1_error)
         __pyx_L9_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_4);
@@ -48264,37 +48379,37 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
       __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "src/lxml/xmlerror.pxi":796
+      /* "src/lxml/xmlerror.pxi":800
  *                 continue
  *             name, value = line.split('=')
  *             value = int(value)             # <<<<<<<<<<<<<<
  *             setattr(cls, name, value)
  *             reverse_dict[value] = name
  */
-      __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 796, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyNumber_Int(__pyx_v_value); if (unlikely(!__pyx_t_5)) __PYX_ERR(1, 800, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "src/lxml/xmlerror.pxi":797
+      /* "src/lxml/xmlerror.pxi":801
  *             name, value = line.split('=')
  *             value = int(value)
  *             setattr(cls, name, value)             # <<<<<<<<<<<<<<
  *             reverse_dict[value] = name
  * 
  */
-      __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)
+      __pyx_t_13 = PyObject_SetAttr(__pyx_v_cls, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_13 == ((int)-1))) __PYX_ERR(1, 801, __pyx_L1_error)
 
-      /* "src/lxml/xmlerror.pxi":798
+      /* "src/lxml/xmlerror.pxi":802
  *             value = int(value)
  *             setattr(cls, name, value)
  *             reverse_dict[value] = name             # <<<<<<<<<<<<<<
  * 
  *     # discard the global tuple references after use
  */
-      if (unlikely(PyDict_SetItem(__pyx_v_reverse_dict, __pyx_v_value, __pyx_v_name) < 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, 802, __pyx_L1_error)
 
-      /* "src/lxml/xmlerror.pxi":792
+      /* "src/lxml/xmlerror.pxi":796
  *         cls._names   = reverse_dict
  *         cls._getName = reverse_dict.get
  *         for line in constants.splitlines():             # <<<<<<<<<<<<<<
@@ -48305,7 +48420,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
     }
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "src/lxml/xmlerror.pxi":788
+    /* "src/lxml/xmlerror.pxi":792
  *                   (RelaxNGErrorTypes,    __RELAXNG_ERROR_TYPES))
  * 
  *     for cls, constants in const_defs:             # <<<<<<<<<<<<<<
@@ -48315,7 +48430,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "src/lxml/xmlerror.pxi":801
+  /* "src/lxml/xmlerror.pxi":805
  * 
  *     # discard the global tuple references after use
  *     __ERROR_LEVELS = __ERROR_DOMAINS = __PARSER_ERROR_TYPES = __RELAXNG_ERROR_TYPES = None             # <<<<<<<<<<<<<<
@@ -48339,7 +48454,7 @@ static PyObject *__pyx_f_4lxml_5etree___initErrorConstants(void) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, Py_None);
   __Pyx_GIVEREF(Py_None);
 
-  /* "src/lxml/xmlerror.pxi":780
+  /* "src/lxml/xmlerror.pxi":784
  * ################################################################################
  * 
  * cdef __initErrorConstants():             # <<<<<<<<<<<<<<
@@ -50193,7 +50308,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"             # <<<<<<<<<<<<<<
  * 
- *     property root_name:
+ *     @property
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Could_not_find_root_node, 0, 0);
     __PYX_ERR(0, 516, __pyx_L1_error)
@@ -50234,12 +50349,12 @@ static int __pyx_pf_4lxml_5etree_7DocInfo___cinit__(struct __pyx_obj_4lxml_5etre
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":520
- *     property root_name:
- *         u"Returns the name of the root node as defined by the DOCTYPE."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             return root_name
+/* "lxml/etree.pyx":519
+ * 
+ *     @property
+ *     def root_name(self):             # <<<<<<<<<<<<<<
+ *         """Returns the name of the root node as defined by the DOCTYPE."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
  */
 
 /* Python wrapper */
@@ -50270,10 +50385,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":521
- *         u"Returns the name of the root node as defined by the DOCTYPE."
- *         def __get__(self):
- *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
- *             return root_name
+ *     def root_name(self):
+ *         """Returns the name of the root node as defined by the DOCTYPE."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
+ *         return root_name
  * 
  */
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 521, __pyx_L1_error)
@@ -50339,9 +50454,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   __pyx_t_4 = 0;
 
   /* "lxml/etree.pyx":522
- *         def __get__(self):
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             return root_name             # <<<<<<<<<<<<<<
+ *         """Returns the name of the root node as defined by the DOCTYPE."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
+ *         return root_name             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
@@ -50350,12 +50465,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
   __pyx_r = __pyx_v_root_name;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":520
- *     property root_name:
- *         u"Returns the name of the root node as defined by the DOCTYPE."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             return root_name
+  /* "lxml/etree.pyx":519
+ * 
+ *     @property
+ *     def root_name(self):             # <<<<<<<<<<<<<<
+ *         """Returns the name of the root node as defined by the DOCTYPE."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
  */
 
   /* function exit code */
@@ -50380,7 +50495,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_9root_name___get__(struct __pyx_
  * 
  *     @cython.final
  *     cdef tree.xmlDtd* _get_c_dtd(self):             # <<<<<<<<<<<<<<
- *         u"""Return the DTD. Create it if it does not yet exist."""
+ *         """"Return the DTD. Create it if it does not yet exist."""
  *         cdef xmlDoc* c_doc = self._doc._c_doc
  */
 
@@ -50397,7 +50512,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
 
   /* "lxml/etree.pyx":527
  *     cdef tree.xmlDtd* _get_c_dtd(self):
- *         u"""Return the DTD. Create it if it does not yet exist."""
+ *         """"Return the DTD. Create it if it does not yet exist."""
  *         cdef xmlDoc* c_doc = self._doc._c_doc             # <<<<<<<<<<<<<<
  *         cdef xmlNode* c_root_node
  *         cdef const_xmlChar* c_name
@@ -50471,7 +50586,7 @@ static xmlDtd *__pyx_f_4lxml_5etree_7DocInfo__get_c_dtd(struct __pyx_obj_4lxml_5
  * 
  *     @cython.final
  *     cdef tree.xmlDtd* _get_c_dtd(self):             # <<<<<<<<<<<<<<
- *         u"""Return the DTD. Create it if it does not yet exist."""
+ *         """"Return the DTD. Create it if it does not yet exist."""
  *         cdef xmlDoc* c_doc = self._doc._c_doc
  */
 
@@ -51432,7 +51547,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             # <<<<<<<<<<<<<<
  * 
- *     property xml_version:
+ *     @property
  */
   __pyx_v_c_dtd->SystemID = __pyx_v_c_value;
 
@@ -51457,12 +51572,12 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_10system_url_2__set__(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":609
- *     property xml_version:
- *         u"Returns the XML version as declared by the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return xml_version
+/* "lxml/etree.pyx":608
+ * 
+ *     @property
+ *     def xml_version(self):             # <<<<<<<<<<<<<<
+ *         """Returns the XML version as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
  */
 
 /* Python wrapper */
@@ -51491,10 +51606,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":610
- *         u"Returns the XML version as declared by the document."
- *         def __get__(self):
- *             xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
- *             return xml_version
+ *     def xml_version(self):
+ *         """Returns the XML version as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
+ *         return xml_version
  * 
  */
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getxmlinfo(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 610, __pyx_L1_error)
@@ -51551,23 +51666,23 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   __pyx_t_3 = 0;
 
   /* "lxml/etree.pyx":611
- *         def __get__(self):
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return xml_version             # <<<<<<<<<<<<<<
+ *         """Returns the XML version as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
+ *         return xml_version             # <<<<<<<<<<<<<<
  * 
- *     property encoding:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_xml_version);
   __pyx_r = __pyx_v_xml_version;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":609
- *     property xml_version:
- *         u"Returns the XML version as declared by the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return xml_version
+  /* "lxml/etree.pyx":608
+ * 
+ *     @property
+ *     def xml_version(self):             # <<<<<<<<<<<<<<
+ *         """Returns the XML version as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
  */
 
   /* function exit code */
@@ -51586,12 +51701,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11xml_version___get__(struct __p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":615
- *     property encoding:
- *         u"Returns the encoding name as declared by the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return encoding
+/* "lxml/etree.pyx":614
+ * 
+ *     @property
+ *     def encoding(self):             # <<<<<<<<<<<<<<
+ *         """Returns the encoding name as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
  */
 
 /* Python wrapper */
@@ -51620,10 +51735,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":616
- *         u"Returns the encoding name as declared by the document."
- *         def __get__(self):
- *             xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
- *             return encoding
+ *     def encoding(self):
+ *         """Returns the encoding name as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()             # <<<<<<<<<<<<<<
+ *         return encoding
  * 
  */
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getxmlinfo(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 616, __pyx_L1_error)
@@ -51680,23 +51795,23 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   __pyx_t_3 = 0;
 
   /* "lxml/etree.pyx":617
- *         def __get__(self):
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return encoding             # <<<<<<<<<<<<<<
+ *         """Returns the encoding name as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
+ *         return encoding             # <<<<<<<<<<<<<<
  * 
- *     property standalone:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_encoding);
   __pyx_r = __pyx_v_encoding;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":615
- *     property encoding:
- *         u"Returns the encoding name as declared by the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             xml_version, encoding = self._doc.getxmlinfo()
- *             return encoding
+  /* "lxml/etree.pyx":614
+ * 
+ *     @property
+ *     def encoding(self):             # <<<<<<<<<<<<<<
+ *         """Returns the encoding name as declared by the document."""
+ *         xml_version, encoding = self._doc.getxmlinfo()
  */
 
   /* function exit code */
@@ -51715,12 +51830,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_8encoding___get__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":627
- *         ``standalone`` flag was set to ``'yes'`` or not.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._doc.isstandalone()
+/* "lxml/etree.pyx":620
  * 
+ *     @property
+ *     def standalone(self):             # <<<<<<<<<<<<<<
+ *         """Returns the standalone flag as declared by the document.  The possible
+ *         values are True (``standalone='yes'``), False
  */
 
 /* Python wrapper */
@@ -51743,9 +51858,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(struct __py
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":628
+ *         ``standalone`` flag was set to ``'yes'`` or not.
  *         """
- *         def __get__(self):
- *             return self._doc.isstandalone()             # <<<<<<<<<<<<<<
+ *         return self._doc.isstandalone()             # <<<<<<<<<<<<<<
  * 
  *     property URL:
  */
@@ -51756,12 +51871,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_10standalone___get__(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":627
- *         ``standalone`` flag was set to ``'yes'`` or not.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._doc.isstandalone()
+  /* "lxml/etree.pyx":620
  * 
+ *     @property
+ *     def standalone(self):             # <<<<<<<<<<<<<<
+ *         """Returns the standalone flag as declared by the document.  The possible
+ *         values are True (``standalone='yes'``), False
  */
 
   /* function exit code */
@@ -51977,7 +52092,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)             # <<<<<<<<<<<<<<
  * 
- *     property doctype:
+ *     @property
  */
     xmlFree(((void *)__pyx_v_c_oldurl));
 
@@ -52011,12 +52126,12 @@ static int __pyx_pf_4lxml_5etree_7DocInfo_3URL_2__set__(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":648
- *     property doctype:
- *         u"Returns a DOCTYPE declaration string for the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             if system_url:
+/* "lxml/etree.pyx":647
+ * 
+ *     @property
+ *     def doctype(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DOCTYPE declaration string for the document."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
  */
 
 /* Python wrapper */
@@ -52052,11 +52167,11 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":649
- *         u"Returns a DOCTYPE declaration string for the document."
- *         def __get__(self):
- *             root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
- *             if system_url:
- *                 # If '"' in system_url, we must escape it with single
+ *     def doctype(self):
+ *         """Returns a DOCTYPE declaration string for the document."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()             # <<<<<<<<<<<<<<
+ *         if system_url:
+ *             # If '"' in system_url, we must escape it with single
  */
   __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getdoctype(__pyx_v_self->_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 649, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -52121,32 +52236,32 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   __pyx_t_4 = 0;
 
   /* "lxml/etree.pyx":650
- *         def __get__(self):
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             if system_url:             # <<<<<<<<<<<<<<
- *                 # If '"' in system_url, we must escape it with single
- *                 # quotes, otherwise escape with double quotes. If url
+ *         """Returns a DOCTYPE declaration string for the document."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
+ *         if system_url:             # <<<<<<<<<<<<<<
+ *             # If '"' in system_url, we must escape it with single
+ *             # quotes, otherwise escape with double quotes. If url
  */
   __pyx_t_7 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 650, __pyx_L1_error)
   if (__pyx_t_7) {
 
     /* "lxml/etree.pyx":655
- *                 # contains both a single quote and a double quote, XML
- *                 # standard is being violated.
- *                 if '"' in system_url:             # <<<<<<<<<<<<<<
- *                     quoted_system_url = f"'{system_url}'"
- *                 else:
+ *             # contains both a single quote and a double quote, XML
+ *             # standard is being violated.
+ *             if '"' in system_url:             # <<<<<<<<<<<<<<
+ *                 quoted_system_url = f"'{system_url}'"
+ *             else:
  */
     __pyx_t_7 = (__Pyx_PySequence_ContainsTF(__pyx_kp_s__22, __pyx_v_system_url, Py_EQ)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 655, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
 
       /* "lxml/etree.pyx":656
- *                 # standard is being violated.
- *                 if '"' in system_url:
- *                     quoted_system_url = f"'{system_url}'"             # <<<<<<<<<<<<<<
- *                 else:
- *                     quoted_system_url = f'"{system_url}"'
+ *             # standard is being violated.
+ *             if '"' in system_url:
+ *                 quoted_system_url = f"'{system_url}'"             # <<<<<<<<<<<<<<
+ *             else:
+ *                 quoted_system_url = f'"{system_url}"'
  */
       __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 656, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
@@ -52174,21 +52289,21 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       __pyx_t_4 = 0;
 
       /* "lxml/etree.pyx":655
- *                 # contains both a single quote and a double quote, XML
- *                 # standard is being violated.
- *                 if '"' in system_url:             # <<<<<<<<<<<<<<
- *                     quoted_system_url = f"'{system_url}'"
- *                 else:
+ *             # contains both a single quote and a double quote, XML
+ *             # standard is being violated.
+ *             if '"' in system_url:             # <<<<<<<<<<<<<<
+ *                 quoted_system_url = f"'{system_url}'"
+ *             else:
  */
       goto __pyx_L6;
     }
 
     /* "lxml/etree.pyx":658
- *                     quoted_system_url = f"'{system_url}'"
- *                 else:
- *                     quoted_system_url = f'"{system_url}"'             # <<<<<<<<<<<<<<
- *             if public_id:
- *                 if system_url:
+ *                 quoted_system_url = f"'{system_url}'"
+ *             else:
+ *                 quoted_system_url = f'"{system_url}"'             # <<<<<<<<<<<<<<
+ *         if public_id:
+ *             if system_url:
  */
     /*else*/ {
       __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 658, __pyx_L1_error)
@@ -52219,40 +52334,40 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     __pyx_L6:;
 
     /* "lxml/etree.pyx":650
- *         def __get__(self):
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             if system_url:             # <<<<<<<<<<<<<<
- *                 # If '"' in system_url, we must escape it with single
- *                 # quotes, otherwise escape with double quotes. If url
+ *         """Returns a DOCTYPE declaration string for the document."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
+ *         if system_url:             # <<<<<<<<<<<<<<
+ *             # If '"' in system_url, we must escape it with single
+ *             # quotes, otherwise escape with double quotes. If url
  */
   }
 
   /* "lxml/etree.pyx":659
- *                 else:
- *                     quoted_system_url = f'"{system_url}"'
- *             if public_id:             # <<<<<<<<<<<<<<
- *                 if system_url:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
+ *             else:
+ *                 quoted_system_url = f'"{system_url}"'
+ *         if public_id:             # <<<<<<<<<<<<<<
+ *             if system_url:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
  */
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_public_id); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 659, __pyx_L1_error)
   if (__pyx_t_8) {
 
     /* "lxml/etree.pyx":660
- *                     quoted_system_url = f'"{system_url}"'
- *             if public_id:
- *                 if system_url:             # <<<<<<<<<<<<<<
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
- *                 else:
+ *                 quoted_system_url = f'"{system_url}"'
+ *         if public_id:
+ *             if system_url:             # <<<<<<<<<<<<<<
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
+ *             else:
  */
     __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 660, __pyx_L1_error)
     if (__pyx_t_8) {
 
       /* "lxml/etree.pyx":661
- *             if public_id:
- *                 if system_url:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'             # <<<<<<<<<<<<<<
- *                 else:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
+ *         if public_id:
+ *             if system_url:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'             # <<<<<<<<<<<<<<
+ *             else:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
  */
       __Pyx_XDECREF(__pyx_r);
       __pyx_t_1 = PyTuple_New(7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 661, __pyx_L1_error)
@@ -52303,20 +52418,20 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
       goto __pyx_L0;
 
       /* "lxml/etree.pyx":660
- *                     quoted_system_url = f'"{system_url}"'
- *             if public_id:
- *                 if system_url:             # <<<<<<<<<<<<<<
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
- *                 else:
+ *                 quoted_system_url = f'"{system_url}"'
+ *         if public_id:
+ *             if system_url:             # <<<<<<<<<<<<<<
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
+ *             else:
  */
     }
 
     /* "lxml/etree.pyx":663
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
- *                 else:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'             # <<<<<<<<<<<<<<
- *             elif system_url:
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
+ *             else:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'             # <<<<<<<<<<<<<<
+ *         elif system_url:
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
  */
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
@@ -52359,30 +52474,30 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     }
 
     /* "lxml/etree.pyx":659
- *                 else:
- *                     quoted_system_url = f'"{system_url}"'
- *             if public_id:             # <<<<<<<<<<<<<<
- *                 if system_url:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
+ *             else:
+ *                 quoted_system_url = f'"{system_url}"'
+ *         if public_id:             # <<<<<<<<<<<<<<
+ *             if system_url:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
  */
   }
 
   /* "lxml/etree.pyx":664
- *                 else:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
- *             elif system_url:             # <<<<<<<<<<<<<<
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
- *             elif self._doc.hasdoctype():
+ *             else:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
+ *         elif system_url:             # <<<<<<<<<<<<<<
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *         elif self._doc.hasdoctype():
  */
   __pyx_t_8 = __Pyx_PyObject_IsTrue(__pyx_v_system_url); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 664, __pyx_L1_error)
   if (__pyx_t_8) {
 
     /* "lxml/etree.pyx":665
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
- *             elif system_url:
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'             # <<<<<<<<<<<<<<
- *             elif self._doc.hasdoctype():
- *                 return f'<!DOCTYPE {root_name}>'
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
+ *         elif system_url:
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'             # <<<<<<<<<<<<<<
+ *         elif self._doc.hasdoctype():
+ *             return f'<!DOCTYPE {root_name}>'
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_1 = PyTuple_New(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 665, __pyx_L1_error)
@@ -52422,30 +52537,30 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     goto __pyx_L0;
 
     /* "lxml/etree.pyx":664
- *                 else:
- *                     return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
- *             elif system_url:             # <<<<<<<<<<<<<<
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
- *             elif self._doc.hasdoctype():
+ *             else:
+ *                 return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
+ *         elif system_url:             # <<<<<<<<<<<<<<
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *         elif self._doc.hasdoctype():
  */
   }
 
   /* "lxml/etree.pyx":666
- *             elif system_url:
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
- *             elif self._doc.hasdoctype():             # <<<<<<<<<<<<<<
- *                 return f'<!DOCTYPE {root_name}>'
- *             else:
+ *         elif system_url:
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *         elif self._doc.hasdoctype():             # <<<<<<<<<<<<<<
+ *             return f'<!DOCTYPE {root_name}>'
+ *         else:
  */
   __pyx_t_8 = (__pyx_f_4lxml_5etree_9_Document_hasdoctype(__pyx_v_self->_doc) != 0);
   if (__pyx_t_8) {
 
     /* "lxml/etree.pyx":667
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
- *             elif self._doc.hasdoctype():
- *                 return f'<!DOCTYPE {root_name}>'             # <<<<<<<<<<<<<<
- *             else:
- *                 return u''
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *         elif self._doc.hasdoctype():
+ *             return f'<!DOCTYPE {root_name}>'             # <<<<<<<<<<<<<<
+ *         else:
+ *             return u''
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 667, __pyx_L1_error)
@@ -52475,20 +52590,20 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     goto __pyx_L0;
 
     /* "lxml/etree.pyx":666
- *             elif system_url:
- *                 return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
- *             elif self._doc.hasdoctype():             # <<<<<<<<<<<<<<
- *                 return f'<!DOCTYPE {root_name}>'
- *             else:
+ *         elif system_url:
+ *             return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+ *         elif self._doc.hasdoctype():             # <<<<<<<<<<<<<<
+ *             return f'<!DOCTYPE {root_name}>'
+ *         else:
  */
   }
 
   /* "lxml/etree.pyx":669
- *                 return f'<!DOCTYPE {root_name}>'
- *             else:
- *                 return u''             # <<<<<<<<<<<<<<
+ *             return f'<!DOCTYPE {root_name}>'
+ *         else:
+ *             return u''             # <<<<<<<<<<<<<<
  * 
- *     property internalDTD:
+ *     @property
  */
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
@@ -52497,12 +52612,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":648
- *     property doctype:
- *         u"Returns a DOCTYPE declaration string for the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             root_name, public_id, system_url = self._doc.getdoctype()
- *             if system_url:
+  /* "lxml/etree.pyx":647
+ * 
+ *     @property
+ *     def doctype(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DOCTYPE declaration string for the document."""
+ *         root_name, public_id, system_url = self._doc.getdoctype()
  */
 
   /* function exit code */
@@ -52524,12 +52639,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_7doctype___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":673
- *     property internalDTD:
- *         u"Returns a DTD validator based on the internal subset of the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _dtdFactory(self._doc._c_doc.intSubset)
+/* "lxml/etree.pyx":672
  * 
+ *     @property
+ *     def internalDTD(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DTD validator based on the internal subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.intSubset)
  */
 
 /* Python wrapper */
@@ -52552,11 +52667,11 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":674
- *         u"Returns a DTD validator based on the internal subset of the document."
- *         def __get__(self):
- *             return _dtdFactory(self._doc._c_doc.intSubset)             # <<<<<<<<<<<<<<
+ *     def internalDTD(self):
+ *         """Returns a DTD validator based on the internal subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.intSubset)             # <<<<<<<<<<<<<<
  * 
- *     property externalDTD:
+ *     @property
  */
   __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, 674, __pyx_L1_error)
@@ -52565,12 +52680,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __p
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":673
- *     property internalDTD:
- *         u"Returns a DTD validator based on the internal subset of the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _dtdFactory(self._doc._c_doc.intSubset)
+  /* "lxml/etree.pyx":672
  * 
+ *     @property
+ *     def internalDTD(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DTD validator based on the internal subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.intSubset)
  */
 
   /* function exit code */
@@ -52584,12 +52699,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11internalDTD___get__(struct __p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":678
- *     property externalDTD:
- *         u"Returns a DTD validator based on the external subset of the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _dtdFactory(self._doc._c_doc.extSubset)
+/* "lxml/etree.pyx":677
  * 
+ *     @property
+ *     def externalDTD(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DTD validator based on the external subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.extSubset)
  */
 
 /* Python wrapper */
@@ -52612,9 +52727,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":679
- *         u"Returns a DTD validator based on the external subset of the document."
- *         def __get__(self):
- *             return _dtdFactory(self._doc._c_doc.extSubset)             # <<<<<<<<<<<<<<
+ *     def externalDTD(self):
+ *         """Returns a DTD validator based on the external subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.extSubset)             # <<<<<<<<<<<<<<
  * 
  * 
  */
@@ -52625,12 +52740,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7DocInfo_11externalDTD___get__(struct __p
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":678
- *     property externalDTD:
- *         u"Returns a DTD validator based on the external subset of the document."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _dtdFactory(self._doc._c_doc.extSubset)
+  /* "lxml/etree.pyx":677
  * 
+ *     @property
+ *     def externalDTD(self):             # <<<<<<<<<<<<<<
+ *         """Returns a DTD validator based on the external subset of the document."""
+ *         return _dtdFactory(self._doc._c_doc.extSubset)
  */
 
   /* function exit code */
@@ -55682,7 +55797,7 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
  *             else:
  *                 self._doc._setNodeNs(self._c_node, _xcstr(ns))             # <<<<<<<<<<<<<<
  * 
- *     property attrib:
+ *     @property
  */
   /*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, 997, __pyx_L1_error)
@@ -55714,12 +55829,12 @@ static int __pyx_pf_4lxml_5etree_8_Element_3tag_2__set__(struct LxmlElement *__p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1003
- *         keys(), values() and items() to access element attributes.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _Attrib.__new__(_Attrib, self)
+/* "lxml/etree.pyx":1000
  * 
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         """Element attribute dictionary. Where possible, use get(), set(),
+ *         keys(), values() and items() to access element attributes.
  */
 
 /* Python wrapper */
@@ -55743,9 +55858,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(struct LxmlElem
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":1004
+ *         keys(), values() and items() to access element attributes.
  *         """
- *         def __get__(self):
- *             return _Attrib.__new__(_Attrib, self)             # <<<<<<<<<<<<<<
+ *         return _Attrib.__new__(_Attrib, self)             # <<<<<<<<<<<<<<
  * 
  *     property text:
  */
@@ -55762,12 +55877,12 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6attrib___get__(struct LxmlElem
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1003
- *         keys(), values() and items() to access element attributes.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _Attrib.__new__(_Attrib, self)
+  /* "lxml/etree.pyx":1000
  * 
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         """Element attribute dictionary. Where possible, use get(), set(),
+ *         keys(), values() and items() to access element attributes.
  */
 
   /* function exit code */
@@ -56097,12 +56212,12 @@ static int __pyx_pf_4lxml_5etree_8_Element_4tail_2__set__(struct LxmlElement *__
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1045
- *         u"""Namespace prefix or None.
+/* "lxml/etree.pyx":1043
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:
  */
 
 /* Python wrapper */
@@ -56126,30 +56241,30 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":1046
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):
- *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
+ *         if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
  */
   __pyx_t_1 = ((__pyx_v_self->_c_node->ns != NULL) != 0);
   if (__pyx_t_1) {
 
     /* "lxml/etree.pyx":1047
- *         def __get__(self):
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
- *                     return funicode(self._c_node.ns.prefix)
- *             return None
+ *         """
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None
  */
     __pyx_t_1 = ((__pyx_v_self->_c_node->ns->prefix != NULL) != 0);
     if (__pyx_t_1) {
 
       /* "lxml/etree.pyx":1048
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
- *             return None
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
+ *         return None
  * 
  */
       __Pyx_XDECREF(__pyx_r);
@@ -56160,27 +56275,27 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
       goto __pyx_L0;
 
       /* "lxml/etree.pyx":1047
- *         def __get__(self):
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
- *                     return funicode(self._c_node.ns.prefix)
- *             return None
+ *         """
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None
  */
     }
 
     /* "lxml/etree.pyx":1046
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):
- *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
+ *         if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
  */
   }
 
   /* "lxml/etree.pyx":1049
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
- *             return None             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None             # <<<<<<<<<<<<<<
  * 
  *     # not in ElementTree, read-only
  */
@@ -56188,12 +56303,12 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_6prefix___get__(struct LxmlElem
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1045
- *         u"""Namespace prefix or None.
+  /* "lxml/etree.pyx":1043
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:
  */
 
   /* function exit code */
@@ -56399,12 +56514,12 @@ static int __pyx_pf_4lxml_5etree_8_Element_10sourceline_2__set__(struct LxmlElem
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1076
- *         Note that changing the returned dict has no effect on the Element.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef xmlNode* c_node
- *             cdef xmlNs* c_ns
+/* "lxml/etree.pyx":1070
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def nsmap(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix->URI mapping known in the context of this
+ *         Element.  This includes all namespace declarations of the
  */
 
 /* Python wrapper */
@@ -56436,20 +56551,20 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/etree.pyx":1079
- *             cdef xmlNode* c_node
- *             cdef xmlNs* c_ns
- *             _assertValidNode(self)             # <<<<<<<<<<<<<<
- *             nsmap = {}
- *             c_node = self._c_node
+ *         cdef xmlNode* c_node
+ *         cdef xmlNs* c_ns
+ *         _assertValidNode(self)             # <<<<<<<<<<<<<<
+ *         nsmap = {}
+ *         c_node = self._c_node
  */
   __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1079, __pyx_L1_error)
 
   /* "lxml/etree.pyx":1080
- *             cdef xmlNs* c_ns
- *             _assertValidNode(self)
- *             nsmap = {}             # <<<<<<<<<<<<<<
- *             c_node = self._c_node
- *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
+ *         cdef xmlNs* c_ns
+ *         _assertValidNode(self)
+ *         nsmap = {}             # <<<<<<<<<<<<<<
+ *         c_node = self._c_node
+ *         while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
  */
   __pyx_t_2 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1080, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
@@ -56457,21 +56572,21 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   __pyx_t_2 = 0;
 
   /* "lxml/etree.pyx":1081
- *             _assertValidNode(self)
- *             nsmap = {}
- *             c_node = self._c_node             # <<<<<<<<<<<<<<
- *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
- *                 c_ns = c_node.nsDef
+ *         _assertValidNode(self)
+ *         nsmap = {}
+ *         c_node = self._c_node             # <<<<<<<<<<<<<<
+ *         while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
+ *             c_ns = c_node.nsDef
  */
   __pyx_t_3 = __pyx_v_self->_c_node;
   __pyx_v_c_node = __pyx_t_3;
 
   /* "lxml/etree.pyx":1082
- *             nsmap = {}
- *             c_node = self._c_node
- *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
- *                 c_ns = c_node.nsDef
- *                 while c_ns is not NULL:
+ *         nsmap = {}
+ *         c_node = self._c_node
+ *         while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *             c_ns = c_node.nsDef
+ *             while c_ns is not NULL:
  */
   while (1) {
     __pyx_t_5 = ((__pyx_v_c_node != NULL) != 0);
@@ -56486,32 +56601,32 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
     if (!__pyx_t_4) break;
 
     /* "lxml/etree.pyx":1083
- *             c_node = self._c_node
- *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
- *                 c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
- *                 while c_ns is not NULL:
- *                     prefix = funicodeOrNone(c_ns.prefix)
+ *         c_node = self._c_node
+ *         while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
+ *             c_ns = c_node.nsDef             # <<<<<<<<<<<<<<
+ *             while c_ns is not NULL:
+ *                 prefix = funicodeOrNone(c_ns.prefix)
  */
     __pyx_t_6 = __pyx_v_c_node->nsDef;
     __pyx_v_c_ns = __pyx_t_6;
 
     /* "lxml/etree.pyx":1084
- *             while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
- *                 c_ns = c_node.nsDef
- *                 while c_ns is not NULL:             # <<<<<<<<<<<<<<
- *                     prefix = funicodeOrNone(c_ns.prefix)
- *                     if prefix not in nsmap:
+ *         while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
+ *             c_ns = c_node.nsDef
+ *             while c_ns is not NULL:             # <<<<<<<<<<<<<<
+ *                 prefix = funicodeOrNone(c_ns.prefix)
+ *                 if prefix not in nsmap:
  */
     while (1) {
       __pyx_t_4 = ((__pyx_v_c_ns != NULL) != 0);
       if (!__pyx_t_4) break;
 
       /* "lxml/etree.pyx":1085
- *                 c_ns = c_node.nsDef
- *                 while c_ns is not NULL:
- *                     prefix = funicodeOrNone(c_ns.prefix)             # <<<<<<<<<<<<<<
- *                     if prefix not in nsmap:
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
+ *             c_ns = c_node.nsDef
+ *             while c_ns is not NULL:
+ *                 prefix = funicodeOrNone(c_ns.prefix)             # <<<<<<<<<<<<<<
+ *                 if prefix not in nsmap:
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)
  */
       __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_ns->prefix); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1085, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
@@ -56519,22 +56634,22 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
       __pyx_t_2 = 0;
 
       /* "lxml/etree.pyx":1086
- *                 while c_ns is not NULL:
- *                     prefix = funicodeOrNone(c_ns.prefix)
- *                     if prefix not in nsmap:             # <<<<<<<<<<<<<<
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
- *                     c_ns = c_ns.next
+ *             while c_ns is not NULL:
+ *                 prefix = funicodeOrNone(c_ns.prefix)
+ *                 if prefix not in nsmap:             # <<<<<<<<<<<<<<
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)
+ *                 c_ns = c_ns.next
  */
       __pyx_t_4 = (__Pyx_PyDict_ContainsTF(__pyx_v_prefix, __pyx_v_nsmap, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error)
       __pyx_t_5 = (__pyx_t_4 != 0);
       if (__pyx_t_5) {
 
         /* "lxml/etree.pyx":1087
- *                     prefix = funicodeOrNone(c_ns.prefix)
- *                     if prefix not in nsmap:
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)             # <<<<<<<<<<<<<<
- *                     c_ns = c_ns.next
- *                 c_node = c_node.parent
+ *                 prefix = funicodeOrNone(c_ns.prefix)
+ *                 if prefix not in nsmap:
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)             # <<<<<<<<<<<<<<
+ *                 c_ns = c_ns.next
+ *             c_node = c_node.parent
  */
         __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrNone(__pyx_v_c_ns->href); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1087, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
@@ -56542,30 +56657,30 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
         /* "lxml/etree.pyx":1086
- *                 while c_ns is not NULL:
- *                     prefix = funicodeOrNone(c_ns.prefix)
- *                     if prefix not in nsmap:             # <<<<<<<<<<<<<<
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
- *                     c_ns = c_ns.next
+ *             while c_ns is not NULL:
+ *                 prefix = funicodeOrNone(c_ns.prefix)
+ *                 if prefix not in nsmap:             # <<<<<<<<<<<<<<
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)
+ *                 c_ns = c_ns.next
  */
       }
 
       /* "lxml/etree.pyx":1088
- *                     if prefix not in nsmap:
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
- *                     c_ns = c_ns.next             # <<<<<<<<<<<<<<
- *                 c_node = c_node.parent
- *             return nsmap
+ *                 if prefix not in nsmap:
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)
+ *                 c_ns = c_ns.next             # <<<<<<<<<<<<<<
+ *             c_node = c_node.parent
+ *         return nsmap
  */
       __pyx_t_6 = __pyx_v_c_ns->next;
       __pyx_v_c_ns = __pyx_t_6;
     }
 
     /* "lxml/etree.pyx":1089
- *                         nsmap[prefix] = funicodeOrNone(c_ns.href)
- *                     c_ns = c_ns.next
- *                 c_node = c_node.parent             # <<<<<<<<<<<<<<
- *             return nsmap
+ *                     nsmap[prefix] = funicodeOrNone(c_ns.href)
+ *                 c_ns = c_ns.next
+ *             c_node = c_node.parent             # <<<<<<<<<<<<<<
+ *         return nsmap
  * 
  */
     __pyx_t_3 = __pyx_v_c_node->parent;
@@ -56573,9 +56688,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   }
 
   /* "lxml/etree.pyx":1090
- *                     c_ns = c_ns.next
- *                 c_node = c_node.parent
- *             return nsmap             # <<<<<<<<<<<<<<
+ *                 c_ns = c_ns.next
+ *             c_node = c_node.parent
+ *         return nsmap             # <<<<<<<<<<<<<<
  * 
  *     # not in ElementTree, read-only
  */
@@ -56584,12 +56699,12 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_5nsmap___get__(struct LxmlEleme
   __pyx_r = __pyx_v_nsmap;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1076
- *         Note that changing the returned dict has no effect on the Element.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef xmlNode* c_node
- *             cdef xmlNs* c_ns
+  /* "lxml/etree.pyx":1070
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def nsmap(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix->URI mapping known in the context of this
+ *         Element.  This includes all namespace declarations of the
  */
 
   /* function exit code */
@@ -59692,6 +59807,105 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
   /* "lxml/etree.pyx":1390
  *         see `iter`.
  *         """
+ *         if preceding:             # <<<<<<<<<<<<<<
+ *             if self._c_node and not self._c_node.prev:
+ *                 return ITER_EMPTY
+ */
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_preceding); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1390, __pyx_L1_error)
+  if (__pyx_t_1) {
+
+    /* "lxml/etree.pyx":1391
+ *         """
+ *         if preceding:
+ *             if self._c_node and not self._c_node.prev:             # <<<<<<<<<<<<<<
+ *                 return ITER_EMPTY
+ *         elif self._c_node and not self._c_node.next:
+ */
+    __pyx_t_2 = (__pyx_v_self->_c_node != 0);
+    if (__pyx_t_2) {
+    } else {
+      __pyx_t_1 = __pyx_t_2;
+      goto __pyx_L5_bool_binop_done;
+    }
+    __pyx_t_2 = ((!(__pyx_v_self->_c_node->prev != 0)) != 0);
+    __pyx_t_1 = __pyx_t_2;
+    __pyx_L5_bool_binop_done:;
+    if (__pyx_t_1) {
+
+      /* "lxml/etree.pyx":1392
+ *         if preceding:
+ *             if self._c_node and not self._c_node.prev:
+ *                 return ITER_EMPTY             # <<<<<<<<<<<<<<
+ *         elif self._c_node and not self._c_node.next:
+ *             return ITER_EMPTY
+ */
+      __Pyx_XDECREF(__pyx_r);
+      __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
+      __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
+      goto __pyx_L0;
+
+      /* "lxml/etree.pyx":1391
+ *         """
+ *         if preceding:
+ *             if self._c_node and not self._c_node.prev:             # <<<<<<<<<<<<<<
+ *                 return ITER_EMPTY
+ *         elif self._c_node and not self._c_node.next:
+ */
+    }
+
+    /* "lxml/etree.pyx":1390
+ *         see `iter`.
+ *         """
+ *         if preceding:             # <<<<<<<<<<<<<<
+ *             if self._c_node and not self._c_node.prev:
+ *                 return ITER_EMPTY
+ */
+    goto __pyx_L3;
+  }
+
+  /* "lxml/etree.pyx":1393
+ *             if self._c_node and not self._c_node.prev:
+ *                 return ITER_EMPTY
+ *         elif self._c_node and not self._c_node.next:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  __pyx_t_2 = (__pyx_v_self->_c_node != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L7_bool_binop_done;
+  }
+  __pyx_t_2 = ((!(__pyx_v_self->_c_node->next != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L7_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "lxml/etree.pyx":1394
+ *                 return ITER_EMPTY
+ *         elif self._c_node and not self._c_node.next:
+ *             return ITER_EMPTY             # <<<<<<<<<<<<<<
+ *         if tag is not None:
+ *             tags += (tag,)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
+    __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
+    goto __pyx_L0;
+
+    /* "lxml/etree.pyx":1393
+ *             if self._c_node and not self._c_node.prev:
+ *                 return ITER_EMPTY
+ *         elif self._c_node and not self._c_node.next:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  }
+  __pyx_L3:;
+
+  /* "lxml/etree.pyx":1395
+ *         elif self._c_node and not self._c_node.next:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return SiblingsIterator(self, tags, preceding=preceding)
@@ -59700,34 +59914,34 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1391
- *         """
+    /* "lxml/etree.pyx":1396
+ *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1391, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1396, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1391, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1396, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1390
- *         see `iter`.
- *         """
+    /* "lxml/etree.pyx":1395
+ *         elif self._c_node and not self._c_node.next:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return SiblingsIterator(self, tags, preceding=preceding)
  */
   }
 
-  /* "lxml/etree.pyx":1392
+  /* "lxml/etree.pyx":1397
  *         if tag is not None:
  *             tags += (tag,)
  *         return SiblingsIterator(self, tags, preceding=preceding)             # <<<<<<<<<<<<<<
@@ -59735,7 +59949,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
  *     def iterancestors(self, tag=None, *tags):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1392, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1397, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -59743,10 +59957,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1392, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1397, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_preceding, __pyx_v_preceding) < 0) __PYX_ERR(0, 1392, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_SiblingsIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1392, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_preceding, __pyx_v_preceding) < 0) __PYX_ERR(0, 1397, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_SiblingsIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1397, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -59776,7 +59990,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_62itersiblings(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1394
+/* "lxml/etree.pyx":1399
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  *     def iterancestors(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -59827,7 +60041,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_65iterancestors(PyObject *__pyx
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterancestors") < 0)) __PYX_ERR(0, 1394, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterancestors") < 0)) __PYX_ERR(0, 1399, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -59864,9 +60078,48 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
   __Pyx_RefNannySetupContext("iterancestors", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1402
+  /* "lxml/etree.pyx":1407
  *         see `iter`.
  *         """
+ *         if self._c_node and not self._c_node.parent:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  __pyx_t_2 = (__pyx_v_self->_c_node != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_2 = ((!(__pyx_v_self->_c_node->parent != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "lxml/etree.pyx":1408
+ *         """
+ *         if self._c_node and not self._c_node.parent:
+ *             return ITER_EMPTY             # <<<<<<<<<<<<<<
+ *         if tag is not None:
+ *             tags += (tag,)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
+    __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
+    goto __pyx_L0;
+
+    /* "lxml/etree.pyx":1407
+ *         see `iter`.
+ *         """
+ *         if self._c_node and not self._c_node.parent:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  }
+
+  /* "lxml/etree.pyx":1409
+ *         if self._c_node and not self._c_node.parent:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return AncestorsIterator(self, tags)
@@ -59875,34 +60128,34 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1403
- *         """
+    /* "lxml/etree.pyx":1410
+ *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return AncestorsIterator(self, tags)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1403, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1410, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1403, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1410, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1402
- *         see `iter`.
- *         """
+    /* "lxml/etree.pyx":1409
+ *         if self._c_node and not self._c_node.parent:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return AncestorsIterator(self, tags)
  */
   }
 
-  /* "lxml/etree.pyx":1404
+  /* "lxml/etree.pyx":1411
  *         if tag is not None:
  *             tags += (tag,)
  *         return AncestorsIterator(self, tags)             # <<<<<<<<<<<<<<
@@ -59910,7 +60163,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
  *     def iterdescendants(self, tag=None, *tags):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1404, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1411, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -59918,14 +60171,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_AncestorsIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1404, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_AncestorsIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1411, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1394
+  /* "lxml/etree.pyx":1399
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  *     def iterancestors(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -59946,7 +60199,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_64iterancestors(struct LxmlElem
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1406
+/* "lxml/etree.pyx":1413
  *         return AncestorsIterator(self, tags)
  * 
  *     def iterdescendants(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -59997,7 +60250,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_67iterdescendants(PyObject *__p
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterdescendants") < 0)) __PYX_ERR(0, 1406, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterdescendants") < 0)) __PYX_ERR(0, 1413, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60035,9 +60288,48 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   __Pyx_RefNannySetupContext("iterdescendants", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1415
+  /* "lxml/etree.pyx":1422
+ *         with specific tags, see `iter`.
+ *         """
+ *         if self._c_node and not self._c_node.children:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  __pyx_t_2 = (__pyx_v_self->_c_node != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_2 = ((!(__pyx_v_self->_c_node->children != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "lxml/etree.pyx":1423
+ *         """
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY             # <<<<<<<<<<<<<<
+ *         if tag is not None:
+ *             tags += (tag,)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
+    __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
+    goto __pyx_L0;
+
+    /* "lxml/etree.pyx":1422
  *         with specific tags, see `iter`.
  *         """
+ *         if self._c_node and not self._c_node.children:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  }
+
+  /* "lxml/etree.pyx":1424
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
@@ -60046,34 +60338,34 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1416
- *         """
+    /* "lxml/etree.pyx":1425
+ *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1416, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1425, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1416, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1415
- *         with specific tags, see `iter`.
- *         """
+    /* "lxml/etree.pyx":1424
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  */
   }
 
-  /* "lxml/etree.pyx":1417
+  /* "lxml/etree.pyx":1426
  *         if tag is not None:
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)             # <<<<<<<<<<<<<<
@@ -60081,7 +60373,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
  *     def iterchildren(self, tag=None, *tags, reversed=False):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1417, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -60089,10 +60381,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1417, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1426, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_inclusive, Py_False) < 0) __PYX_ERR(0, 1417, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1417, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_inclusive, Py_False) < 0) __PYX_ERR(0, 1426, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1426, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -60100,7 +60392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1406
+  /* "lxml/etree.pyx":1413
  *         return AncestorsIterator(self, tags)
  * 
  *     def iterdescendants(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -60122,7 +60414,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_66iterdescendants(struct LxmlEl
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1419
+/* "lxml/etree.pyx":1428
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  *     def iterchildren(self, tag=None, *tags, reversed=False):             # <<<<<<<<<<<<<<
@@ -60180,7 +60472,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_69iterchildren(PyObject *__pyx_
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterchildren") < 0)) __PYX_ERR(0, 1419, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iterchildren") < 0)) __PYX_ERR(0, 1428, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60219,9 +60511,48 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   __Pyx_RefNannySetupContext("iterchildren", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1428
+  /* "lxml/etree.pyx":1437
  *         to find only elements with specific tags, see `iter`.
  *         """
+ *         if self._c_node and not self._c_node.children:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  __pyx_t_2 = (__pyx_v_self->_c_node != 0);
+  if (__pyx_t_2) {
+  } else {
+    __pyx_t_1 = __pyx_t_2;
+    goto __pyx_L4_bool_binop_done;
+  }
+  __pyx_t_2 = ((!(__pyx_v_self->_c_node->children != 0)) != 0);
+  __pyx_t_1 = __pyx_t_2;
+  __pyx_L4_bool_binop_done:;
+  if (__pyx_t_1) {
+
+    /* "lxml/etree.pyx":1438
+ *         """
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY             # <<<<<<<<<<<<<<
+ *         if tag is not None:
+ *             tags += (tag,)
+ */
+    __Pyx_XDECREF(__pyx_r);
+    __Pyx_INCREF(__pyx_v_4lxml_5etree_ITER_EMPTY);
+    __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
+    goto __pyx_L0;
+
+    /* "lxml/etree.pyx":1437
+ *         to find only elements with specific tags, see `iter`.
+ *         """
+ *         if self._c_node and not self._c_node.children:             # <<<<<<<<<<<<<<
+ *             return ITER_EMPTY
+ *         if tag is not None:
+ */
+  }
+
+  /* "lxml/etree.pyx":1439
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return ElementChildIterator(self, tags, reversed=reversed)
@@ -60230,34 +60561,34 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1429
- *         """
+    /* "lxml/etree.pyx":1440
+ *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1429, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1440, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1429, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1440, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1428
- *         to find only elements with specific tags, see `iter`.
- *         """
+    /* "lxml/etree.pyx":1439
+ *         if self._c_node and not self._c_node.children:
+ *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
  *             tags += (tag,)
  *         return ElementChildIterator(self, tags, reversed=reversed)
  */
   }
 
-  /* "lxml/etree.pyx":1430
+  /* "lxml/etree.pyx":1441
  *         if tag is not None:
  *             tags += (tag,)
  *         return ElementChildIterator(self, tags, reversed=reversed)             # <<<<<<<<<<<<<<
@@ -60265,7 +60596,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
  *     def getroottree(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1430, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -60273,10 +60604,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1430, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reversed, __pyx_v_reversed) < 0) __PYX_ERR(0, 1430, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementChildIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1430, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_reversed, __pyx_v_reversed) < 0) __PYX_ERR(0, 1441, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementChildIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -60284,7 +60615,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1419
+  /* "lxml/etree.pyx":1428
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  *     def iterchildren(self, tag=None, *tags, reversed=False):             # <<<<<<<<<<<<<<
@@ -60306,7 +60637,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_68iterchildren(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1432
+/* "lxml/etree.pyx":1443
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  *     def getroottree(self):             # <<<<<<<<<<<<<<
@@ -60337,7 +60668,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("getroottree", 0);
 
-  /* "lxml/etree.pyx":1441
+  /* "lxml/etree.pyx":1452
  *         returns None (for the root element) and then build an ElementTree for
  *         the last parent that was returned."""
  *         _assertValidDoc(self._doc)             # <<<<<<<<<<<<<<
@@ -60346,10 +60677,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
  */
   __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, 1441, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1452, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":1442
+  /* "lxml/etree.pyx":1453
  *         the last parent that was returned."""
  *         _assertValidDoc(self._doc)
  *         return _elementTreeFactory(self._doc, None)             # <<<<<<<<<<<<<<
@@ -60359,14 +60690,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)__pyx_t_1), ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1442, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)__pyx_t_1), ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1453, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1432
+  /* "lxml/etree.pyx":1443
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  *     def getroottree(self):             # <<<<<<<<<<<<<<
@@ -60386,7 +60717,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_70getroottree(struct LxmlElemen
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1444
+/* "lxml/etree.pyx":1455
  *         return _elementTreeFactory(self._doc, None)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -60437,7 +60768,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_73getiterator(PyObject *__pyx_v
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "getiterator") < 0)) __PYX_ERR(0, 1444, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "getiterator") < 0)) __PYX_ERR(0, 1455, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60474,7 +60805,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
   __Pyx_RefNannySetupContext("getiterator", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1462
+  /* "lxml/etree.pyx":1473
  *           with older versions of lxml or ElementTree.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60485,25 +60816,25 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1463
+    /* "lxml/etree.pyx":1474
  *         """
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return ElementDepthFirstIterator(self, tags)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1463, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1474, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1463, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1474, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1462
+    /* "lxml/etree.pyx":1473
  *           with older versions of lxml or ElementTree.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60512,7 +60843,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
  */
   }
 
-  /* "lxml/etree.pyx":1464
+  /* "lxml/etree.pyx":1475
  *         if tag is not None:
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags)             # <<<<<<<<<<<<<<
@@ -60520,7 +60851,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
  *     def iter(self, tag=None, *tags):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1464, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -60528,14 +60859,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1464, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1444
+  /* "lxml/etree.pyx":1455
  *         return _elementTreeFactory(self._doc, None)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -60556,7 +60887,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_72getiterator(struct LxmlElemen
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1466
+/* "lxml/etree.pyx":1477
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -60607,7 +60938,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_75iter(PyObject *__pyx_v_self,
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iter") < 0)) __PYX_ERR(0, 1466, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iter") < 0)) __PYX_ERR(0, 1477, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60644,7 +60975,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
   __Pyx_RefNannySetupContext("iter", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1486
+  /* "lxml/etree.pyx":1497
  *         in document order.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60655,25 +60986,25 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1487
+    /* "lxml/etree.pyx":1498
  *         """
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return ElementDepthFirstIterator(self, tags)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1498, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1487, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1498, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1486
+    /* "lxml/etree.pyx":1497
  *         in document order.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60682,7 +61013,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
  */
   }
 
-  /* "lxml/etree.pyx":1488
+  /* "lxml/etree.pyx":1499
  *         if tag is not None:
  *             tags += (tag,)
  *         return ElementDepthFirstIterator(self, tags)             # <<<<<<<<<<<<<<
@@ -60690,7 +61021,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
  *     def itertext(self, tag=None, *tags, with_tail=True):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1488, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -60698,14 +61029,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1488, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementDepthFirstIterator), __pyx_t_4, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1499, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1466
+  /* "lxml/etree.pyx":1477
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -60726,7 +61057,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_74iter(struct LxmlElement *__py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1490
+/* "lxml/etree.pyx":1501
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def itertext(self, tag=None, *tags, with_tail=True):             # <<<<<<<<<<<<<<
@@ -60784,7 +61115,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_77itertext(PyObject *__pyx_v_se
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "itertext") < 0)) __PYX_ERR(0, 1490, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "itertext") < 0)) __PYX_ERR(0, 1501, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60823,7 +61154,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   __Pyx_RefNannySetupContext("itertext", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":1501
+  /* "lxml/etree.pyx":1512
  *         over tail text.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60834,25 +61165,25 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1502
+    /* "lxml/etree.pyx":1513
  *         """
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  */
-    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1502, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1513, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v_tag);
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1502, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1513, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1501
+    /* "lxml/etree.pyx":1512
  *         over tail text.
  *         """
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -60861,7 +61192,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
  */
   }
 
-  /* "lxml/etree.pyx":1503
+  /* "lxml/etree.pyx":1514
  *         if tag is not None:
  *             tags += (tag,)
  *         return ElementTextIterator(self, tags, with_tail=with_tail)             # <<<<<<<<<<<<<<
@@ -60869,7 +61200,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1503, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
@@ -60877,10 +61208,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_v_tags);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1503, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_with_tail, __pyx_v_with_tail) < 0) __PYX_ERR(0, 1503, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementTextIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1503, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_with_tail, __pyx_v_with_tail) < 0) __PYX_ERR(0, 1514, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_ElementTextIterator), __pyx_t_4, __pyx_t_3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -60888,7 +61219,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1490
+  /* "lxml/etree.pyx":1501
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def itertext(self, tag=None, *tags, with_tail=True):             # <<<<<<<<<<<<<<
@@ -60910,7 +61241,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_76itertext(struct LxmlElement *
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1505
+/* "lxml/etree.pyx":1516
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -60969,7 +61300,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_79makeelement(PyObject *__pyx_v
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) __PYX_ERR(0, 1505, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "makeelement") < 0)) __PYX_ERR(0, 1516, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -60988,7 +61319,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_79makeelement(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1505, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("makeelement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1516, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
   __Pyx_AddTraceback("lxml.etree._Element.makeelement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -61011,7 +61342,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("makeelement", 0);
 
-  /* "lxml/etree.pyx":1510
+  /* "lxml/etree.pyx":1521
  *         Creates a new element associated with the same document.
  *         """
  *         _assertValidDoc(self._doc)             # <<<<<<<<<<<<<<
@@ -61020,10 +61351,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
  */
   __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, 1510, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1521, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":1511
+  /* "lxml/etree.pyx":1522
  *         """
  *         _assertValidDoc(self._doc)
  *         return _makeElement(_tag, NULL, self._doc, None, None, None,             # <<<<<<<<<<<<<<
@@ -61034,21 +61365,21 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
   __pyx_t_1 = ((PyObject *)__pyx_v_self->_doc);
   __Pyx_INCREF(__pyx_t_1);
 
-  /* "lxml/etree.pyx":1512
+  /* "lxml/etree.pyx":1523
  *         _assertValidDoc(self._doc)
  *         return _makeElement(_tag, NULL, self._doc, None, None, None,
  *                             attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
  * 
  *     def find(self, path, namespaces=None):
  */
-  __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, 1511, __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, 1522, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1505
+  /* "lxml/etree.pyx":1516
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -61068,7 +61399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_78makeelement(struct LxmlElemen
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1514
+/* "lxml/etree.pyx":1525
  *                             attrib, nsmap, _extra)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61114,7 +61445,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_81find(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 1514, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 1525, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -61130,7 +61461,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_81find(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("find", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1514, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("find", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1525, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Element.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -61156,7 +61487,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   __Pyx_RefNannySetupContext("find", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":1523
+  /* "lxml/etree.pyx":1534
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61167,7 +61498,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1524
+    /* "lxml/etree.pyx":1535
  *         """
  *         if isinstance(path, QName):
  *             path = (<QName>path).text             # <<<<<<<<<<<<<<
@@ -61179,7 +61510,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1523
+    /* "lxml/etree.pyx":1534
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61188,7 +61519,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
  */
   }
 
-  /* "lxml/etree.pyx":1525
+  /* "lxml/etree.pyx":1536
  *         if isinstance(path, QName):
  *             path = (<QName>path).text
  *         return _elementpath.find(self, path, namespaces)             # <<<<<<<<<<<<<<
@@ -61196,7 +61527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
  *     def findtext(self, path, default=None, namespaces=None):
  */
   __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, 1525, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_find); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -61213,7 +61544,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1536, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
@@ -61221,13 +61552,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1536, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
   #endif
   {
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1525, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1536, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -61241,7 +61572,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_namespaces);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1525, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1536, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -61250,7 +61581,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1514
+  /* "lxml/etree.pyx":1525
  *                             attrib, nsmap, _extra)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61273,7 +61604,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_80find(struct LxmlElement *__py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1527
+/* "lxml/etree.pyx":1538
  *         return _elementpath.find(self, path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61329,7 +61660,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_83findtext(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findtext") < 0)) __PYX_ERR(0, 1527, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findtext") < 0)) __PYX_ERR(0, 1538, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -61348,7 +61679,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_83findtext(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1527, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1538, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Element.findtext", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -61374,7 +61705,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   __Pyx_RefNannySetupContext("findtext", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":1536
+  /* "lxml/etree.pyx":1547
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61385,7 +61716,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1537
+    /* "lxml/etree.pyx":1548
  *         """
  *         if isinstance(path, QName):
  *             path = (<QName>path).text             # <<<<<<<<<<<<<<
@@ -61397,7 +61728,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1536
+    /* "lxml/etree.pyx":1547
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61406,7 +61737,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
  */
   }
 
-  /* "lxml/etree.pyx":1538
+  /* "lxml/etree.pyx":1549
  *         if isinstance(path, QName):
  *             path = (<QName>path).text
  *         return _elementpath.findtext(self, path, default, namespaces)             # <<<<<<<<<<<<<<
@@ -61414,7 +61745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
  *     def findall(self, path, namespaces=None):
  */
   __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, 1538, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_findtext); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1549, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -61431,7 +61762,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[5] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_default, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
@@ -61439,13 +61770,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[5] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_default, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 4+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
   #endif
   {
-    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1538, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(4+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -61462,7 +61793,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_7, 3+__pyx_t_6, __pyx_v_namespaces);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1538, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1549, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -61471,7 +61802,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1527
+  /* "lxml/etree.pyx":1538
  *         return _elementpath.find(self, path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61494,7 +61825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_82findtext(struct LxmlElement *
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1540
+/* "lxml/etree.pyx":1551
  *         return _elementpath.findtext(self, path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61540,7 +61871,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_85findall(PyObject *__pyx_v_sel
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findall") < 0)) __PYX_ERR(0, 1540, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findall") < 0)) __PYX_ERR(0, 1551, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -61556,7 +61887,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_85findall(PyObject *__pyx_v_sel
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("findall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1540, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("findall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1551, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Element.findall", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -61582,7 +61913,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   __Pyx_RefNannySetupContext("findall", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":1549
+  /* "lxml/etree.pyx":1560
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61593,7 +61924,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1550
+    /* "lxml/etree.pyx":1561
  *         """
  *         if isinstance(path, QName):
  *             path = (<QName>path).text             # <<<<<<<<<<<<<<
@@ -61605,7 +61936,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1549
+    /* "lxml/etree.pyx":1560
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61614,7 +61945,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
  */
   }
 
-  /* "lxml/etree.pyx":1551
+  /* "lxml/etree.pyx":1562
  *         if isinstance(path, QName):
  *             path = (<QName>path).text
  *         return _elementpath.findall(self, path, namespaces)             # <<<<<<<<<<<<<<
@@ -61622,7 +61953,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
  *     def iterfind(self, path, namespaces=None):
  */
   __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, 1551, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_findall); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1562, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -61639,7 +61970,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1562, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
@@ -61647,13 +61978,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1562, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
   #endif
   {
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1551, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1562, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -61667,7 +61998,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_namespaces);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1551, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1562, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -61676,7 +62007,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1540
+  /* "lxml/etree.pyx":1551
  *         return _elementpath.findtext(self, path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61699,7 +62030,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_84findall(struct LxmlElement *_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1553
+/* "lxml/etree.pyx":1564
  *         return _elementpath.findall(self, path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61745,7 +62076,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_87iterfind(PyObject *__pyx_v_se
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterfind") < 0)) __PYX_ERR(0, 1553, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterfind") < 0)) __PYX_ERR(0, 1564, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -61761,7 +62092,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_87iterfind(PyObject *__pyx_v_se
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("iterfind", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1553, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("iterfind", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1564, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Element.iterfind", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -61787,7 +62118,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   __Pyx_RefNannySetupContext("iterfind", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":1562
+  /* "lxml/etree.pyx":1573
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61798,7 +62129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1563
+    /* "lxml/etree.pyx":1574
  *         """
  *         if isinstance(path, QName):
  *             path = (<QName>path).text             # <<<<<<<<<<<<<<
@@ -61810,7 +62141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
     __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1562
+    /* "lxml/etree.pyx":1573
  *         prefixes in the path expression.
  *         """
  *         if isinstance(path, QName):             # <<<<<<<<<<<<<<
@@ -61819,7 +62150,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
  */
   }
 
-  /* "lxml/etree.pyx":1564
+  /* "lxml/etree.pyx":1575
  *         if isinstance(path, QName):
  *             path = (<QName>path).text
  *         return _elementpath.iterfind(self, path, namespaces)             # <<<<<<<<<<<<<<
@@ -61827,7 +62158,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  */
   __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, 1564, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree__elementpath, __pyx_n_s_iterfind); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1575, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   __pyx_t_6 = 0;
@@ -61844,7 +62175,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1564, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1575, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
@@ -61852,13 +62183,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
     PyObject *__pyx_temp[4] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_path, __pyx_v_namespaces};
-    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1564, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1575, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_GOTREF(__pyx_t_3);
   } else
   #endif
   {
-    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1564, __pyx_L1_error)
+    __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1575, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     if (__pyx_t_5) {
       __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -61872,7 +62203,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_namespaces);
-    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1564, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1575, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   }
@@ -61881,7 +62212,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1553
+  /* "lxml/etree.pyx":1564
  *         return _elementpath.findall(self, path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -61904,7 +62235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_86iterfind(struct LxmlElement *
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1566
+/* "lxml/etree.pyx":1577
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -61933,7 +62264,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_89xpath(PyObject *__pyx_v_self,
     values[1] = ((PyObject *)Py_None);
     values[2] = ((PyObject *)Py_None);
 
-    /* "lxml/etree.pyx":1567
+    /* "lxml/etree.pyx":1578
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  *               smart_strings=True, **_variables):             # <<<<<<<<<<<<<<
@@ -61964,7 +62295,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_89xpath(PyObject *__pyx_v_self,
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, pos_args, "xpath") < 0)) __PYX_ERR(0, 1566, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, pos_args, "xpath") < 0)) __PYX_ERR(0, 1577, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -61978,7 +62309,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_89xpath(PyObject *__pyx_v_self,
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1566, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1577, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__variables); __pyx_v__variables = 0;
   __Pyx_AddTraceback("lxml.etree._Element.xpath", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -61987,7 +62318,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_89xpath(PyObject *__pyx_v_self,
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_8_Element_88xpath(((struct LxmlElement *)__pyx_v_self), __pyx_v__path, __pyx_v_namespaces, __pyx_v_extensions, __pyx_v_smart_strings, __pyx_v__variables);
 
-  /* "lxml/etree.pyx":1566
+  /* "lxml/etree.pyx":1577
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -62010,55 +62341,55 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("xpath", 0);
 
-  /* "lxml/etree.pyx":1572
+  /* "lxml/etree.pyx":1583
  *         Evaluate an xpath expression using the element as context node.
  *         """
  *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1572, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1583, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_1, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1572, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1583, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_namespaces, __pyx_v_namespaces) < 0) __PYX_ERR(0, 1572, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_namespaces, __pyx_v_namespaces) < 0) __PYX_ERR(0, 1583, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1573
+  /* "lxml/etree.pyx":1584
  *         """
  *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,
  *                                           extensions=extensions,             # <<<<<<<<<<<<<<
  *                                           smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 1572, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 1583, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1574
+  /* "lxml/etree.pyx":1585
  *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)             # <<<<<<<<<<<<<<
  *         return evaluator(_path, **_variables)
  * 
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 1572, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 1583, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1572
+  /* "lxml/etree.pyx":1583
  *         Evaluate an xpath expression using the element as context node.
  *         """
  *         evaluator = XPathElementEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)
  */
-  __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, 1572, __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, 1583, __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_v_evaluator = ((struct __pyx_obj_4lxml_5etree_XPathElementEvaluator *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":1575
+  /* "lxml/etree.pyx":1586
  *                                           extensions=extensions,
  *                                           smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)             # <<<<<<<<<<<<<<
@@ -62066,19 +62397,19 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
  *     def cssselect(self, expr, *, translator='xml'):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1575, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1586, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v__path);
   __Pyx_GIVEREF(__pyx_v__path);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_v__path);
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_3, __pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1575, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_3, __pyx_v__variables); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1586, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1566
+  /* "lxml/etree.pyx":1577
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -62100,7 +62431,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_88xpath(struct LxmlElement *__p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1577
+/* "lxml/etree.pyx":1588
  *         return evaluator(_path, **_variables)
  * 
  *     def cssselect(self, expr, *, translator='xml'):             # <<<<<<<<<<<<<<
@@ -62143,7 +62474,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_91cssselect(PyObject *__pyx_v_s
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cssselect") < 0)) __PYX_ERR(0, 1577, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "cssselect") < 0)) __PYX_ERR(0, 1588, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -62155,7 +62486,7 @@ static PyObject *__pyx_pw_4lxml_5etree_8_Element_91cssselect(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("cssselect", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1577, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("cssselect", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1588, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Element.cssselect", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -62178,29 +62509,29 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("cssselect", 0);
 
-  /* "lxml/etree.pyx":1587
+  /* "lxml/etree.pyx":1598
  *         """
  *         # Do the import here to make the dependency optional.
  *         from lxml.cssselect import CSSSelector             # <<<<<<<<<<<<<<
  *         return CSSSelector(expr, translator=translator)(self)
  * 
  */
-  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1587, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_s_CSSSelector);
   __Pyx_GIVEREF(__pyx_n_s_CSSSelector);
   PyList_SET_ITEM(__pyx_t_1, 0, __pyx_n_s_CSSSelector);
-  __pyx_t_2 = __Pyx_Import(__pyx_n_s_lxml_cssselect, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1587, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_Import(__pyx_n_s_lxml_cssselect, __pyx_t_1, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1598, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1587, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_ImportFrom(__pyx_t_2, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1598, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_t_1);
   __pyx_v_CSSSelector = __pyx_t_1;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":1588
+  /* "lxml/etree.pyx":1599
  *         # Do the import here to make the dependency optional.
  *         from lxml.cssselect import CSSSelector
  *         return CSSSelector(expr, translator=translator)(self)             # <<<<<<<<<<<<<<
@@ -62208,15 +62539,15 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1588, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_expr);
   __Pyx_GIVEREF(__pyx_v_expr);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_expr);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1588, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_translator, __pyx_v_translator) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_CSSSelector, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1588, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_translator, __pyx_v_translator) < 0) __PYX_ERR(0, 1599, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_CSSSelector, __pyx_t_1, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -62232,14 +62563,14 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
   }
   __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_4, ((PyObject *)__pyx_v_self));
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1588, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1577
+  /* "lxml/etree.pyx":1588
  *         return evaluator(_path, **_variables)
  * 
  *     def cssselect(self, expr, *, translator='xml'):             # <<<<<<<<<<<<<<
@@ -62262,7 +62593,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Element_90cssselect(struct LxmlElement
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1597
+/* "lxml/etree.pyx":1608
  * 
  * @cython.linetrace(False)
  * cdef _Element _elementFactory(_Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -62283,19 +62614,19 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_elementFactory", 0);
 
-  /* "lxml/etree.pyx":1599
+  /* "lxml/etree.pyx":1610
  * cdef _Element _elementFactory(_Document doc, xmlNode* c_node):
  *     cdef _Element result
  *     result = getProxy(c_node)             # <<<<<<<<<<<<<<
  *     if result is not None:
  *         return result
  */
-  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1610, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_result = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":1600
+  /* "lxml/etree.pyx":1611
  *     cdef _Element result
  *     result = getProxy(c_node)
  *     if result is not None:             # <<<<<<<<<<<<<<
@@ -62306,7 +62637,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1601
+    /* "lxml/etree.pyx":1612
  *     result = getProxy(c_node)
  *     if result is not None:
  *         return result             # <<<<<<<<<<<<<<
@@ -62318,7 +62649,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
     __pyx_r = __pyx_v_result;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1600
+    /* "lxml/etree.pyx":1611
  *     cdef _Element result
  *     result = getProxy(c_node)
  *     if result is not None:             # <<<<<<<<<<<<<<
@@ -62327,7 +62658,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
   }
 
-  /* "lxml/etree.pyx":1602
+  /* "lxml/etree.pyx":1613
  *     if result is not None:
  *         return result
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -62337,7 +62668,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_3 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1603
+    /* "lxml/etree.pyx":1614
  *         return result
  *     if c_node is NULL:
  *         return None             # <<<<<<<<<<<<<<
@@ -62348,7 +62679,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
     __pyx_r = ((struct LxmlElement *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1602
+    /* "lxml/etree.pyx":1613
  *     if result is not None:
  *         return result
  *     if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -62357,7 +62688,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
   }
 
-  /* "lxml/etree.pyx":1606
+  /* "lxml/etree.pyx":1617
  * 
  *     element_class = LOOKUP_ELEMENT_CLASS(
  *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)             # <<<<<<<<<<<<<<
@@ -62367,20 +62698,20 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_1 = __pyx_v_4lxml_5etree_ELEMENT_CLASS_LOOKUP_STATE;
   __Pyx_INCREF(__pyx_t_1);
 
-  /* "lxml/etree.pyx":1605
+  /* "lxml/etree.pyx":1616
  *         return None
  * 
  *     element_class = LOOKUP_ELEMENT_CLASS(             # <<<<<<<<<<<<<<
  *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)
  *     if hasProxy(c_node):
  */
-  __pyx_t_4 = __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS(__pyx_t_1, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1605, __pyx_L1_error)
+  __pyx_t_4 = __pyx_v_4lxml_5etree_LOOKUP_ELEMENT_CLASS(__pyx_t_1, __pyx_v_doc, __pyx_v_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1616, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_element_class = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":1607
+  /* "lxml/etree.pyx":1618
  *     element_class = LOOKUP_ELEMENT_CLASS(
  *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)
  *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
@@ -62390,7 +62721,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_3 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1609
+    /* "lxml/etree.pyx":1620
  *     if hasProxy(c_node):
  *         # prevent re-entry race condition - we just called into Python
  *         return getProxy(c_node)             # <<<<<<<<<<<<<<
@@ -62398,13 +62729,13 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  *     if hasProxy(c_node):
  */
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1609, __pyx_L1_error)
+    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1620, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1607
+    /* "lxml/etree.pyx":1618
  *     element_class = LOOKUP_ELEMENT_CLASS(
  *         ELEMENT_CLASS_LOOKUP_STATE, doc, c_node)
  *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
@@ -62413,20 +62744,20 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
   }
 
-  /* "lxml/etree.pyx":1610
+  /* "lxml/etree.pyx":1621
  *         # prevent re-entry race condition - we just called into Python
  *         return getProxy(c_node)
  *     result = NEW_ELEMENT(element_class)             # <<<<<<<<<<<<<<
  *     if hasProxy(c_node):
  *         # prevent re-entry race condition - we just called into Python
  */
-  __pyx_t_4 = PY_NEW(__pyx_v_element_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1610, __pyx_L1_error)
+  __pyx_t_4 = PY_NEW(__pyx_v_element_class); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1621, __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, 1610, __pyx_L1_error)
+  if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1621, __pyx_L1_error)
   __Pyx_DECREF_SET(__pyx_v_result, ((struct LxmlElement *)__pyx_t_4));
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":1611
+  /* "lxml/etree.pyx":1622
  *         return getProxy(c_node)
  *     result = NEW_ELEMENT(element_class)
  *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
@@ -62436,7 +62767,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_3 = (__pyx_f_4lxml_5etree_hasProxy(__pyx_v_c_node) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1613
+    /* "lxml/etree.pyx":1624
  *     if hasProxy(c_node):
  *         # prevent re-entry race condition - we just called into Python
  *         result._c_node = NULL             # <<<<<<<<<<<<<<
@@ -62445,7 +62776,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
     __pyx_v_result->_c_node = NULL;
 
-    /* "lxml/etree.pyx":1614
+    /* "lxml/etree.pyx":1625
  *         # prevent re-entry race condition - we just called into Python
  *         result._c_node = NULL
  *         return getProxy(c_node)             # <<<<<<<<<<<<<<
@@ -62453,13 +62784,13 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  *     _registerProxy(result, doc, c_node)
  */
     __Pyx_XDECREF(((PyObject *)__pyx_r));
-    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1614, __pyx_L1_error)
+    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree_getProxy(__pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1625, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1611
+    /* "lxml/etree.pyx":1622
  *         return getProxy(c_node)
  *     result = NEW_ELEMENT(element_class)
  *     if hasProxy(c_node):             # <<<<<<<<<<<<<<
@@ -62468,16 +62799,16 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
   }
 
-  /* "lxml/etree.pyx":1616
+  /* "lxml/etree.pyx":1627
  *         return getProxy(c_node)
  * 
  *     _registerProxy(result, doc, c_node)             # <<<<<<<<<<<<<<
  *     if element_class is not _Element:
  *         result._init()
  */
-  __pyx_t_5 = __pyx_f_4lxml_5etree__registerProxy(__pyx_v_result, __pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 1616, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_4lxml_5etree__registerProxy(__pyx_v_result, __pyx_v_doc, __pyx_v_c_node); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 1627, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1617
+  /* "lxml/etree.pyx":1628
  * 
  *     _registerProxy(result, doc, c_node)
  *     if element_class is not _Element:             # <<<<<<<<<<<<<<
@@ -62488,14 +62819,14 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1618
+    /* "lxml/etree.pyx":1629
  *     _registerProxy(result, doc, c_node)
  *     if element_class is not _Element:
  *         result._init()             # <<<<<<<<<<<<<<
  *     return result
  * 
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_result), __pyx_n_s_init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1618, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_result), __pyx_n_s_init_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1629, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
@@ -62509,12 +62840,12 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
     }
     __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1618, __pyx_L1_error)
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1629, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1617
+    /* "lxml/etree.pyx":1628
  * 
  *     _registerProxy(result, doc, c_node)
  *     if element_class is not _Element:             # <<<<<<<<<<<<<<
@@ -62523,7 +62854,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
  */
   }
 
-  /* "lxml/etree.pyx":1619
+  /* "lxml/etree.pyx":1630
  *     if element_class is not _Element:
  *         result._init()
  *     return result             # <<<<<<<<<<<<<<
@@ -62535,7 +62866,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1597
+  /* "lxml/etree.pyx":1608
  * 
  * @cython.linetrace(False)
  * cdef _Element _elementFactory(_Document doc, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -62558,7 +62889,7 @@ static struct LxmlElement *__pyx_f_4lxml_5etree__elementFactory(struct LxmlDocum
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1624
+/* "lxml/etree.pyx":1635
  * @cython.internal
  * cdef class __ContentOnlyElement(_Element):
  *     cdef int _raiseImmutable(self) except -1:             # <<<<<<<<<<<<<<
@@ -62571,7 +62902,7 @@ static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UN
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_raiseImmutable", 0);
 
-  /* "lxml/etree.pyx":1625
+  /* "lxml/etree.pyx":1636
  * cdef class __ContentOnlyElement(_Element):
  *     cdef int _raiseImmutable(self) except -1:
  *         raise TypeError, u"this element does not have children or attributes"             # <<<<<<<<<<<<<<
@@ -62579,9 +62910,9 @@ static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UN
  *     def set(self, key, value):
  */
   __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_this_element_does_not_have_child, 0, 0);
-  __PYX_ERR(0, 1625, __pyx_L1_error)
+  __PYX_ERR(0, 1636, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1624
+  /* "lxml/etree.pyx":1635
  * @cython.internal
  * cdef class __ContentOnlyElement(_Element):
  *     cdef int _raiseImmutable(self) except -1:             # <<<<<<<<<<<<<<
@@ -62597,7 +62928,7 @@ static int __pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable(CYTHON_UN
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1627
+/* "lxml/etree.pyx":1638
  *         raise TypeError, u"this element does not have children or attributes"
  * 
  *     def set(self, key, value):             # <<<<<<<<<<<<<<
@@ -62638,11 +62969,11 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_1set(PyObject *__p
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1627, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, 1); __PYX_ERR(0, 1638, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1627, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set") < 0)) __PYX_ERR(0, 1638, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -62655,7 +62986,7 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_1set(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1627, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1638, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.set", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -62674,16 +63005,16 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(struct __pyx_o
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("set", 0);
 
-  /* "lxml/etree.pyx":1629
+  /* "lxml/etree.pyx":1640
  *     def set(self, key, value):
  *         u"set(self, key, value)"
  *         self._raiseImmutable()             # <<<<<<<<<<<<<<
  * 
  *     def append(self, value):
  */
-  __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, 1629, __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, 1640, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1627
+  /* "lxml/etree.pyx":1638
  *         raise TypeError, u"this element does not have children or attributes"
  * 
  *     def set(self, key, value):             # <<<<<<<<<<<<<<
@@ -62703,7 +63034,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_set(struct __pyx_o
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1631
+/* "lxml/etree.pyx":1642
  *         self._raiseImmutable()
  * 
  *     def append(self, value):             # <<<<<<<<<<<<<<
@@ -62732,16 +63063,16 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_2append(struct __p
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("append", 0);
 
-  /* "lxml/etree.pyx":1633
+  /* "lxml/etree.pyx":1644
  *     def append(self, value):
  *         u"append(self, value)"
  *         self._raiseImmutable()             # <<<<<<<<<<<<<<
  * 
  *     def insert(self, index, value):
  */
-  __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, 1633, __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, 1644, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1631
+  /* "lxml/etree.pyx":1642
  *         self._raiseImmutable()
  * 
  *     def append(self, value):             # <<<<<<<<<<<<<<
@@ -62761,7 +63092,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_2append(struct __p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1635
+/* "lxml/etree.pyx":1646
  *         self._raiseImmutable()
  * 
  *     def insert(self, index, value):             # <<<<<<<<<<<<<<
@@ -62802,11 +63133,11 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_5insert(PyObject *
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_value)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 1635, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, 1); __PYX_ERR(0, 1646, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) __PYX_ERR(0, 1635, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "insert") < 0)) __PYX_ERR(0, 1646, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 2) {
       goto __pyx_L5_argtuple_error;
@@ -62819,7 +63150,7 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_5insert(PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1635, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("insert", 1, 2, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1646, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.insert", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -62838,16 +63169,16 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4insert(struct __p
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("insert", 0);
 
-  /* "lxml/etree.pyx":1637
+  /* "lxml/etree.pyx":1648
  *     def insert(self, index, value):
  *         u"insert(self, index, value)"
  *         self._raiseImmutable()             # <<<<<<<<<<<<<<
  * 
  *     def __setitem__(self, index, value):
  */
-  __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, 1637, __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, 1648, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1635
+  /* "lxml/etree.pyx":1646
  *         self._raiseImmutable()
  * 
  *     def insert(self, index, value):             # <<<<<<<<<<<<<<
@@ -62867,7 +63198,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4insert(struct __p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1639
+/* "lxml/etree.pyx":1650
  *         self._raiseImmutable()
  * 
  *     def __setitem__(self, index, value):             # <<<<<<<<<<<<<<
@@ -62898,16 +63229,16 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6__setitem__(struct __py
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "lxml/etree.pyx":1641
+  /* "lxml/etree.pyx":1652
  *     def __setitem__(self, index, value):
  *         u"__setitem__(self, index, value)"
  *         self._raiseImmutable()             # <<<<<<<<<<<<<<
  * 
- *     property attrib:
+ *     @property
  */
-  __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, 1641, __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, 1652, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1639
+  /* "lxml/etree.pyx":1650
  *         self._raiseImmutable()
  * 
  *     def __setitem__(self, index, value):             # <<<<<<<<<<<<<<
@@ -62926,11 +63257,11 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_6__setitem__(struct __py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1644
+/* "lxml/etree.pyx":1655
  * 
- *     property attrib:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return IMMUTABLE_EMPTY_MAPPING
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         return IMMUTABLE_EMPTY_MAPPING
  * 
  */
 
@@ -62952,10 +63283,10 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CY
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1645
- *     property attrib:
- *         def __get__(self):
- *             return IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1656
+ *     @property
+ *     def attrib(self):
+ *         return IMMUTABLE_EMPTY_MAPPING             # <<<<<<<<<<<<<<
  * 
  *     property text:
  */
@@ -62964,11 +63295,11 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CY
   __pyx_r = __pyx_v_4lxml_5etree_IMMUTABLE_EMPTY_MAPPING;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1644
+  /* "lxml/etree.pyx":1655
  * 
- *     property attrib:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return IMMUTABLE_EMPTY_MAPPING
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         return IMMUTABLE_EMPTY_MAPPING
  * 
  */
 
@@ -62979,7 +63310,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_6attrib___get__(CY
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1648
+/* "lxml/etree.pyx":1659
  * 
  *     property text:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -63007,16 +63338,16 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1649
+  /* "lxml/etree.pyx":1660
  *     property text:
  *         def __get__(self):
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             return funicodeOrEmpty(self._c_node.content)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1649, __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, 1660, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1650
+  /* "lxml/etree.pyx":1661
  *         def __get__(self):
  *             _assertValidNode(self)
  *             return funicodeOrEmpty(self._c_node.content)             # <<<<<<<<<<<<<<
@@ -63024,13 +63355,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
  *         def __set__(self, value):
  */
   __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, 1650, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree_funicodeOrEmpty(__pyx_v_self->__pyx_base._c_node->content); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1661, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1648
+  /* "lxml/etree.pyx":1659
  * 
  *     property text:
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -63049,7 +63380,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text___get__(stru
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1652
+/* "lxml/etree.pyx":1663
  *             return funicodeOrEmpty(self._c_node.content)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -63081,16 +63412,16 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
   __Pyx_RefNannySetupContext("__set__", 0);
   __Pyx_INCREF(__pyx_v_value);
 
-  /* "lxml/etree.pyx":1654
+  /* "lxml/etree.pyx":1665
  *         def __set__(self, value):
  *             cdef tree.xmlDict* c_dict
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             if value is None:
  *                 c_text = <const_xmlChar*>NULL
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1654, __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, 1665, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1655
+  /* "lxml/etree.pyx":1666
  *             cdef tree.xmlDict* c_dict
  *             _assertValidNode(self)
  *             if value is None:             # <<<<<<<<<<<<<<
@@ -63101,7 +63432,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1656
+    /* "lxml/etree.pyx":1667
  *             _assertValidNode(self)
  *             if value is None:
  *                 c_text = <const_xmlChar*>NULL             # <<<<<<<<<<<<<<
@@ -63110,7 +63441,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  */
     __pyx_v_c_text = ((const xmlChar *)NULL);
 
-    /* "lxml/etree.pyx":1655
+    /* "lxml/etree.pyx":1666
  *             cdef tree.xmlDict* c_dict
  *             _assertValidNode(self)
  *             if value is None:             # <<<<<<<<<<<<<<
@@ -63120,7 +63451,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":1658
+  /* "lxml/etree.pyx":1669
  *                 c_text = <const_xmlChar*>NULL
  *             else:
  *                 value = _utf8(value)             # <<<<<<<<<<<<<<
@@ -63128,12 +63459,12 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  *             tree.xmlNodeSetContent(self._c_node, c_text)
  */
   /*else*/ {
-    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1658, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1669, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1659
+    /* "lxml/etree.pyx":1670
  *             else:
  *                 value = _utf8(value)
  *                 c_text = _xcstr(value)             # <<<<<<<<<<<<<<
@@ -63144,7 +63475,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":1660
+  /* "lxml/etree.pyx":1671
  *                 value = _utf8(value)
  *                 c_text = _xcstr(value)
  *             tree.xmlNodeSetContent(self._c_node, c_text)             # <<<<<<<<<<<<<<
@@ -63153,7 +63484,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
  */
   xmlNodeSetContent(__pyx_v_self->__pyx_base._c_node, __pyx_v_c_text);
 
-  /* "lxml/etree.pyx":1652
+  /* "lxml/etree.pyx":1663
  *             return funicodeOrEmpty(self._c_node.content)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -63174,7 +63505,7 @@ static int __pyx_pf_4lxml_5etree_20__ContentOnlyElement_4text_2__set__(struct __
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1663
+/* "lxml/etree.pyx":1674
  * 
  *     # ACCESSORS
  *     def __getitem__(self, x):             # <<<<<<<<<<<<<<
@@ -63207,7 +63538,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "lxml/etree.pyx":1665
+  /* "lxml/etree.pyx":1676
  *     def __getitem__(self, x):
  *         u"__getitem__(self, x)"
  *         if isinstance(x, slice):             # <<<<<<<<<<<<<<
@@ -63218,7 +63549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (likely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":1666
+    /* "lxml/etree.pyx":1677
  *         u"__getitem__(self, x)"
  *         if isinstance(x, slice):
  *             return []             # <<<<<<<<<<<<<<
@@ -63226,13 +63557,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  *             raise IndexError, u"list index out of range"
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1666, __pyx_L1_error)
+    __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1677, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1665
+    /* "lxml/etree.pyx":1676
  *     def __getitem__(self, x):
  *         u"__getitem__(self, x)"
  *         if isinstance(x, slice):             # <<<<<<<<<<<<<<
@@ -63241,7 +63572,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  */
   }
 
-  /* "lxml/etree.pyx":1668
+  /* "lxml/etree.pyx":1679
  *             return []
  *         else:
  *             raise IndexError, u"list index out of range"             # <<<<<<<<<<<<<<
@@ -63250,10 +63581,10 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_IndexError, __pyx_kp_u_list_index_out_of_range, 0, 0);
-    __PYX_ERR(0, 1668, __pyx_L1_error)
+    __PYX_ERR(0, 1679, __pyx_L1_error)
   }
 
-  /* "lxml/etree.pyx":1663
+  /* "lxml/etree.pyx":1674
  * 
  *     # ACCESSORS
  *     def __getitem__(self, x):             # <<<<<<<<<<<<<<
@@ -63272,7 +63603,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_8__getitem__(CYTHO
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1670
+/* "lxml/etree.pyx":1681
  *             raise IndexError, u"list index out of range"
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -63302,7 +63633,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "lxml/etree.pyx":1672
+  /* "lxml/etree.pyx":1683
  *     def __len__(self):
  *         u"__len__(self)"
  *         return 0             # <<<<<<<<<<<<<<
@@ -63312,7 +63643,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1670
+  /* "lxml/etree.pyx":1681
  *             raise IndexError, u"list index out of range"
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -63326,7 +63657,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_20__ContentOnlyElement_10__len__(CYTHON_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1674
+/* "lxml/etree.pyx":1685
  *         return 0
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -63372,7 +63703,7 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_13get(PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 1674, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 1685, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -63388,7 +63719,7 @@ static PyObject *__pyx_pw_4lxml_5etree_20__ContentOnlyElement_13get(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1674, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1685, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.__ContentOnlyElement.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -63406,7 +63737,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSE
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("get", 0);
 
-  /* "lxml/etree.pyx":1676
+  /* "lxml/etree.pyx":1687
  *     def get(self, key, default=None):
  *         u"get(self, key, default=None)"
  *         return None             # <<<<<<<<<<<<<<
@@ -63417,7 +63748,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSE
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1674
+  /* "lxml/etree.pyx":1685
  *         return 0
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -63432,7 +63763,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_12get(CYTHON_UNUSE
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1678
+/* "lxml/etree.pyx":1689
  *         return None
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -63461,7 +63792,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUS
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "lxml/etree.pyx":1680
+  /* "lxml/etree.pyx":1691
  *     def keys(self):
  *         u"keys(self)"
  *         return []             # <<<<<<<<<<<<<<
@@ -63469,13 +63800,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUS
  *     def items(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1680, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1691, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1678
+  /* "lxml/etree.pyx":1689
  *         return None
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -63494,7 +63825,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_14keys(CYTHON_UNUS
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1682
+/* "lxml/etree.pyx":1693
  *         return []
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
@@ -63523,7 +63854,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNU
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("items", 0);
 
-  /* "lxml/etree.pyx":1684
+  /* "lxml/etree.pyx":1695
  *     def items(self):
  *         u"items(self)"
  *         return []             # <<<<<<<<<<<<<<
@@ -63531,13 +63862,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNU
  *     def values(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1684, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1695, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1682
+  /* "lxml/etree.pyx":1693
  *         return []
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
@@ -63556,7 +63887,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_16items(CYTHON_UNU
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1686
+/* "lxml/etree.pyx":1697
  *         return []
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
@@ -63585,7 +63916,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UN
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("values", 0);
 
-  /* "lxml/etree.pyx":1688
+  /* "lxml/etree.pyx":1699
  *     def values(self):
  *         u"values(self)"
  *         return []             # <<<<<<<<<<<<<<
@@ -63593,13 +63924,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UN
  * cdef class _Comment(__ContentOnlyElement):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1688, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1699, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1686
+  /* "lxml/etree.pyx":1697
  *         return []
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
@@ -63618,11 +63949,11 @@ static PyObject *__pyx_pf_4lxml_5etree_20__ContentOnlyElement_18values(CYTHON_UN
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1692
+/* "lxml/etree.pyx":1703
  * cdef class _Comment(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return Comment
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return Comment
  * 
  */
 
@@ -63645,25 +63976,25 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(CYTHON_UNUSED stru
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1693
- *     property tag:
- *         def __get__(self):
- *             return Comment             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1704
+ *     @property
+ *     def tag(self):
+ *         return Comment             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1693, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1692
+  /* "lxml/etree.pyx":1703
  * cdef class _Comment(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return Comment
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return Comment
  * 
  */
 
@@ -63678,8 +64009,8 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment_3tag___get__(CYTHON_UNUSED stru
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1695
- *             return Comment
+/* "lxml/etree.pyx":1706
+ *         return Comment
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return "<!--%s-->" % strrepr(self.text)
@@ -63706,7 +64037,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/etree.pyx":1696
+  /* "lxml/etree.pyx":1707
  * 
  *     def __repr__(self):
  *         return "<!--%s-->" % strrepr(self.text)             # <<<<<<<<<<<<<<
@@ -63714,20 +64045,20 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml
  * cdef class _ProcessingInstruction(__ContentOnlyElement):
  */
   __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, 1696, __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, 1707, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1696, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1707, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1696, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1707, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1695
- *             return Comment
+  /* "lxml/etree.pyx":1706
+ *         return Comment
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return "<!--%s-->" % strrepr(self.text)
@@ -63746,11 +64077,11 @@ static PyObject *__pyx_pf_4lxml_5etree_8_Comment___repr__(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1700
+/* "lxml/etree.pyx":1711
  * cdef class _ProcessingInstruction(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ProcessingInstruction
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return ProcessingInstruction
  * 
  */
 
@@ -63773,25 +64104,25 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(CYT
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1701
- *     property tag:
- *         def __get__(self):
- *             return ProcessingInstruction             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1712
+ *     @property
+ *     def tag(self):
+ *         return ProcessingInstruction             # <<<<<<<<<<<<<<
  * 
  *     property target:
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1701, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1712, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1700
+  /* "lxml/etree.pyx":1711
  * cdef class _ProcessingInstruction(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return ProcessingInstruction
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return ProcessingInstruction
  * 
  */
 
@@ -63806,7 +64137,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_3tag___get__(CYT
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1705
+/* "lxml/etree.pyx":1716
  *     property target:
  *         # not in ElementTree
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -63834,16 +64165,16 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1706
+  /* "lxml/etree.pyx":1717
  *         # not in ElementTree
  *         def __get__(self):
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1706, __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, 1717, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1707
+  /* "lxml/etree.pyx":1718
  *         def __get__(self):
  *             _assertValidNode(self)
  *             return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
@@ -63851,13 +64182,13 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
  *         def __set__(self, value):
  */
   __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, 1707, __pyx_L1_error)
+  __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, 1718, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1705
+  /* "lxml/etree.pyx":1716
  *     property target:
  *         # not in ElementTree
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -63876,7 +64207,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target___get__(
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1709
+/* "lxml/etree.pyx":1720
  *             return funicode(self._c_node.name)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -63906,28 +64237,28 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
   __Pyx_RefNannySetupContext("__set__", 0);
   __Pyx_INCREF(__pyx_v_value);
 
-  /* "lxml/etree.pyx":1710
+  /* "lxml/etree.pyx":1721
  * 
  *         def __set__(self, value):
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             value = _utf8(value)
  *             c_text = _xcstr(value)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1710, __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, 1721, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1711
+  /* "lxml/etree.pyx":1722
  *         def __set__(self, value):
  *             _assertValidNode(self)
  *             value = _utf8(value)             # <<<<<<<<<<<<<<
  *             c_text = _xcstr(value)
  *             tree.xmlNodeSetName(self._c_node, c_text)
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1711, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1722, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":1712
+  /* "lxml/etree.pyx":1723
  *             _assertValidNode(self)
  *             value = _utf8(value)
  *             c_text = _xcstr(value)             # <<<<<<<<<<<<<<
@@ -63936,7 +64267,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  */
   __pyx_v_c_text = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value);
 
-  /* "lxml/etree.pyx":1713
+  /* "lxml/etree.pyx":1724
  *             value = _utf8(value)
  *             c_text = _xcstr(value)
  *             tree.xmlNodeSetName(self._c_node, c_text)             # <<<<<<<<<<<<<<
@@ -63945,7 +64276,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
  */
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, __pyx_v_c_text);
 
-  /* "lxml/etree.pyx":1709
+  /* "lxml/etree.pyx":1720
  *             return funicode(self._c_node.name)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -63966,7 +64297,7 @@ static int __pyx_pf_4lxml_5etree_22_ProcessingInstruction_6target_2__set__(struc
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1715
+/* "lxml/etree.pyx":1726
  *             tree.xmlNodeSetName(self._c_node, c_text)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -63997,29 +64328,29 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/etree.pyx":1716
+  /* "lxml/etree.pyx":1727
  * 
  *     def __repr__(self):
  *         text = self.text             # <<<<<<<<<<<<<<
  *         if text:
  *             return "<?%s %s?>" % (strrepr(self.target),
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1716, __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, 1727, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_text = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":1717
+  /* "lxml/etree.pyx":1728
  *     def __repr__(self):
  *         text = self.text
  *         if text:             # <<<<<<<<<<<<<<
  *             return "<?%s %s?>" % (strrepr(self.target),
  *                                   strrepr(text))
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1717, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_text); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1728, __pyx_L1_error)
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1718
+    /* "lxml/etree.pyx":1729
  *         text = self.text
  *         if text:
  *             return "<?%s %s?>" % (strrepr(self.target),             # <<<<<<<<<<<<<<
@@ -64027,30 +64358,30 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  *         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, 1718, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1729, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_3 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1718, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1729, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "lxml/etree.pyx":1719
+    /* "lxml/etree.pyx":1730
  *         if text:
  *             return "<?%s %s?>" % (strrepr(self.target),
  *                                   strrepr(text))             # <<<<<<<<<<<<<<
  *         else:
  *             return "<?%s?>" % strrepr(self.target)
  */
-    __pyx_t_1 = __pyx_f_4lxml_5etree_strrepr(__pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1719, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_4lxml_5etree_strrepr(__pyx_v_text); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
 
-    /* "lxml/etree.pyx":1718
+    /* "lxml/etree.pyx":1729
  *         text = self.text
  *         if text:
  *             return "<?%s %s?>" % (strrepr(self.target),             # <<<<<<<<<<<<<<
  *                                   strrepr(text))
  *         else:
  */
-    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1718, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1729, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_3);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_t_3);
@@ -64058,14 +64389,14 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
     PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_t_1);
     __pyx_t_3 = 0;
     __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1718, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_s_s, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1729, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1717
+    /* "lxml/etree.pyx":1728
  *     def __repr__(self):
  *         text = self.text
  *         if text:             # <<<<<<<<<<<<<<
@@ -64074,7 +64405,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  */
   }
 
-  /* "lxml/etree.pyx":1721
+  /* "lxml/etree.pyx":1732
  *                                   strrepr(text))
  *         else:
  *             return "<?%s?>" % strrepr(self.target)             # <<<<<<<<<<<<<<
@@ -64083,12 +64414,12 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
  */
   /*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, 1721, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1732, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_4 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1721, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1732, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s_2, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1732, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_r = __pyx_t_1;
@@ -64096,7 +64427,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":1715
+  /* "lxml/etree.pyx":1726
  *             tree.xmlNodeSetName(self._c_node, c_text)
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -64118,7 +64449,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction___repr__(struct
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1723
+/* "lxml/etree.pyx":1734
  *             return "<?%s?>" % strrepr(self.target)
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -64164,7 +64495,7 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_3get(PyObject *_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 1723, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 1734, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -64180,7 +64511,7 @@ static PyObject *__pyx_pw_4lxml_5etree_22_ProcessingInstruction_3get(PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1723, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1734, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ProcessingInstruction.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -64203,17 +64534,17 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("get", 0);
 
-  /* "lxml/etree.pyx":1735
+  /* "lxml/etree.pyx":1746
  *         It is not guaranteed to work for all possible text content.
  *         """
  *         return self.attrib.get(key, default)             # <<<<<<<<<<<<<<
  * 
- *     property attrib:
+ *     @property
  */
   __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, 1735, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_attrib); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1746, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1735, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_get); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1746, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_2 = NULL;
@@ -64231,7 +64562,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_v_default};
-    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1746, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else
@@ -64239,13 +64570,13 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_2, __pyx_v_key, __pyx_v_default};
-    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_4, 2+__pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1746, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_GOTREF(__pyx_t_1);
   } else
   #endif
   {
-    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1735, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(2+__pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1746, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     if (__pyx_t_2) {
       __Pyx_GIVEREF(__pyx_t_2); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_2); __pyx_t_2 = NULL;
@@ -64256,7 +64587,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
     __Pyx_INCREF(__pyx_v_default);
     __Pyx_GIVEREF(__pyx_v_default);
     PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_4, __pyx_v_default);
-    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1735, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_5, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1746, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
@@ -64265,7 +64596,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1723
+  /* "lxml/etree.pyx":1734
  *             return "<?%s?>" % strrepr(self.target)
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -64287,12 +64618,12 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_2get(struct __py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1743
- *         XML node, although this is not guaranteed to stay this way.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return { attr : (value1 or value2)
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+/* "lxml/etree.pyx":1749
+ * 
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         """Returns a dict containing all pseudo-attributes that can be
+ *         parsed from the text content of this processing instruction.
  */
 
 /* Python wrapper */
@@ -64327,28 +64658,28 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   int __pyx_t_11;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1744
+  /* "lxml/etree.pyx":1755
+ *         XML node, although this is not guaranteed to stay this way.
  *         """
- *         def __get__(self):
- *             return { attr : (value1 or value2)             # <<<<<<<<<<<<<<
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+ *         return { attr : (value1 or value2)             # <<<<<<<<<<<<<<
+ *                  for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
  * 
  */
   __Pyx_XDECREF(__pyx_r);
   { /* enter inner scope */
-    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L5_error)
+    __pyx_t_1 = PyDict_New(); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1755, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_1);
 
-    /* "lxml/etree.pyx":1745
- *         def __get__(self):
- *             return { attr : (value1 or value2)
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }             # <<<<<<<<<<<<<<
+    /* "lxml/etree.pyx":1756
+ *         """
+ *         return { attr : (value1 or value2)
+ *                  for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }             # <<<<<<<<<<<<<<
  * 
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1745, __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, 1756, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PyNumber_Add(__pyx_kp_u__10, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1745, __pyx_L5_error)
+    __pyx_t_4 = PyNumber_Add(__pyx_kp_u__10, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1756, __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);
@@ -64365,16 +64696,16 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
     __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_5, __pyx_t_4) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L5_error)
+    if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L5_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
       __pyx_t_3 = __pyx_t_2; __Pyx_INCREF(__pyx_t_3); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
     } else {
-      __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1745, __pyx_L5_error)
+      __pyx_t_6 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1756, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1745, __pyx_L5_error)
+      __pyx_t_7 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1756, __pyx_L5_error)
     }
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     for (;;) {
@@ -64382,17 +64713,17 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
         if (likely(PyList_CheckExact(__pyx_t_3))) {
           if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1745, __pyx_L5_error)
+          __pyx_t_2 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1756, __pyx_L5_error)
           #else
-          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L5_error)
+          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L5_error)
           __Pyx_GOTREF(__pyx_t_2);
           #endif
         } else {
           if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1745, __pyx_L5_error)
+          __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1756, __pyx_L5_error)
           #else
-          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1745, __pyx_L5_error)
+          __pyx_t_2 = PySequence_ITEM(__pyx_t_3, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1756, __pyx_L5_error)
           __Pyx_GOTREF(__pyx_t_2);
           #endif
         }
@@ -64402,7 +64733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 1745, __pyx_L5_error)
+            else __PYX_ERR(0, 1756, __pyx_L5_error)
           }
           break;
         }
@@ -64414,7 +64745,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
         if (unlikely(size != 3)) {
           if (size > 3) __Pyx_RaiseTooManyValuesError(3);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          __PYX_ERR(0, 1745, __pyx_L5_error)
+          __PYX_ERR(0, 1756, __pyx_L5_error)
         }
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -64430,17 +64761,17 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
         __Pyx_INCREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_8);
         #else
-        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1745, __pyx_L5_error)
+        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1756, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1745, __pyx_L5_error)
+        __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1756, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1745, __pyx_L5_error)
+        __pyx_t_8 = PySequence_ITEM(sequence, 2); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1756, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_8);
         #endif
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1745, __pyx_L5_error)
+        __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1756, __pyx_L5_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
         __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -64450,7 +64781,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
         __Pyx_GOTREF(__pyx_t_5);
         index = 2; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L8_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_8);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 1745, __pyx_L5_error)
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 3) < 0) __PYX_ERR(0, 1756, __pyx_L5_error)
         __pyx_t_10 = NULL;
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         goto __pyx_L9_unpacking_done;
@@ -64458,7 +64789,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
         __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
         __pyx_t_10 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        __PYX_ERR(0, 1745, __pyx_L5_error)
+        __PYX_ERR(0, 1756, __pyx_L5_error)
         __pyx_L9_unpacking_done:;
       }
       __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_attr, __pyx_t_4);
@@ -64468,14 +64799,14 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
       __Pyx_XDECREF_SET(__pyx_7genexpr__pyx_v_value2, __pyx_t_8);
       __pyx_t_8 = 0;
 
-      /* "lxml/etree.pyx":1744
+      /* "lxml/etree.pyx":1755
+ *         XML node, although this is not guaranteed to stay this way.
  *         """
- *         def __get__(self):
- *             return { attr : (value1 or value2)             # <<<<<<<<<<<<<<
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+ *         return { attr : (value1 or value2)             # <<<<<<<<<<<<<<
+ *                  for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
  * 
  */
-      __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_7genexpr__pyx_v_value1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1744, __pyx_L5_error)
+      __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_7genexpr__pyx_v_value1); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 1755, __pyx_L5_error)
       if (!__pyx_t_11) {
       } else {
         __Pyx_INCREF(__pyx_7genexpr__pyx_v_value1);
@@ -64485,13 +64816,13 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
       __Pyx_INCREF(__pyx_7genexpr__pyx_v_value2);
       __pyx_t_2 = __pyx_7genexpr__pyx_v_value2;
       __pyx_L10_bool_binop_done:;
-      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_attr, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1744, __pyx_L5_error)
+      if (unlikely(PyDict_SetItem(__pyx_t_1, (PyObject*)__pyx_7genexpr__pyx_v_attr, (PyObject*)__pyx_t_2))) __PYX_ERR(0, 1755, __pyx_L5_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-      /* "lxml/etree.pyx":1745
- *         def __get__(self):
- *             return { attr : (value1 or value2)
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }             # <<<<<<<<<<<<<<
+      /* "lxml/etree.pyx":1756
+ *         """
+ *         return { attr : (value1 or value2)
+ *                  for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }             # <<<<<<<<<<<<<<
  * 
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
  */
@@ -64512,12 +64843,12 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1743
- *         XML node, although this is not guaranteed to stay this way.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return { attr : (value1 or value2)
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+  /* "lxml/etree.pyx":1749
+ * 
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         """Returns a dict containing all pseudo-attributes that can be
+ *         parsed from the text content of this processing instruction.
  */
 
   /* function exit code */
@@ -64540,11 +64871,11 @@ static PyObject *__pyx_pf_4lxml_5etree_22_ProcessingInstruction_6attrib___get__(
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1751
+/* "lxml/etree.pyx":1762
  * cdef class _Entity(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return Entity
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return Entity
  * 
  */
 
@@ -64567,25 +64898,25 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(CYTHON_UNUSED struc
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1752
- *     property tag:
- *         def __get__(self):
- *             return Entity             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1763
+ *     @property
+ *     def tag(self):
+ *         return Entity             # <<<<<<<<<<<<<<
  * 
  *     property name:
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1752, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1763, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1751
+  /* "lxml/etree.pyx":1762
  * cdef class _Entity(__ContentOnlyElement):
- *     property tag:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return Entity
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         return Entity
  * 
  */
 
@@ -64600,7 +64931,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_3tag___get__(CYTHON_UNUSED struc
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1756
+/* "lxml/etree.pyx":1767
  *     property name:
  *         # not in ElementTree
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -64628,16 +64959,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1757
+  /* "lxml/etree.pyx":1768
  *         # not in ElementTree
  *         def __get__(self):
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1757, __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, 1768, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1758
+  /* "lxml/etree.pyx":1769
  *         def __get__(self):
  *             _assertValidNode(self)
  *             return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
@@ -64645,13 +64976,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
  *         def __set__(self, value):
  */
   __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, 1758, __pyx_L1_error)
+  __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, 1769, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1756
+  /* "lxml/etree.pyx":1767
  *     property name:
  *         # not in ElementTree
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -64670,7 +65001,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4name___get__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1760
+/* "lxml/etree.pyx":1771
  *             return funicode(self._c_node.name)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -64705,55 +65036,55 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "lxml/etree.pyx":1761
+  /* "lxml/etree.pyx":1772
  * 
  *         def __set__(self, value):
  *             _assertValidNode(self)             # <<<<<<<<<<<<<<
  *             value_utf = _utf8(value)
  *             if b'&' in value_utf or b';' in value_utf:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1761, __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, 1772, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1762
+  /* "lxml/etree.pyx":1773
  *         def __set__(self, value):
  *             _assertValidNode(self)
  *             value_utf = _utf8(value)             # <<<<<<<<<<<<<<
  *             if b'&' in value_utf or b';' in value_utf:
  *                 raise ValueError, f"Invalid entity name '{value}'"
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1762, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__utf8(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1773, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_value_utf = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":1763
+  /* "lxml/etree.pyx":1774
  *             _assertValidNode(self)
  *             value_utf = _utf8(value)
  *             if b'&' in value_utf or b';' in value_utf:             # <<<<<<<<<<<<<<
  *                 raise ValueError, f"Invalid entity name '{value}'"
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  */
-  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__28, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1763, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__28, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1774, __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__29, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1763, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__29, __pyx_v_value_utf, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1774, __pyx_L1_error)
   __pyx_t_4 = (__pyx_t_5 != 0);
   __pyx_t_3 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":1764
+    /* "lxml/etree.pyx":1775
  *             value_utf = _utf8(value)
  *             if b'&' in value_utf or b';' in value_utf:
  *                 raise ValueError, f"Invalid entity name '{value}'"             # <<<<<<<<<<<<<<
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
  * 
  */
-    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1764, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1775, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_6 = 0;
     __pyx_t_7 = 127;
@@ -64761,7 +65092,7 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
     __pyx_t_6 += 21;
     __Pyx_GIVEREF(__pyx_kp_u_Invalid_entity_name);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u_Invalid_entity_name);
-    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1764, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1775, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_8) : __pyx_t_7;
     __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_8);
@@ -64772,14 +65103,14 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
     __pyx_t_6 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__21);
     PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__21);
-    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1764, __pyx_L1_error)
+    __pyx_t_8 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1775, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_8);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_8, 0, 0);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
-    __PYX_ERR(0, 1764, __pyx_L1_error)
+    __PYX_ERR(0, 1775, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":1763
+    /* "lxml/etree.pyx":1774
  *             _assertValidNode(self)
  *             value_utf = _utf8(value)
  *             if b'&' in value_utf or b';' in value_utf:             # <<<<<<<<<<<<<<
@@ -64788,16 +65119,16 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
  */
   }
 
-  /* "lxml/etree.pyx":1765
+  /* "lxml/etree.pyx":1776
  *             if b'&' in value_utf or b';' in value_utf:
  *                 raise ValueError, f"Invalid entity name '{value}'"
  *             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))             # <<<<<<<<<<<<<<
  * 
- *     property text:
+ *     @property
  */
   xmlNodeSetName(__pyx_v_self->__pyx_base.__pyx_base._c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf));
 
-  /* "lxml/etree.pyx":1760
+  /* "lxml/etree.pyx":1771
  *             return funicode(self._c_node.name)
  * 
  *         def __set__(self, value):             # <<<<<<<<<<<<<<
@@ -64819,12 +65150,12 @@ static int __pyx_pf_4lxml_5etree_7_Entity_4name_2__set__(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1770
+/* "lxml/etree.pyx":1779
+ * 
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
  *         # FIXME: should this be None or '&[VALUE];' or the resolved
  *         # entity value ?
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidNode(self)
- *             return f'&{funicode(self._c_node.name)};'
  */
 
 /* Python wrapper */
@@ -64851,24 +65182,24 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1771
+  /* "lxml/etree.pyx":1782
+ *         # FIXME: should this be None or '&[VALUE];' or the resolved
  *         # entity value ?
- *         def __get__(self):
- *             _assertValidNode(self)             # <<<<<<<<<<<<<<
- *             return f'&{funicode(self._c_node.name)};'
+ *         _assertValidNode(self)             # <<<<<<<<<<<<<<
+ *         return f'&{funicode(self._c_node.name)};'
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_v_self)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1771, __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, 1782, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1772
- *         def __get__(self):
- *             _assertValidNode(self)
- *             return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1783
+ *         # entity value ?
+ *         _assertValidNode(self)
+ *         return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1772, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = 0;
   __pyx_t_4 = 127;
@@ -64876,9 +65207,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   __pyx_t_3 += 1;
   __Pyx_GIVEREF(__pyx_kp_u__28);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_kp_u__28);
-  __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, 1772, __pyx_L1_error)
+  __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, 1783, __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, 1772, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_6) : __pyx_t_4;
@@ -64890,19 +65221,19 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   __pyx_t_3 += 1;
   __Pyx_GIVEREF(__pyx_kp_u__29);
   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__29);
-  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1772, __pyx_L1_error)
+  __pyx_t_6 = __Pyx_PyUnicode_Join(__pyx_t_2, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1783, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_6;
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1770
+  /* "lxml/etree.pyx":1779
+ * 
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
  *         # FIXME: should this be None or '&[VALUE];' or the resolved
  *         # entity value ?
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidNode(self)
- *             return f'&{funicode(self._c_node.name)};'
  */
 
   /* function exit code */
@@ -64918,8 +65249,8 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity_4text___get__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1774
- *             return f'&{funicode(self._c_node.name)};'
+/* "lxml/etree.pyx":1785
+ *         return f'&{funicode(self._c_node.name)};'
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return "&%s;" % strrepr(self.name)
@@ -64946,7 +65277,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/etree.pyx":1775
+  /* "lxml/etree.pyx":1786
  * 
  *     def __repr__(self):
  *         return "&%s;" % strrepr(self.name)             # <<<<<<<<<<<<<<
@@ -64954,20 +65285,20 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_
  * 
  */
   __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, 1775, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1775, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree_strrepr(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1775, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_FormatSafe(__pyx_kp_s_s_3, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1786, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1774
- *             return f'&{funicode(self._c_node.name)};'
+  /* "lxml/etree.pyx":1785
+ *         return f'&{funicode(self._c_node.name)};'
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return "&%s;" % strrepr(self.name)
@@ -64986,7 +65317,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Entity___repr__(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1802
+/* "lxml/etree.pyx":1813
  *     cdef readonly unicode localname
  *     cdef readonly unicode namespace
  *     def __init__(self, text_or_uri_or_element, tag=None):             # <<<<<<<<<<<<<<
@@ -65030,7 +65361,7 @@ static int __pyx_pw_4lxml_5etree_5QName_1__init__(PyObject *__pyx_v_self, PyObje
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1802, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1813, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -65046,7 +65377,7 @@ static int __pyx_pw_4lxml_5etree_5QName_1__init__(PyObject *__pyx_v_self, PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1802, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1813, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.QName.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -65076,7 +65407,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __Pyx_INCREF(__pyx_v_text_or_uri_or_element);
   __Pyx_INCREF(__pyx_v_tag);
 
-  /* "lxml/etree.pyx":1803
+  /* "lxml/etree.pyx":1814
  *     cdef readonly unicode namespace
  *     def __init__(self, text_or_uri_or_element, tag=None):
  *         if text_or_uri_or_element is None:             # <<<<<<<<<<<<<<
@@ -65087,7 +65418,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1805
+    /* "lxml/etree.pyx":1816
  *         if text_or_uri_or_element is None:
  *             # Allow None as no namespace.
  *             text_or_uri_or_element, tag = tag, None             # <<<<<<<<<<<<<<
@@ -65103,7 +65434,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1803
+    /* "lxml/etree.pyx":1814
  *     cdef readonly unicode namespace
  *     def __init__(self, text_or_uri_or_element, tag=None):
  *         if text_or_uri_or_element is None:             # <<<<<<<<<<<<<<
@@ -65112,7 +65443,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
   }
 
-  /* "lxml/etree.pyx":1806
+  /* "lxml/etree.pyx":1817
  *             # Allow None as no namespace.
  *             text_or_uri_or_element, tag = tag, None
  *         if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
@@ -65122,7 +65453,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __pyx_t_2 = ((!(_isString(__pyx_v_text_or_uri_or_element) != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1807
+    /* "lxml/etree.pyx":1818
  *             text_or_uri_or_element, tag = tag, None
  *         if not _isString(text_or_uri_or_element):
  *             if isinstance(text_or_uri_or_element, _Element):             # <<<<<<<<<<<<<<
@@ -65133,19 +65464,19 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":1808
+      /* "lxml/etree.pyx":1819
  *         if not _isString(text_or_uri_or_element):
  *             if isinstance(text_or_uri_or_element, _Element):
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag             # <<<<<<<<<<<<<<
  *                 if not _isString(text_or_uri_or_element):
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  */
-      __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, 1808, __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, 1819, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/etree.pyx":1809
+      /* "lxml/etree.pyx":1820
  *             if isinstance(text_or_uri_or_element, _Element):
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
  *                 if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
@@ -65155,23 +65486,23 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       __pyx_t_1 = ((!(_isString(__pyx_v_text_or_uri_or_element) != 0)) != 0);
       if (unlikely(__pyx_t_1)) {
 
-        /* "lxml/etree.pyx":1810
+        /* "lxml/etree.pyx":1821
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
  *                 if not _isString(text_or_uri_or_element):
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"             # <<<<<<<<<<<<<<
  *             elif isinstance(text_or_uri_or_element, QName):
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  */
-        __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, 1810, __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, 1821, __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, 1810, __pyx_L1_error)
+        __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, 1821, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0, 0);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-        __PYX_ERR(0, 1810, __pyx_L1_error)
+        __PYX_ERR(0, 1821, __pyx_L1_error)
 
-        /* "lxml/etree.pyx":1809
+        /* "lxml/etree.pyx":1820
  *             if isinstance(text_or_uri_or_element, _Element):
  *                 text_or_uri_or_element = (<_Element>text_or_uri_or_element).tag
  *                 if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
@@ -65180,7 +65511,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
       }
 
-      /* "lxml/etree.pyx":1807
+      /* "lxml/etree.pyx":1818
  *             text_or_uri_or_element, tag = tag, None
  *         if not _isString(text_or_uri_or_element):
  *             if isinstance(text_or_uri_or_element, _Element):             # <<<<<<<<<<<<<<
@@ -65190,7 +65521,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       goto __pyx_L5;
     }
 
-    /* "lxml/etree.pyx":1811
+    /* "lxml/etree.pyx":1822
  *                 if not _isString(text_or_uri_or_element):
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  *             elif isinstance(text_or_uri_or_element, QName):             # <<<<<<<<<<<<<<
@@ -65201,7 +65532,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/etree.pyx":1812
+      /* "lxml/etree.pyx":1823
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  *             elif isinstance(text_or_uri_or_element, QName):
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text             # <<<<<<<<<<<<<<
@@ -65213,7 +65544,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":1811
+      /* "lxml/etree.pyx":1822
  *                 if not _isString(text_or_uri_or_element):
  *                     raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  *             elif isinstance(text_or_uri_or_element, QName):             # <<<<<<<<<<<<<<
@@ -65223,7 +65554,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       goto __pyx_L5;
     }
 
-    /* "lxml/etree.pyx":1813
+    /* "lxml/etree.pyx":1824
  *             elif isinstance(text_or_uri_or_element, QName):
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  *             elif text_or_uri_or_element is not None:             # <<<<<<<<<<<<<<
@@ -65234,19 +65565,19 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (likely(__pyx_t_1)) {
 
-      /* "lxml/etree.pyx":1814
+      /* "lxml/etree.pyx":1825
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  *             elif text_or_uri_or_element is not None:
  *                 text_or_uri_or_element = unicode(text_or_uri_or_element)             # <<<<<<<<<<<<<<
  *             else:
  *                 raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  */
-      __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1814, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1825, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_text_or_uri_or_element, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":1813
+      /* "lxml/etree.pyx":1824
  *             elif isinstance(text_or_uri_or_element, QName):
  *                 text_or_uri_or_element = (<QName>text_or_uri_or_element).text
  *             elif text_or_uri_or_element is not None:             # <<<<<<<<<<<<<<
@@ -65256,7 +65587,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       goto __pyx_L5;
     }
 
-    /* "lxml/etree.pyx":1816
+    /* "lxml/etree.pyx":1827
  *                 text_or_uri_or_element = unicode(text_or_uri_or_element)
  *             else:
  *                 raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"             # <<<<<<<<<<<<<<
@@ -65264,18 +65595,18 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
  */
     /*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, 1816, __pyx_L1_error)
+      __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, 1827, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
-      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_input_tag_of_type, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1816, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_Invalid_input_tag_of_type, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1827, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_4, 0, 0);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-      __PYX_ERR(0, 1816, __pyx_L1_error)
+      __PYX_ERR(0, 1827, __pyx_L1_error)
     }
     __pyx_L5:;
 
-    /* "lxml/etree.pyx":1806
+    /* "lxml/etree.pyx":1817
  *             # Allow None as no namespace.
  *             text_or_uri_or_element, tag = tag, None
  *         if not _isString(text_or_uri_or_element):             # <<<<<<<<<<<<<<
@@ -65284,14 +65615,14 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
   }
 
-  /* "lxml/etree.pyx":1818
+  /* "lxml/etree.pyx":1829
  *                 raise ValueError, f"Invalid input tag of type {type(text_or_uri_or_element)!r}"
  * 
  *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)             # <<<<<<<<<<<<<<
  *         if tag is not None:
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  */
-  __pyx_t_4 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_text_or_uri_or_element); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1818, __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, 1829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   if (likely(__pyx_t_4 != Py_None)) {
     PyObject* sequence = __pyx_t_4;
@@ -65299,7 +65630,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 1818, __pyx_L1_error)
+      __PYX_ERR(0, 1829, __pyx_L1_error)
     }
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
@@ -65307,21 +65638,21 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __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(0, 1818, __pyx_L1_error)
+    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1829, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1818, __pyx_L1_error)
+    __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1829, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   } else {
-    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 1818, __pyx_L1_error)
+    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 1829, __pyx_L1_error)
   }
   __pyx_v_ns_utf = __pyx_t_3;
   __pyx_t_3 = 0;
   __pyx_v_tag_utf = __pyx_t_5;
   __pyx_t_5 = 0;
 
-  /* "lxml/etree.pyx":1819
+  /* "lxml/etree.pyx":1830
  * 
  *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -65332,7 +65663,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1821
+    /* "lxml/etree.pyx":1832
  *         if tag is not None:
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  *             if ns_utf is None:             # <<<<<<<<<<<<<<
@@ -65343,7 +65674,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":1822
+      /* "lxml/etree.pyx":1833
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  *             if ns_utf is None:
  *                 ns_utf = tag_utf # case 1: namespace ended up as tag name             # <<<<<<<<<<<<<<
@@ -65353,7 +65684,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
       __Pyx_INCREF(__pyx_v_tag_utf);
       __Pyx_DECREF_SET(__pyx_v_ns_utf, __pyx_v_tag_utf);
 
-      /* "lxml/etree.pyx":1821
+      /* "lxml/etree.pyx":1832
  *         if tag is not None:
  *             # either ('ns', 'tag') or ('{ns}oldtag', 'newtag')
  *             if ns_utf is None:             # <<<<<<<<<<<<<<
@@ -65362,19 +65693,19 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
     }
 
-    /* "lxml/etree.pyx":1823
+    /* "lxml/etree.pyx":1834
  *             if ns_utf is None:
  *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
  *             tag_utf = _utf8(tag)             # <<<<<<<<<<<<<<
  *         _tagValidOrRaise(tag_utf)
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1823, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree__utf8(__pyx_v_tag); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1834, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_tag_utf, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1819
+    /* "lxml/etree.pyx":1830
  * 
  *         ns_utf, tag_utf = _getNsTag(text_or_uri_or_element)
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -65383,16 +65714,16 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
   }
 
-  /* "lxml/etree.pyx":1824
+  /* "lxml/etree.pyx":1835
  *                 ns_utf = tag_utf # case 1: namespace ended up as tag name
  *             tag_utf = _utf8(tag)
  *         _tagValidOrRaise(tag_utf)             # <<<<<<<<<<<<<<
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  *         if ns_utf is None:
  */
-  __pyx_t_6 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_tag_utf); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1824, __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, 1835, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1825
+  /* "lxml/etree.pyx":1836
  *             tag_utf = _utf8(tag)
  *         _tagValidOrRaise(tag_utf)
  *         self.localname = (<bytes>tag_utf).decode('utf8')             # <<<<<<<<<<<<<<
@@ -65401,9 +65732,9 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
  */
   if (unlikely(__pyx_v_tag_utf == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-    __PYX_ERR(0, 1825, __pyx_L1_error)
+    __PYX_ERR(0, 1836, __pyx_L1_error)
   }
-  __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1825, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_tag_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_GIVEREF(__pyx_t_4);
   __Pyx_GOTREF(__pyx_v_self->localname);
@@ -65411,7 +65742,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __pyx_v_self->localname = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":1826
+  /* "lxml/etree.pyx":1837
  *         _tagValidOrRaise(tag_utf)
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  *         if ns_utf is None:             # <<<<<<<<<<<<<<
@@ -65422,7 +65753,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1827
+    /* "lxml/etree.pyx":1838
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  *         if ns_utf is None:
  *             self.namespace = None             # <<<<<<<<<<<<<<
@@ -65435,7 +65766,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __Pyx_DECREF(__pyx_v_self->namespace);
     __pyx_v_self->namespace = ((PyObject*)Py_None);
 
-    /* "lxml/etree.pyx":1828
+    /* "lxml/etree.pyx":1839
  *         if ns_utf is None:
  *             self.namespace = None
  *             self.text = self.localname             # <<<<<<<<<<<<<<
@@ -65450,7 +65781,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_v_self->text = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1826
+    /* "lxml/etree.pyx":1837
  *         _tagValidOrRaise(tag_utf)
  *         self.localname = (<bytes>tag_utf).decode('utf8')
  *         if ns_utf is None:             # <<<<<<<<<<<<<<
@@ -65460,7 +65791,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     goto __pyx_L9;
   }
 
-  /* "lxml/etree.pyx":1830
+  /* "lxml/etree.pyx":1841
  *             self.text = self.localname
  *         else:
  *             self.namespace = (<bytes>ns_utf).decode('utf8')             # <<<<<<<<<<<<<<
@@ -65470,9 +65801,9 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   /*else*/ {
     if (unlikely(__pyx_v_ns_utf == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(0, 1830, __pyx_L1_error)
+      __PYX_ERR(0, 1841, __pyx_L1_error)
     }
-    __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_ns_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1830, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_ns_utf), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1841, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_GIVEREF(__pyx_t_4);
     __Pyx_GOTREF(__pyx_v_self->namespace);
@@ -65480,14 +65811,14 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_v_self->namespace = ((PyObject*)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1831
+    /* "lxml/etree.pyx":1842
  *         else:
  *             self.namespace = (<bytes>ns_utf).decode('utf8')
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)             # <<<<<<<<<<<<<<
  *     def __str__(self):
  *         return self.text
  */
-    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1831, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1842, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_7 = 0;
     __pyx_t_8 = 127;
@@ -65495,7 +65826,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_7 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__30);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u__30);
-    __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->namespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1831, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->namespace); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __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;
     __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
@@ -65506,14 +65837,14 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
     __pyx_t_7 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__31);
     PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__31);
-    __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->localname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1831, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyUnicode_Unicode(__pyx_v_self->localname); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __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;
     __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
     __Pyx_GIVEREF(__pyx_t_5);
     PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_t_5);
     __pyx_t_5 = 0;
-    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1831, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1842, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GIVEREF(__pyx_t_5);
@@ -65524,7 +65855,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   }
   __pyx_L9:;
 
-  /* "lxml/etree.pyx":1802
+  /* "lxml/etree.pyx":1813
  *     cdef readonly unicode localname
  *     cdef readonly unicode namespace
  *     def __init__(self, text_or_uri_or_element, tag=None):             # <<<<<<<<<<<<<<
@@ -65550,7 +65881,7 @@ static int __pyx_pf_4lxml_5etree_5QName___init__(struct __pyx_obj_4lxml_5etree_Q
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1832
+/* "lxml/etree.pyx":1843
  *             self.namespace = (<bytes>ns_utf).decode('utf8')
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)
  *     def __str__(self):             # <<<<<<<<<<<<<<
@@ -65576,7 +65907,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5e
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__str__", 0);
 
-  /* "lxml/etree.pyx":1833
+  /* "lxml/etree.pyx":1844
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)
  *     def __str__(self):
  *         return self.text             # <<<<<<<<<<<<<<
@@ -65588,7 +65919,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5e
   __pyx_r = __pyx_v_self->text;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1832
+  /* "lxml/etree.pyx":1843
  *             self.namespace = (<bytes>ns_utf).decode('utf8')
  *             self.text = u"{%s}%s" % (self.namespace, self.localname)
  *     def __str__(self):             # <<<<<<<<<<<<<<
@@ -65603,7 +65934,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_2__str__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1834
+/* "lxml/etree.pyx":1845
  *     def __str__(self):
  *         return self.text
  *     def __hash__(self):             # <<<<<<<<<<<<<<
@@ -65631,7 +65962,7 @@ static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5
   Py_hash_t __pyx_t_2;
   __Pyx_RefNannySetupContext("__hash__", 0);
 
-  /* "lxml/etree.pyx":1835
+  /* "lxml/etree.pyx":1846
  *         return self.text
  *     def __hash__(self):
  *         return hash(self.text)             # <<<<<<<<<<<<<<
@@ -65640,12 +65971,12 @@ static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5
  */
   __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, 1835, __pyx_L1_error)
+  __pyx_t_2 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_2 == ((Py_hash_t)-1))) __PYX_ERR(0, 1846, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1834
+  /* "lxml/etree.pyx":1845
  *     def __str__(self):
  *         return self.text
  *     def __hash__(self):             # <<<<<<<<<<<<<<
@@ -65664,7 +65995,7 @@ static Py_hash_t __pyx_pf_4lxml_5etree_5QName_4__hash__(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1836
+/* "lxml/etree.pyx":1847
  *     def __hash__(self):
  *         return hash(self.text)
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -65700,7 +66031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
   __Pyx_RefNannySetupContext("__richcmp__", 0);
   __Pyx_INCREF(__pyx_v_other);
 
-  /* "lxml/etree.pyx":1837
+  /* "lxml/etree.pyx":1848
  *         return hash(self.text)
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -65716,7 +66047,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":1838
+      /* "lxml/etree.pyx":1849
  *     def __richcmp__(self, other, int op):
  *         try:
  *             if type(other) is QName:             # <<<<<<<<<<<<<<
@@ -65727,7 +66058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
       __pyx_t_5 = (__pyx_t_4 != 0);
       if (__pyx_t_5) {
 
-        /* "lxml/etree.pyx":1839
+        /* "lxml/etree.pyx":1850
  *         try:
  *             if type(other) is QName:
  *                 other = (<QName>other).text             # <<<<<<<<<<<<<<
@@ -65739,7 +66070,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_6);
         __pyx_t_6 = 0;
 
-        /* "lxml/etree.pyx":1838
+        /* "lxml/etree.pyx":1849
  *     def __richcmp__(self, other, int op):
  *         try:
  *             if type(other) is QName:             # <<<<<<<<<<<<<<
@@ -65749,7 +66080,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
         goto __pyx_L9;
       }
 
-      /* "lxml/etree.pyx":1840
+      /* "lxml/etree.pyx":1851
  *             if type(other) is QName:
  *                 other = (<QName>other).text
  *             elif not isinstance(other, unicode):             # <<<<<<<<<<<<<<
@@ -65760,19 +66091,19 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
       __pyx_t_4 = ((!(__pyx_t_5 != 0)) != 0);
       if (__pyx_t_4) {
 
-        /* "lxml/etree.pyx":1841
+        /* "lxml/etree.pyx":1852
  *                 other = (<QName>other).text
  *             elif not isinstance(other, unicode):
  *                 other = unicode(other)             # <<<<<<<<<<<<<<
  *         except (ValueError, UnicodeDecodeError):
  *             return NotImplemented
  */
-        __pyx_t_6 = __Pyx_PyObject_Unicode(__pyx_v_other); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1841, __pyx_L3_error)
+        __pyx_t_6 = __Pyx_PyObject_Unicode(__pyx_v_other); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1852, __pyx_L3_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_6);
         __pyx_t_6 = 0;
 
-        /* "lxml/etree.pyx":1840
+        /* "lxml/etree.pyx":1851
  *             if type(other) is QName:
  *                 other = (<QName>other).text
  *             elif not isinstance(other, unicode):             # <<<<<<<<<<<<<<
@@ -65782,7 +66113,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
       }
       __pyx_L9:;
 
-      /* "lxml/etree.pyx":1837
+      /* "lxml/etree.pyx":1848
  *         return hash(self.text)
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -65797,7 +66128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":1842
+    /* "lxml/etree.pyx":1853
  *             elif not isinstance(other, unicode):
  *                 other = unicode(other)
  *         except (ValueError, UnicodeDecodeError):             # <<<<<<<<<<<<<<
@@ -65807,12 +66138,12 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
     __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);
-      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 1842, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_8, &__pyx_t_9) < 0) __PYX_ERR(0, 1853, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_9);
 
-      /* "lxml/etree.pyx":1843
+      /* "lxml/etree.pyx":1854
  *                 other = unicode(other)
  *         except (ValueError, UnicodeDecodeError):
  *             return NotImplemented             # <<<<<<<<<<<<<<
@@ -65830,7 +66161,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
 
-    /* "lxml/etree.pyx":1837
+    /* "lxml/etree.pyx":1848
  *         return hash(self.text)
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -65851,7 +66182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
     __pyx_L8_try_end:;
   }
 
-  /* "lxml/etree.pyx":1844
+  /* "lxml/etree.pyx":1855
  *         except (ValueError, UnicodeDecodeError):
  *             return NotImplemented
  *         return python.PyObject_RichCompare(self.text, other, op)             # <<<<<<<<<<<<<<
@@ -65861,14 +66192,14 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_9 = __pyx_v_self->text;
   __Pyx_INCREF(__pyx_t_9);
-  __pyx_t_8 = PyObject_RichCompare(__pyx_t_9, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1844, __pyx_L1_error)
+  __pyx_t_8 = PyObject_RichCompare(__pyx_t_9, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1855, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_8);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   __pyx_r = __pyx_t_8;
   __pyx_t_8 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1836
+  /* "lxml/etree.pyx":1847
  *     def __hash__(self):
  *         return hash(self.text)
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -65890,7 +66221,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_6__richcmp__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1799
+/* "lxml/etree.pyx":1810
  *     their text content.
  *     """
  *     cdef readonly unicode text             # <<<<<<<<<<<<<<
@@ -65927,7 +66258,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_4text___get__(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1800
+/* "lxml/etree.pyx":1811
  *     """
  *     cdef readonly unicode text
  *     cdef readonly unicode localname             # <<<<<<<<<<<<<<
@@ -65964,7 +66295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_9localname___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1801
+/* "lxml/etree.pyx":1812
  *     cdef readonly unicode text
  *     cdef readonly unicode localname
  *     cdef readonly unicode namespace             # <<<<<<<<<<<<<<
@@ -66001,7 +66332,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5QName_9namespace___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1857
+/* "lxml/etree.pyx":1868
  * 
  *     @cython.final
  *     cdef int _assertHasRoot(self) except -1:             # <<<<<<<<<<<<<<
@@ -66015,7 +66346,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_assertHasRoot", 0);
 
-  /* "lxml/etree.pyx":1863
+  /* "lxml/etree.pyx":1874
  *         the caller program.
  *         """
  *         assert self._context_node is not None, \             # <<<<<<<<<<<<<<
@@ -66027,12 +66358,12 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
     if (unlikely(!(__pyx_t_1 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_u_ElementTree_not_initialized_miss);
-      __PYX_ERR(0, 1863, __pyx_L1_error)
+      __PYX_ERR(0, 1874, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "lxml/etree.pyx":1865
+  /* "lxml/etree.pyx":1876
  *         assert self._context_node is not None, \
  *                u"ElementTree not initialized, missing root"
  *         return 0             # <<<<<<<<<<<<<<
@@ -66042,7 +66373,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1857
+  /* "lxml/etree.pyx":1868
  * 
  *     @cython.final
  *     cdef int _assertHasRoot(self) except -1:             # <<<<<<<<<<<<<<
@@ -66059,7 +66390,7 @@ static int __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(struct LxmlElement
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1867
+/* "lxml/etree.pyx":1878
  *         return 0
  * 
  *     def parse(self, source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -66112,7 +66443,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_1parse(PyObject *__pyx_v_s
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1867, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1878, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -66129,13 +66460,13 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_1parse(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1867, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1878, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.parse", __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(0, 1867, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 1878, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_parse(((struct LxmlElementTree *)__pyx_v_self), __pyx_v_source, __pyx_v_parser, __pyx_v_base_url);
 
   /* function exit code */
@@ -66164,7 +66495,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   int __pyx_t_10;
   __Pyx_RefNannySetupContext("parse", 0);
 
-  /* "lxml/etree.pyx":1872
+  /* "lxml/etree.pyx":1883
  *         Updates self with the content of source and returns its root
  *         """
  *         cdef _Document doc = None             # <<<<<<<<<<<<<<
@@ -66174,7 +66505,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   __Pyx_INCREF(Py_None);
   __pyx_v_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "lxml/etree.pyx":1873
+  /* "lxml/etree.pyx":1884
  *         """
  *         cdef _Document doc = None
  *         try:             # <<<<<<<<<<<<<<
@@ -66190,35 +66521,35 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":1874
+      /* "lxml/etree.pyx":1885
  *         cdef _Document doc = None
  *         try:
  *             doc = _parseDocument(source, parser, base_url)             # <<<<<<<<<<<<<<
  *             self._context_node = doc.getroot()
  *             if self._context_node is None:
  */
-      __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, 1874, __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, 1885, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_doc, ((struct LxmlDocument *)__pyx_t_4));
       __pyx_t_4 = 0;
 
-      /* "lxml/etree.pyx":1875
+      /* "lxml/etree.pyx":1886
  *         try:
  *             doc = _parseDocument(source, parser, base_url)
  *             self._context_node = doc.getroot()             # <<<<<<<<<<<<<<
  *             if self._context_node is None:
  *                 self._doc = doc
  */
-      __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1875, __pyx_L3_error)
+      __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __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, 1875, __pyx_L3_error)
+      if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1886, __pyx_L3_error)
       __Pyx_GIVEREF(__pyx_t_4);
       __Pyx_GOTREF(__pyx_v_self->_context_node);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_context_node));
       __pyx_v_self->_context_node = ((struct LxmlElement *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/etree.pyx":1876
+      /* "lxml/etree.pyx":1887
  *             doc = _parseDocument(source, parser, base_url)
  *             self._context_node = doc.getroot()
  *             if self._context_node is None:             # <<<<<<<<<<<<<<
@@ -66229,7 +66560,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
       __pyx_t_6 = (__pyx_t_5 != 0);
       if (__pyx_t_6) {
 
-        /* "lxml/etree.pyx":1877
+        /* "lxml/etree.pyx":1888
  *             self._context_node = doc.getroot()
  *             if self._context_node is None:
  *                 self._doc = doc             # <<<<<<<<<<<<<<
@@ -66242,7 +66573,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
         __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
         __pyx_v_self->_doc = __pyx_v_doc;
 
-        /* "lxml/etree.pyx":1876
+        /* "lxml/etree.pyx":1887
  *             doc = _parseDocument(source, parser, base_url)
  *             self._context_node = doc.getroot()
  *             if self._context_node is None:             # <<<<<<<<<<<<<<
@@ -66251,7 +66582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  */
       }
 
-      /* "lxml/etree.pyx":1873
+      /* "lxml/etree.pyx":1884
  *         """
  *         cdef _Document doc = None
  *         try:             # <<<<<<<<<<<<<<
@@ -66266,7 +66597,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1878
+    /* "lxml/etree.pyx":1889
  *             if self._context_node is None:
  *                 self._doc = doc
  *         except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -66274,7 +66605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
  *             self._context_node = result_container.result
  */
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_7, &__pyx_t_8);
-    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1878, __pyx_L5_except_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1889, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_9);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -66282,23 +66613,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
     __pyx_t_4 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
     if (__pyx_t_10) {
       __Pyx_AddTraceback("lxml.etree._ElementTree.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(0, 1878, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_4) < 0) __PYX_ERR(0, 1889, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_7);
       __pyx_v_result_container = __pyx_t_7;
 
-      /* "lxml/etree.pyx":1880
+      /* "lxml/etree.pyx":1891
  *         except _TargetParserResult as result_container:
  *             # raises a TypeError if we don't get an _Element
  *             self._context_node = result_container.result             # <<<<<<<<<<<<<<
  *         return self._context_node
  * 
  */
-      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1880, __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, 1891, __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, 1880, __pyx_L5_except_error)
+      if (!(likely(((__pyx_t_9) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_9, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1891, __pyx_L5_except_error)
       __Pyx_GIVEREF(__pyx_t_9);
       __Pyx_GOTREF(__pyx_v_self->_context_node);
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_context_node));
@@ -66312,7 +66643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
 
-    /* "lxml/etree.pyx":1873
+    /* "lxml/etree.pyx":1884
  *         """
  *         cdef _Document doc = None
  *         try:             # <<<<<<<<<<<<<<
@@ -66332,7 +66663,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
     __pyx_L8_try_end:;
   }
 
-  /* "lxml/etree.pyx":1881
+  /* "lxml/etree.pyx":1892
  *             # raises a TypeError if we don't get an _Element
  *             self._context_node = result_container.result
  *         return self._context_node             # <<<<<<<<<<<<<<
@@ -66344,7 +66675,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   __pyx_r = ((PyObject *)__pyx_v_self->_context_node);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1867
+  /* "lxml/etree.pyx":1878
  *         return 0
  * 
  *     def parse(self, source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -66368,7 +66699,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_parse(struct LxmlElementTr
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1883
+/* "lxml/etree.pyx":1894
  *         return self._context_node
  * 
  *     def _setroot(self, _Element root not None):             # <<<<<<<<<<<<<<
@@ -66384,7 +66715,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_3_setroot(PyObject *__pyx_
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_setroot (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_root), __pyx_ptype_4lxml_5etree__Element, 0, "root", 0))) __PYX_ERR(0, 1883, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_root), __pyx_ptype_4lxml_5etree__Element, 0, "root", 0))) __PYX_ERR(0, 1894, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(((struct LxmlElementTree *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_root));
 
   /* function exit code */
@@ -66403,16 +66734,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_setroot", 0);
 
-  /* "lxml/etree.pyx":1888
+  /* "lxml/etree.pyx":1899
  *         Relocate the ElementTree to a new root node.
  *         """
  *         _assertValidNode(root)             # <<<<<<<<<<<<<<
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise TypeError, u"Only elements can be the root of an ElementTree"
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1888, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1899, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1889
+  /* "lxml/etree.pyx":1900
  *         """
  *         _assertValidNode(root)
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -66422,7 +66753,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   __pyx_t_2 = ((__pyx_v_root->_c_node->type != XML_ELEMENT_NODE) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":1890
+    /* "lxml/etree.pyx":1901
  *         _assertValidNode(root)
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise TypeError, u"Only elements can be the root of an ElementTree"             # <<<<<<<<<<<<<<
@@ -66430,9 +66761,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  *         self._doc = None
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Only_elements_can_be_the_root_of, 0, 0);
-    __PYX_ERR(0, 1890, __pyx_L1_error)
+    __PYX_ERR(0, 1901, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":1889
+    /* "lxml/etree.pyx":1900
  *         """
  *         _assertValidNode(root)
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -66441,7 +66772,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
  */
   }
 
-  /* "lxml/etree.pyx":1891
+  /* "lxml/etree.pyx":1902
  *         if root._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise TypeError, u"Only elements can be the root of an ElementTree"
  *         self._context_node = root             # <<<<<<<<<<<<<<
@@ -66454,7 +66785,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_context_node));
   __pyx_v_self->_context_node = __pyx_v_root;
 
-  /* "lxml/etree.pyx":1892
+  /* "lxml/etree.pyx":1903
  *             raise TypeError, u"Only elements can be the root of an ElementTree"
  *         self._context_node = root
  *         self._doc = None             # <<<<<<<<<<<<<<
@@ -66467,7 +66798,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_doc));
   __pyx_v_self->_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "lxml/etree.pyx":1883
+  /* "lxml/etree.pyx":1894
  *         return self._context_node
  * 
  *     def _setroot(self, _Element root not None):             # <<<<<<<<<<<<<<
@@ -66487,7 +66818,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_2_setroot(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1894
+/* "lxml/etree.pyx":1905
  *         self._doc = None
  * 
  *     def getroot(self):             # <<<<<<<<<<<<<<
@@ -66515,7 +66846,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElemen
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getroot", 0);
 
-  /* "lxml/etree.pyx":1899
+  /* "lxml/etree.pyx":1910
  *         Gets the root element for this tree.
  *         """
  *         return self._context_node             # <<<<<<<<<<<<<<
@@ -66527,7 +66858,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElemen
   __pyx_r = ((PyObject *)__pyx_v_self->_context_node);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1894
+  /* "lxml/etree.pyx":1905
  *         self._doc = None
  * 
  *     def getroot(self):             # <<<<<<<<<<<<<<
@@ -66542,7 +66873,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_4getroot(struct LxmlElemen
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1901
+/* "lxml/etree.pyx":1912
  *         return self._context_node
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
@@ -66572,7 +66903,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__copy__", 0);
 
-  /* "lxml/etree.pyx":1902
+  /* "lxml/etree.pyx":1913
  * 
  *     def __copy__(self):
  *         return _elementTreeFactory(self._doc, self._context_node)             # <<<<<<<<<<<<<<
@@ -66584,7 +66915,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
   __Pyx_INCREF(__pyx_t_1);
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
-  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)__pyx_t_1), ((struct LxmlElement *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1902, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)__pyx_t_1), ((struct LxmlElement *)__pyx_t_2))); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1913, __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;
@@ -66592,7 +66923,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1901
+  /* "lxml/etree.pyx":1912
  *         return self._context_node
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
@@ -66613,7 +66944,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6__copy__(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1904
+/* "lxml/etree.pyx":1915
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
@@ -66649,7 +66980,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
 
-  /* "lxml/etree.pyx":1908
+  /* "lxml/etree.pyx":1919
  *         cdef _Document doc
  *         cdef xmlDoc* c_doc
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -66660,14 +66991,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1909
+    /* "lxml/etree.pyx":1920
  *         cdef xmlDoc* c_doc
  *         if self._context_node is not None:
  *             root = self._context_node.__copy__()             # <<<<<<<<<<<<<<
  *             assert root is not None
  *             _assertValidNode(root)
  */
-    __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, 1909, __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, 1920, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -66681,14 +67012,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
     }
     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1909, __pyx_L1_error)
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1920, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1909, __pyx_L1_error)
+    if (!(likely(((__pyx_t_3) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_3, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 1920, __pyx_L1_error)
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1910
+    /* "lxml/etree.pyx":1921
  *         if self._context_node is not None:
  *             root = self._context_node.__copy__()
  *             assert root is not None             # <<<<<<<<<<<<<<
@@ -66700,30 +67031,30 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
       __pyx_t_2 = (((PyObject *)__pyx_v_root) != Py_None);
       if (unlikely(!(__pyx_t_2 != 0))) {
         PyErr_SetNone(PyExc_AssertionError);
-        __PYX_ERR(0, 1910, __pyx_L1_error)
+        __PYX_ERR(0, 1921, __pyx_L1_error)
       }
     }
     #endif
 
-    /* "lxml/etree.pyx":1911
+    /* "lxml/etree.pyx":1922
  *             root = self._context_node.__copy__()
  *             assert root is not None
  *             _assertValidNode(root)             # <<<<<<<<<<<<<<
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  *             return _elementTreeFactory(None, root)
  */
-    __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1911, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1922, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":1912
+    /* "lxml/etree.pyx":1923
  *             assert root is not None
  *             _assertValidNode(root)
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)             # <<<<<<<<<<<<<<
  *             return _elementTreeFactory(None, root)
  *         elif self._doc is not None:
  */
-    __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, 1912, __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, 1923, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":1913
+    /* "lxml/etree.pyx":1924
  *             _assertValidNode(root)
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  *             return _elementTreeFactory(None, root)             # <<<<<<<<<<<<<<
@@ -66731,13 +67062,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             _assertValidDoc(self._doc)
  */
     __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, 1913, __pyx_L1_error)
+    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(((struct LxmlDocument *)Py_None), __pyx_v_root)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1924, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1908
+    /* "lxml/etree.pyx":1919
  *         cdef _Document doc
  *         cdef xmlDoc* c_doc
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -66746,7 +67077,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
   }
 
-  /* "lxml/etree.pyx":1914
+  /* "lxml/etree.pyx":1925
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  *             return _elementTreeFactory(None, root)
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -66757,7 +67088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":1915
+    /* "lxml/etree.pyx":1926
  *             return _elementTreeFactory(None, root)
  *         elif self._doc is not None:
  *             _assertValidDoc(self._doc)             # <<<<<<<<<<<<<<
@@ -66766,10 +67097,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
     __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, 1915, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_4lxml_5etree__assertValidDoc(((struct LxmlDocument *)__pyx_t_3)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1926, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":1916
+    /* "lxml/etree.pyx":1927
  *         elif self._doc is not None:
  *             _assertValidDoc(self._doc)
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)             # <<<<<<<<<<<<<<
@@ -66778,7 +67109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
     __pyx_v_c_doc = xmlCopyDoc(__pyx_v_self->_doc->_c_doc, 1);
 
-    /* "lxml/etree.pyx":1917
+    /* "lxml/etree.pyx":1928
  *             _assertValidDoc(self._doc)
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
  *             if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -66788,16 +67119,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
     __pyx_t_1 = ((__pyx_v_c_doc == NULL) != 0);
     if (unlikely(__pyx_t_1)) {
 
-      /* "lxml/etree.pyx":1918
+      /* "lxml/etree.pyx":1929
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
  *             if c_doc is NULL:
  *                 raise MemoryError()             # <<<<<<<<<<<<<<
  *             doc = _documentFactory(c_doc, self._doc._parser)
  *             return _elementTreeFactory(doc, None)
  */
-      PyErr_NoMemory(); __PYX_ERR(0, 1918, __pyx_L1_error)
+      PyErr_NoMemory(); __PYX_ERR(0, 1929, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":1917
+      /* "lxml/etree.pyx":1928
  *             _assertValidDoc(self._doc)
  *             c_doc = tree.xmlCopyDoc(self._doc._c_doc, 1)
  *             if c_doc is NULL:             # <<<<<<<<<<<<<<
@@ -66806,7 +67137,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
     }
 
-    /* "lxml/etree.pyx":1919
+    /* "lxml/etree.pyx":1930
  *             if c_doc is NULL:
  *                 raise MemoryError()
  *             doc = _documentFactory(c_doc, self._doc._parser)             # <<<<<<<<<<<<<<
@@ -66815,13 +67146,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
     __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, 1919, __pyx_L1_error)
+    __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, 1930, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":1920
+    /* "lxml/etree.pyx":1931
  *                 raise MemoryError()
  *             doc = _documentFactory(c_doc, self._doc._parser)
  *             return _elementTreeFactory(doc, None)             # <<<<<<<<<<<<<<
@@ -66829,13 +67160,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  *             # so what ...
  */
     __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, 1920, __pyx_L1_error)
+    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1931, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1914
+    /* "lxml/etree.pyx":1925
  *             _copyNonElementSiblings(self._context_node._c_node, root._c_node)
  *             return _elementTreeFactory(None, root)
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -66844,7 +67175,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
  */
   }
 
-  /* "lxml/etree.pyx":1923
+  /* "lxml/etree.pyx":1934
  *         else:
  *             # so what ...
  *             return self             # <<<<<<<<<<<<<<
@@ -66858,7 +67189,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":1904
+  /* "lxml/etree.pyx":1915
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
@@ -66881,12 +67212,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_8__deepcopy__(struct LxmlE
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1928
- *     property docinfo:
- *         u"""Information about the document provided by parser and DTD."""
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertHasRoot()
- *             return DocInfo(self._context_node._doc)
+/* "lxml/etree.pyx":1938
+ *     # not in ElementTree
+ *     @property
+ *     def docinfo(self):             # <<<<<<<<<<<<<<
+ *         """Information about the document provided by parser and DTD."""
+ *         self._assertHasRoot()
  */
 
 /* Python wrapper */
@@ -66909,35 +67240,35 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct Lx
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1929
- *         u"""Information about the document provided by parser and DTD."""
- *         def __get__(self):
- *             self._assertHasRoot()             # <<<<<<<<<<<<<<
- *             return DocInfo(self._context_node._doc)
+  /* "lxml/etree.pyx":1940
+ *     def docinfo(self):
+ *         """Information about the document provided by parser and DTD."""
+ *         self._assertHasRoot()             # <<<<<<<<<<<<<<
+ *         return DocInfo(self._context_node._doc)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1929, __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, 1940, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1930
- *         def __get__(self):
- *             self._assertHasRoot()
- *             return DocInfo(self._context_node._doc)             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1941
+ *         """Information about the document provided by parser and DTD."""
+ *         self._assertHasRoot()
+ *         return DocInfo(self._context_node._doc)             # <<<<<<<<<<<<<<
  * 
  *     # not in ElementTree, read-only
  */
   __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, 1930, __pyx_L1_error)
+  __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, 1941, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1928
- *     property docinfo:
- *         u"""Information about the document provided by parser and DTD."""
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertHasRoot()
- *             return DocInfo(self._context_node._doc)
+  /* "lxml/etree.pyx":1938
+ *     # not in ElementTree
+ *     @property
+ *     def docinfo(self):             # <<<<<<<<<<<<<<
+ *         """Information about the document provided by parser and DTD."""
+ *         self._assertHasRoot()
  */
 
   /* function exit code */
@@ -66951,12 +67282,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_7docinfo___get__(struct Lx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1936
- *         u"""The parser that was used to parse the document in this ElementTree.
+/* "lxml/etree.pyx":1945
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def parser(self):             # <<<<<<<<<<<<<<
+ *         """The parser that was used to parse the document in this ElementTree.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._context_node is not None and \
- *                    self._context_node._doc is not None:
  */
 
 /* Python wrapper */
@@ -66980,12 +67311,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":1937
+  /* "lxml/etree.pyx":1948
+ *         """The parser that was used to parse the document in this ElementTree.
  *         """
- *         def __get__(self):
- *             if self._context_node is not None and \             # <<<<<<<<<<<<<<
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser
+ *         if self._context_node is not None and \             # <<<<<<<<<<<<<<
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser
  */
   __pyx_t_2 = (((PyObject *)__pyx_v_self->_context_node) != Py_None);
   __pyx_t_3 = (__pyx_t_2 != 0);
@@ -66995,64 +67326,64 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
     goto __pyx_L4_bool_binop_done;
   }
 
-  /* "lxml/etree.pyx":1938
- *         def __get__(self):
- *             if self._context_node is not None and \
- *                    self._context_node._doc is not None:             # <<<<<<<<<<<<<<
- *                 return self._context_node._doc._parser
- *             if self._doc is not None:
+  /* "lxml/etree.pyx":1949
+ *         """
+ *         if self._context_node is not None and \
+ *                self._context_node._doc is not None:             # <<<<<<<<<<<<<<
+ *             return self._context_node._doc._parser
+ *         if self._doc is not None:
  */
   __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;
   __pyx_L4_bool_binop_done:;
 
-  /* "lxml/etree.pyx":1937
+  /* "lxml/etree.pyx":1948
+ *         """The parser that was used to parse the document in this ElementTree.
  *         """
- *         def __get__(self):
- *             if self._context_node is not None and \             # <<<<<<<<<<<<<<
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser
+ *         if self._context_node is not None and \             # <<<<<<<<<<<<<<
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser
  */
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":1939
- *             if self._context_node is not None and \
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser             # <<<<<<<<<<<<<<
- *             if self._doc is not None:
- *                 return self._doc._parser
+    /* "lxml/etree.pyx":1950
+ *         if self._context_node is not None and \
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser             # <<<<<<<<<<<<<<
+ *         if self._doc is not None:
+ *             return self._doc._parser
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_self->_context_node->_doc->_parser));
     __pyx_r = ((PyObject *)__pyx_v_self->_context_node->_doc->_parser);
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1937
+    /* "lxml/etree.pyx":1948
+ *         """The parser that was used to parse the document in this ElementTree.
  *         """
- *         def __get__(self):
- *             if self._context_node is not None and \             # <<<<<<<<<<<<<<
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser
+ *         if self._context_node is not None and \             # <<<<<<<<<<<<<<
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser
  */
   }
 
-  /* "lxml/etree.pyx":1940
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser
- *             if self._doc is not None:             # <<<<<<<<<<<<<<
- *                 return self._doc._parser
- *             return None
+  /* "lxml/etree.pyx":1951
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser
+ *         if self._doc is not None:             # <<<<<<<<<<<<<<
+ *             return self._doc._parser
+ *         return None
  */
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) != Py_None);
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":1941
- *                 return self._context_node._doc._parser
- *             if self._doc is not None:
- *                 return self._doc._parser             # <<<<<<<<<<<<<<
- *             return None
+    /* "lxml/etree.pyx":1952
+ *             return self._context_node._doc._parser
+ *         if self._doc is not None:
+ *             return self._doc._parser             # <<<<<<<<<<<<<<
+ *         return None
  * 
  */
     __Pyx_XDECREF(__pyx_r);
@@ -67060,19 +67391,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
     __pyx_r = ((PyObject *)__pyx_v_self->_doc->_parser);
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1940
- *                    self._context_node._doc is not None:
- *                 return self._context_node._doc._parser
- *             if self._doc is not None:             # <<<<<<<<<<<<<<
- *                 return self._doc._parser
- *             return None
+    /* "lxml/etree.pyx":1951
+ *                self._context_node._doc is not None:
+ *             return self._context_node._doc._parser
+ *         if self._doc is not None:             # <<<<<<<<<<<<<<
+ *             return self._doc._parser
+ *         return None
  */
   }
 
-  /* "lxml/etree.pyx":1942
- *             if self._doc is not None:
- *                 return self._doc._parser
- *             return None             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":1953
+ *         if self._doc is not None:
+ *             return self._doc._parser
+ *         return None             # <<<<<<<<<<<<<<
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",
  */
@@ -67080,12 +67411,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":1936
- *         u"""The parser that was used to parse the document in this ElementTree.
+  /* "lxml/etree.pyx":1945
+ *     # not in ElementTree, read-only
+ *     @property
+ *     def parser(self):             # <<<<<<<<<<<<<<
+ *         """The parser that was used to parse the document in this ElementTree.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._context_node is not None and \
- *                    self._context_node._doc is not None:
  */
 
   /* function exit code */
@@ -67095,8 +67426,8 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_6parser___get__(struct Lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":1944
- *             return None
+/* "lxml/etree.pyx":1955
+ *         return None
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
  *               pretty_print=False, xml_declaration=None, with_tail=True,
@@ -67130,7 +67461,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
     values[1] = ((PyObject *)Py_None);
     values[2] = ((PyObject *)__pyx_n_u_xml);
 
-    /* "lxml/etree.pyx":1945
+    /* "lxml/etree.pyx":1956
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",
  *               pretty_print=False, xml_declaration=None, with_tail=True,             # <<<<<<<<<<<<<<
@@ -67141,7 +67472,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
     values[4] = ((PyObject *)Py_None);
     values[5] = ((PyObject *)Py_True);
 
-    /* "lxml/etree.pyx":1946
+    /* "lxml/etree.pyx":1957
  *     def write(self, file, *, encoding=None, method=u"xml",
  *               pretty_print=False, xml_declaration=None, with_tail=True,
  *               standalone=None, doctype=None, compression=0,             # <<<<<<<<<<<<<<
@@ -67152,7 +67483,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
     values[7] = ((PyObject *)Py_None);
     values[8] = ((PyObject *)__pyx_int_0);
 
-    /* "lxml/etree.pyx":1947
+    /* "lxml/etree.pyx":1958
  *               pretty_print=False, xml_declaration=None, with_tail=True,
  *               standalone=None, doctype=None, compression=0,
  *               exclusive=False, with_comments=True, inclusive_ns_prefixes=None,             # <<<<<<<<<<<<<<
@@ -67163,7 +67494,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
     values[10] = ((PyObject *)Py_True);
     values[11] = ((PyObject *)Py_None);
 
-    /* "lxml/etree.pyx":1948
+    /* "lxml/etree.pyx":1959
  *               standalone=None, doctype=None, compression=0,
  *               exclusive=False, with_comments=True, inclusive_ns_prefixes=None,
  *               docstring=None):             # <<<<<<<<<<<<<<
@@ -67194,7 +67525,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 1944, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write") < 0)) __PYX_ERR(0, 1955, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -67217,7 +67548,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1944, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1955, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.write", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -67225,8 +67556,8 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_11write(PyObject *__pyx_v_
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_10write(((struct LxmlElementTree *)__pyx_v_self), __pyx_v_file, __pyx_v_encoding, __pyx_v_method, __pyx_v_pretty_print, __pyx_v_xml_declaration, __pyx_v_with_tail, __pyx_v_standalone, __pyx_v_doctype, __pyx_v_compression, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_inclusive_ns_prefixes, __pyx_v_docstring);
 
-  /* "lxml/etree.pyx":1944
- *             return None
+  /* "lxml/etree.pyx":1955
+ *         return None
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
  *               pretty_print=False, xml_declaration=None, with_tail=True,
@@ -67256,16 +67587,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __Pyx_INCREF(__pyx_v_doctype);
   __Pyx_INCREF(__pyx_v_compression);
 
-  /* "lxml/etree.pyx":1990
+  /* "lxml/etree.pyx":2001
  *         cdef int is_standalone
  * 
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1990, __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, 2001, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1991
+  /* "lxml/etree.pyx":2002
  * 
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)             # <<<<<<<<<<<<<<
@@ -67274,10 +67605,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
   __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, 1991, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_2)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2002, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":1992
+  /* "lxml/etree.pyx":2003
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
@@ -67291,14 +67622,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __pyx_t_3 = __pyx_t_5;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1992, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1992, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2003, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2003, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_3 = __pyx_t_5;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1993
+    /* "lxml/etree.pyx":2004
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  *             compression = 0             # <<<<<<<<<<<<<<
@@ -67308,7 +67639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_compression, __pyx_int_0);
 
-    /* "lxml/etree.pyx":1992
+    /* "lxml/etree.pyx":2003
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
@@ -67317,17 +67648,17 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
   }
 
-  /* "lxml/etree.pyx":1996
+  /* "lxml/etree.pyx":2007
  * 
  *         # C14N serialisation
  *         if method == 'c14n':             # <<<<<<<<<<<<<<
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_c14n, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1996, __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, 2007, __pyx_L1_error)
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":1997
+    /* "lxml/etree.pyx":2008
  *         # C14N serialisation
  *         if method == 'c14n':
  *             if encoding is not None:             # <<<<<<<<<<<<<<
@@ -67338,20 +67669,20 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __pyx_t_5 = (__pyx_t_3 != 0);
     if (unlikely(__pyx_t_5)) {
 
-      /* "lxml/etree.pyx":1998
+      /* "lxml/etree.pyx":2009
  *         if method == 'c14n':
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")             # <<<<<<<<<<<<<<
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  */
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1998, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2009, __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;
-      __PYX_ERR(0, 1998, __pyx_L1_error)
+      __PYX_ERR(0, 2009, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":1997
+      /* "lxml/etree.pyx":2008
  *         # C14N serialisation
  *         if method == 'c14n':
  *             if encoding is not None:             # <<<<<<<<<<<<<<
@@ -67360,30 +67691,30 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     }
 
-    /* "lxml/etree.pyx":1999
+    /* "lxml/etree.pyx":2010
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")
  *             if xml_declaration:             # <<<<<<<<<<<<<<
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  * 
  */
-    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1999, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2010, __pyx_L1_error)
     if (unlikely(__pyx_t_5)) {
 
-      /* "lxml/etree.pyx":2000
+      /* "lxml/etree.pyx":2011
  *                 raise ValueError("Cannot specify encoding with C14N")
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")             # <<<<<<<<<<<<<<
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  */
-      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2000, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2011, __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;
-      __PYX_ERR(0, 2000, __pyx_L1_error)
+      __PYX_ERR(0, 2011, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":1999
+      /* "lxml/etree.pyx":2010
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")
  *             if xml_declaration:             # <<<<<<<<<<<<<<
@@ -67392,7 +67723,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     }
 
-    /* "lxml/etree.pyx":2002
+    /* "lxml/etree.pyx":2013
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,             # <<<<<<<<<<<<<<
@@ -67401,31 +67732,31 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __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, 2002, __pyx_L1_error)
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2002, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_exclusive); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2013, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2003
+    /* "lxml/etree.pyx":2014
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  *                             compression, inclusive_ns_prefixes)             # <<<<<<<<<<<<<<
  *             return
  *         if not with_comments:
  */
-    __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2003, __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, 2014, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2002
+    /* "lxml/etree.pyx":2013
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,             # <<<<<<<<<<<<<<
  *                             compression, inclusive_ns_prefixes)
  *             return
  */
-    __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, 2002, __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, 2013, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":2004
+    /* "lxml/etree.pyx":2015
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  *                             compression, inclusive_ns_prefixes)
  *             return             # <<<<<<<<<<<<<<
@@ -67436,7 +67767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":1996
+    /* "lxml/etree.pyx":2007
  * 
  *         # C14N serialisation
  *         if method == 'c14n':             # <<<<<<<<<<<<<<
@@ -67445,31 +67776,31 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
   }
 
-  /* "lxml/etree.pyx":2005
+  /* "lxml/etree.pyx":2016
  *                             compression, inclusive_ns_prefixes)
  *             return
  *         if not with_comments:             # <<<<<<<<<<<<<<
  *             raise ValueError("Can only discard comments in C14N serialisation")
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  */
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2005, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2016, __pyx_L1_error)
   __pyx_t_5 = ((!__pyx_t_3) != 0);
   if (unlikely(__pyx_t_5)) {
 
-    /* "lxml/etree.pyx":2006
+    /* "lxml/etree.pyx":2017
  *             return
  *         if not with_comments:
  *             raise ValueError("Can only discard comments in C14N serialisation")             # <<<<<<<<<<<<<<
  *         # 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__34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2006, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2017, __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;
-    __PYX_ERR(0, 2006, __pyx_L1_error)
+    __PYX_ERR(0, 2017, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2005
+    /* "lxml/etree.pyx":2016
  *                             compression, inclusive_ns_prefixes)
  *             return
  *         if not with_comments:             # <<<<<<<<<<<<<<
@@ -67478,7 +67809,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
   }
 
-  /* "lxml/etree.pyx":2008
+  /* "lxml/etree.pyx":2019
  *             raise ValueError("Can only discard comments in C14N serialisation")
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:             # <<<<<<<<<<<<<<
@@ -67489,17 +67820,17 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __pyx_t_3 = (__pyx_t_5 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2009
+    /* "lxml/etree.pyx":2020
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:
  *             write_declaration = xml_declaration             # <<<<<<<<<<<<<<
  *             if encoding is None:
  *                 encoding = u'ASCII'
  */
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2009, __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, 2020, __pyx_L1_error)
     __pyx_v_write_declaration = __pyx_t_3;
 
-    /* "lxml/etree.pyx":2010
+    /* "lxml/etree.pyx":2021
  *         if xml_declaration is not None:
  *             write_declaration = xml_declaration
  *             if encoding is None:             # <<<<<<<<<<<<<<
@@ -67510,7 +67841,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __pyx_t_5 = (__pyx_t_3 != 0);
     if (__pyx_t_5) {
 
-      /* "lxml/etree.pyx":2011
+      /* "lxml/etree.pyx":2022
  *             write_declaration = xml_declaration
  *             if encoding is None:
  *                 encoding = u'ASCII'             # <<<<<<<<<<<<<<
@@ -67520,7 +67851,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
       __Pyx_INCREF(__pyx_n_u_ASCII);
       __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
-      /* "lxml/etree.pyx":2010
+      /* "lxml/etree.pyx":2021
  *         if xml_declaration is not None:
  *             write_declaration = xml_declaration
  *             if encoding is None:             # <<<<<<<<<<<<<<
@@ -67530,7 +67861,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
       goto __pyx_L11;
     }
 
-    /* "lxml/etree.pyx":2013
+    /* "lxml/etree.pyx":2024
  *                 encoding = u'ASCII'
  *             else:
  *                 encoding = encoding.upper()             # <<<<<<<<<<<<<<
@@ -67538,7 +67869,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *             encoding = u'ASCII'
  */
     /*else*/ {
-      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2013, __pyx_L1_error)
+      __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2024, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __pyx_t_7 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -67552,7 +67883,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
       }
       __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2013, __pyx_L1_error)
+      if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2024, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_6);
@@ -67560,7 +67891,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     }
     __pyx_L11:;
 
-    /* "lxml/etree.pyx":2008
+    /* "lxml/etree.pyx":2019
  *             raise ValueError("Can only discard comments in C14N serialisation")
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:             # <<<<<<<<<<<<<<
@@ -67570,7 +67901,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     goto __pyx_L10;
   }
 
-  /* "lxml/etree.pyx":2014
+  /* "lxml/etree.pyx":2025
  *             else:
  *                 encoding = encoding.upper()
  *         elif encoding is None:             # <<<<<<<<<<<<<<
@@ -67581,7 +67912,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __pyx_t_3 = (__pyx_t_5 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2015
+    /* "lxml/etree.pyx":2026
  *                 encoding = encoding.upper()
  *         elif encoding is None:
  *             encoding = u'ASCII'             # <<<<<<<<<<<<<<
@@ -67591,7 +67922,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __Pyx_INCREF(__pyx_n_u_ASCII);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
-    /* "lxml/etree.pyx":2016
+    /* "lxml/etree.pyx":2027
  *         elif encoding is None:
  *             encoding = u'ASCII'
  *             write_declaration = 0             # <<<<<<<<<<<<<<
@@ -67600,7 +67931,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __pyx_v_write_declaration = 0;
 
-    /* "lxml/etree.pyx":2014
+    /* "lxml/etree.pyx":2025
  *             else:
  *                 encoding = encoding.upper()
  *         elif encoding is None:             # <<<<<<<<<<<<<<
@@ -67610,7 +67941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     goto __pyx_L10;
   }
 
-  /* "lxml/etree.pyx":2018
+  /* "lxml/etree.pyx":2029
  *             write_declaration = 0
  *         else:
  *             encoding = encoding.upper()             # <<<<<<<<<<<<<<
@@ -67618,7 +67949,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  */
   /*else*/ {
-    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2018, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2029, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_7 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -67632,13 +67963,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     }
     __pyx_t_6 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2018, __pyx_L1_error)
+    if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2029, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":2019
+    /* "lxml/etree.pyx":2030
  *         else:
  *             encoding = encoding.upper()
  *             write_declaration = encoding not in \             # <<<<<<<<<<<<<<
@@ -67647,25 +67978,25 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __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, 2019, __pyx_L1_error)
+    __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, 2030, __pyx_L1_error)
     if (__pyx_t_5) {
     } else {
       __pyx_t_3 = __pyx_t_5;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_n_u_ASCII, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2019, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_n_u_ASCII, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2030, __pyx_L1_error)
     if (__pyx_t_5) {
     } else {
       __pyx_t_3 = __pyx_t_5;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_n_u_UTF8, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2019, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_n_u_UTF8, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2030, __pyx_L1_error)
     if (__pyx_t_5) {
     } else {
       __pyx_t_3 = __pyx_t_5;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_kp_u_UTF_8, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2019, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyUnicode_Equals(__pyx_t_6, __pyx_kp_u_UTF_8, Py_NE)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2030, __pyx_L1_error)
     __pyx_t_3 = __pyx_t_5;
     __pyx_L12_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
@@ -67673,7 +68004,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   }
   __pyx_L10:;
 
-  /* "lxml/etree.pyx":2021
+  /* "lxml/etree.pyx":2032
  *             write_declaration = encoding not in \
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  *         if standalone is None:             # <<<<<<<<<<<<<<
@@ -67684,7 +68015,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __pyx_t_5 = (__pyx_t_3 != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2022
+    /* "lxml/etree.pyx":2033
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  *         if standalone is None:
  *             is_standalone = -1             # <<<<<<<<<<<<<<
@@ -67693,7 +68024,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __pyx_v_is_standalone = -1;
 
-    /* "lxml/etree.pyx":2021
+    /* "lxml/etree.pyx":2032
  *             write_declaration = encoding not in \
  *                                   (u'US-ASCII', u'ASCII', u'UTF8', u'UTF-8')
  *         if standalone is None:             # <<<<<<<<<<<<<<
@@ -67703,17 +68034,17 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     goto __pyx_L16;
   }
 
-  /* "lxml/etree.pyx":2023
+  /* "lxml/etree.pyx":2034
  *         if standalone is None:
  *             is_standalone = -1
  *         elif standalone:             # <<<<<<<<<<<<<<
  *             write_declaration = 1
  *             is_standalone = 1
  */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2023, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2034, __pyx_L1_error)
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2024
+    /* "lxml/etree.pyx":2035
  *             is_standalone = -1
  *         elif standalone:
  *             write_declaration = 1             # <<<<<<<<<<<<<<
@@ -67722,7 +68053,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __pyx_v_write_declaration = 1;
 
-    /* "lxml/etree.pyx":2025
+    /* "lxml/etree.pyx":2036
  *         elif standalone:
  *             write_declaration = 1
  *             is_standalone = 1             # <<<<<<<<<<<<<<
@@ -67731,7 +68062,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
     __pyx_v_is_standalone = 1;
 
-    /* "lxml/etree.pyx":2023
+    /* "lxml/etree.pyx":2034
  *         if standalone is None:
  *             is_standalone = -1
  *         elif standalone:             # <<<<<<<<<<<<<<
@@ -67741,7 +68072,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     goto __pyx_L16;
   }
 
-  /* "lxml/etree.pyx":2027
+  /* "lxml/etree.pyx":2038
  *             is_standalone = 1
  *         else:
  *             write_declaration = 1             # <<<<<<<<<<<<<<
@@ -67751,7 +68082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   /*else*/ {
     __pyx_v_write_declaration = 1;
 
-    /* "lxml/etree.pyx":2028
+    /* "lxml/etree.pyx":2039
  *         else:
  *             write_declaration = 1
  *             is_standalone = 0             # <<<<<<<<<<<<<<
@@ -67762,7 +68093,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   }
   __pyx_L16:;
 
-  /* "lxml/etree.pyx":2030
+  /* "lxml/etree.pyx":2041
  *             is_standalone = 0
  * 
  *         if docstring is not None and doctype is None:             # <<<<<<<<<<<<<<
@@ -67782,41 +68113,41 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __pyx_L18_bool_binop_done:;
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2031
+    /* "lxml/etree.pyx":2042
  * 
  *         if docstring is not None and doctype is None:
  *             import warnings             # <<<<<<<<<<<<<<
  *             warnings.warn(
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  */
-    __pyx_t_6 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2031, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_Import(__pyx_n_s_warnings, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2042, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_warnings = __pyx_t_6;
     __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":2032
+    /* "lxml/etree.pyx":2043
  *         if docstring is not None and doctype is None:
  *             import warnings
  *             warnings.warn(             # <<<<<<<<<<<<<<
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_warnings, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2032, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_warnings, __pyx_n_s_warn); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2043, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
 
-    /* "lxml/etree.pyx":2034
+    /* "lxml/etree.pyx":2045
  *             warnings.warn(
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)             # <<<<<<<<<<<<<<
  *             doctype = docstring
  * 
  */
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2032, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_6, __pyx_tuple__35, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2043, __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;
 
-    /* "lxml/etree.pyx":2035
+    /* "lxml/etree.pyx":2046
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)
  *             doctype = docstring             # <<<<<<<<<<<<<<
@@ -67826,7 +68157,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
     __Pyx_INCREF(__pyx_v_docstring);
     __Pyx_DECREF_SET(__pyx_v_doctype, __pyx_v_docstring);
 
-    /* "lxml/etree.pyx":2030
+    /* "lxml/etree.pyx":2041
  *             is_standalone = 0
  * 
  *         if docstring is not None and doctype is None:             # <<<<<<<<<<<<<<
@@ -67835,7 +68166,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
  */
   }
 
-  /* "lxml/etree.pyx":2037
+  /* "lxml/etree.pyx":2048
  *             doctype = docstring
  * 
  *         _tofilelike(file, self._context_node, encoding, doctype, method,             # <<<<<<<<<<<<<<
@@ -67845,39 +68176,39 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   __pyx_t_2 = ((PyObject *)__pyx_v_self->_context_node);
   __Pyx_INCREF(__pyx_t_2);
 
-  /* "lxml/etree.pyx":2038
+  /* "lxml/etree.pyx":2049
  * 
  *         _tofilelike(file, self._context_node, encoding, doctype, method,
  *                     write_declaration, 1, pretty_print, with_tail,             # <<<<<<<<<<<<<<
  *                     is_standalone, compression)
  * 
  */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_pretty_print); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2038, __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, 2038, __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, 2049, __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, 2049, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2039
+  /* "lxml/etree.pyx":2050
  *         _tofilelike(file, self._context_node, encoding, doctype, method,
  *                     write_declaration, 1, pretty_print, with_tail,
  *                     is_standalone, compression)             # <<<<<<<<<<<<<<
  * 
  *     def getpath(self, _Element element not None):
  */
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2039, __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, 2050, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2037
+  /* "lxml/etree.pyx":2048
  *             doctype = docstring
  * 
  *         _tofilelike(file, self._context_node, encoding, doctype, method,             # <<<<<<<<<<<<<<
  *                     write_declaration, 1, pretty_print, with_tail,
  *                     is_standalone, compression)
  */
-  __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, 2037, __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, 2048, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "lxml/etree.pyx":1944
- *             return None
+  /* "lxml/etree.pyx":1955
+ *         return None
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
  *               pretty_print=False, xml_declaration=None, with_tail=True,
@@ -67903,7 +68234,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_10write(struct LxmlElement
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2041
+/* "lxml/etree.pyx":2052
  *                     is_standalone, compression)
  * 
  *     def getpath(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -67919,7 +68250,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_13getpath(PyObject *__pyx_
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getpath (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2041, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2052, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_12getpath(((struct LxmlElementTree *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element));
 
   /* function exit code */
@@ -67946,16 +68277,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   xmlDoc *__pyx_t_5;
   __Pyx_RefNannySetupContext("getpath", 0);
 
-  /* "lxml/etree.pyx":2056
+  /* "lxml/etree.pyx":2067
  *         cdef _Element root
  *         cdef xmlDoc* c_doc
  *         _assertValidNode(element)             # <<<<<<<<<<<<<<
  *         if self._context_node is not None:
  *             root = self._context_node
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2056, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2067, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2057
+  /* "lxml/etree.pyx":2068
  *         cdef xmlDoc* c_doc
  *         _assertValidNode(element)
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -67966,7 +68297,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2058
+    /* "lxml/etree.pyx":2069
  *         _assertValidNode(element)
  *         if self._context_node is not None:
  *             root = self._context_node             # <<<<<<<<<<<<<<
@@ -67978,7 +68309,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2059
+    /* "lxml/etree.pyx":2070
  *         if self._context_node is not None:
  *             root = self._context_node
  *             doc = root._doc             # <<<<<<<<<<<<<<
@@ -67990,7 +68321,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2057
+    /* "lxml/etree.pyx":2068
  *         cdef xmlDoc* c_doc
  *         _assertValidNode(element)
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -68000,7 +68331,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2060
+  /* "lxml/etree.pyx":2071
  *             root = self._context_node
  *             doc = root._doc
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -68011,7 +68342,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (likely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2061
+    /* "lxml/etree.pyx":2072
  *             doc = root._doc
  *         elif self._doc is not None:
  *             doc = self._doc             # <<<<<<<<<<<<<<
@@ -68023,20 +68354,20 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2062
+    /* "lxml/etree.pyx":2073
  *         elif self._doc is not None:
  *             doc = self._doc
  *             root = doc.getroot()             # <<<<<<<<<<<<<<
  *         else:
  *             raise ValueError, u"Element is not in this tree."
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2062, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2073, __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, 2062, __pyx_L1_error)
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2073, __pyx_L1_error)
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2060
+    /* "lxml/etree.pyx":2071
  *             root = self._context_node
  *             doc = root._doc
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -68046,7 +68377,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2064
+  /* "lxml/etree.pyx":2075
  *             root = doc.getroot()
  *         else:
  *             raise ValueError, u"Element is not in this tree."             # <<<<<<<<<<<<<<
@@ -68055,29 +68386,29 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
-    __PYX_ERR(0, 2064, __pyx_L1_error)
+    __PYX_ERR(0, 2075, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2065
+  /* "lxml/etree.pyx":2076
  *         else:
  *             raise ValueError, u"Element is not in this tree."
  *         _assertValidDoc(doc)             # <<<<<<<<<<<<<<
  *         _assertValidNode(root)
  *         if element._doc is not doc:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2065, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2076, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2066
+  /* "lxml/etree.pyx":2077
  *             raise ValueError, u"Element is not in this tree."
  *         _assertValidDoc(doc)
  *         _assertValidNode(root)             # <<<<<<<<<<<<<<
  *         if element._doc is not doc:
  *             raise ValueError, u"Element is not in this tree."
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2066, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2077, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2067
+  /* "lxml/etree.pyx":2078
  *         _assertValidDoc(doc)
  *         _assertValidNode(root)
  *         if element._doc is not doc:             # <<<<<<<<<<<<<<
@@ -68088,7 +68419,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":2068
+    /* "lxml/etree.pyx":2079
  *         _assertValidNode(root)
  *         if element._doc is not doc:
  *             raise ValueError, u"Element is not in this tree."             # <<<<<<<<<<<<<<
@@ -68096,9 +68427,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  *         c_doc = _fakeRootDoc(doc._c_doc, root._c_node)
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
-    __PYX_ERR(0, 2068, __pyx_L1_error)
+    __PYX_ERR(0, 2079, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2067
+    /* "lxml/etree.pyx":2078
  *         _assertValidDoc(doc)
  *         _assertValidNode(root)
  *         if element._doc is not doc:             # <<<<<<<<<<<<<<
@@ -68107,17 +68438,17 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   }
 
-  /* "lxml/etree.pyx":2070
+  /* "lxml/etree.pyx":2081
  *             raise ValueError, u"Element is not in this tree."
  * 
  *         c_doc = _fakeRootDoc(doc._c_doc, root._c_node)             # <<<<<<<<<<<<<<
  *         c_path = tree.xmlGetNodePath(element._c_node)
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  */
-  __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, 2070, __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, 2081, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_5;
 
-  /* "lxml/etree.pyx":2071
+  /* "lxml/etree.pyx":2082
  * 
  *         c_doc = _fakeRootDoc(doc._c_doc, root._c_node)
  *         c_path = tree.xmlGetNodePath(element._c_node)             # <<<<<<<<<<<<<<
@@ -68126,7 +68457,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   __pyx_v_c_path = xmlGetNodePath(__pyx_v_element->_c_node);
 
-  /* "lxml/etree.pyx":2072
+  /* "lxml/etree.pyx":2083
  *         c_doc = _fakeRootDoc(doc._c_doc, root._c_node)
  *         c_path = tree.xmlGetNodePath(element._c_node)
  *         _destroyFakeDoc(doc._c_doc, c_doc)             # <<<<<<<<<<<<<<
@@ -68135,7 +68466,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   __pyx_f_4lxml_5etree__destroyFakeDoc(__pyx_v_doc->_c_doc, __pyx_v_c_doc);
 
-  /* "lxml/etree.pyx":2073
+  /* "lxml/etree.pyx":2084
  *         c_path = tree.xmlGetNodePath(element._c_node)
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  *         if c_path is NULL:             # <<<<<<<<<<<<<<
@@ -68145,16 +68476,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __pyx_t_3 = ((__pyx_v_c_path == NULL) != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":2074
+    /* "lxml/etree.pyx":2085
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  *         if c_path is NULL:
  *             raise MemoryError()             # <<<<<<<<<<<<<<
  *         path = funicode(c_path)
  *         tree.xmlFree(c_path)
  */
-    PyErr_NoMemory(); __PYX_ERR(0, 2074, __pyx_L1_error)
+    PyErr_NoMemory(); __PYX_ERR(0, 2085, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2073
+    /* "lxml/etree.pyx":2084
  *         c_path = tree.xmlGetNodePath(element._c_node)
  *         _destroyFakeDoc(doc._c_doc, c_doc)
  *         if c_path is NULL:             # <<<<<<<<<<<<<<
@@ -68163,19 +68494,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   }
 
-  /* "lxml/etree.pyx":2075
+  /* "lxml/etree.pyx":2086
  *         if c_path is NULL:
  *             raise MemoryError()
  *         path = funicode(c_path)             # <<<<<<<<<<<<<<
  *         tree.xmlFree(c_path)
  *         return path
  */
-  __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2075, __pyx_L1_error)
+  __pyx_t_4 = __pyx_f_4lxml_5etree_funicode(__pyx_v_c_path); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2086, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_path = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2076
+  /* "lxml/etree.pyx":2087
  *             raise MemoryError()
  *         path = funicode(c_path)
  *         tree.xmlFree(c_path)             # <<<<<<<<<<<<<<
@@ -68184,7 +68515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
  */
   xmlFree(__pyx_v_c_path);
 
-  /* "lxml/etree.pyx":2077
+  /* "lxml/etree.pyx":2088
  *         path = funicode(c_path)
  *         tree.xmlFree(c_path)
  *         return path             # <<<<<<<<<<<<<<
@@ -68196,7 +68527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   __pyx_r = __pyx_v_path;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2041
+  /* "lxml/etree.pyx":2052
  *                     is_standalone, compression)
  * 
  *     def getpath(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -68218,7 +68549,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_12getpath(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2079
+/* "lxml/etree.pyx":2090
  *         return path
  * 
  *     def getelementpath(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -68234,7 +68565,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_15getelementpath(PyObject
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("getelementpath (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2079, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2090, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(((struct LxmlElementTree *)__pyx_v_self), ((struct LxmlElement *)__pyx_v_element));
 
   /* function exit code */
@@ -68269,16 +68600,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   int __pyx_t_10;
   __Pyx_RefNannySetupContext("getelementpath", 0);
 
-  /* "lxml/etree.pyx":2093
+  /* "lxml/etree.pyx":2104
  *         cdef _Element root
  *         cdef Py_ssize_t count
  *         _assertValidNode(element)             # <<<<<<<<<<<<<<
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise ValueError, u"input is not an Element"
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2093, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2104, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2094
+  /* "lxml/etree.pyx":2105
  *         cdef Py_ssize_t count
  *         _assertValidNode(element)
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68288,7 +68619,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_2 = ((__pyx_v_element->_c_node->type != XML_ELEMENT_NODE) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2095
+    /* "lxml/etree.pyx":2106
  *         _assertValidNode(element)
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise ValueError, u"input is not an Element"             # <<<<<<<<<<<<<<
@@ -68296,9 +68627,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             root = self._context_node
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_input_is_not_an_Element, 0, 0);
-    __PYX_ERR(0, 2095, __pyx_L1_error)
+    __PYX_ERR(0, 2106, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2094
+    /* "lxml/etree.pyx":2105
  *         cdef Py_ssize_t count
  *         _assertValidNode(element)
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68307,7 +68638,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
   }
 
-  /* "lxml/etree.pyx":2096
+  /* "lxml/etree.pyx":2107
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise ValueError, u"input is not an Element"
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -68318,7 +68649,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2097
+    /* "lxml/etree.pyx":2108
  *             raise ValueError, u"input is not an Element"
  *         if self._context_node is not None:
  *             root = self._context_node             # <<<<<<<<<<<<<<
@@ -68330,7 +68661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2096
+    /* "lxml/etree.pyx":2107
  *         if element._c_node.type != tree.XML_ELEMENT_NODE:
  *             raise ValueError, u"input is not an Element"
  *         if self._context_node is not None:             # <<<<<<<<<<<<<<
@@ -68340,7 +68671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     goto __pyx_L4;
   }
 
-  /* "lxml/etree.pyx":2098
+  /* "lxml/etree.pyx":2109
  *         if self._context_node is not None:
  *             root = self._context_node
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -68351,20 +68682,20 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (likely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2099
+    /* "lxml/etree.pyx":2110
  *             root = self._context_node
  *         elif self._doc is not None:
  *             root = self._doc.getroot()             # <<<<<<<<<<<<<<
  *         else:
  *             raise ValueError, u"Element is not in this tree"
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_self->_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2099, __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, 2110, __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, 2099, __pyx_L1_error)
+    if (!(likely(((__pyx_t_4) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_4, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2110, __pyx_L1_error)
     __pyx_v_root = ((struct LxmlElement *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2098
+    /* "lxml/etree.pyx":2109
  *         if self._context_node is not None:
  *             root = self._context_node
  *         elif self._doc is not None:             # <<<<<<<<<<<<<<
@@ -68374,7 +68705,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     goto __pyx_L4;
   }
 
-  /* "lxml/etree.pyx":2101
+  /* "lxml/etree.pyx":2112
  *             root = self._doc.getroot()
  *         else:
  *             raise ValueError, u"Element is not in this tree"             # <<<<<<<<<<<<<<
@@ -68383,20 +68714,20 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree_2, 0, 0);
-    __PYX_ERR(0, 2101, __pyx_L1_error)
+    __PYX_ERR(0, 2112, __pyx_L1_error)
   }
   __pyx_L4:;
 
-  /* "lxml/etree.pyx":2102
+  /* "lxml/etree.pyx":2113
  *         else:
  *             raise ValueError, u"Element is not in this tree"
  *         _assertValidNode(root)             # <<<<<<<<<<<<<<
  *         if element._doc is not root._doc:
  *             raise ValueError, u"Element is not in this tree"
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2102, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_root); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2113, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2103
+  /* "lxml/etree.pyx":2114
  *             raise ValueError, u"Element is not in this tree"
  *         _assertValidNode(root)
  *         if element._doc is not root._doc:             # <<<<<<<<<<<<<<
@@ -68407,7 +68738,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":2104
+    /* "lxml/etree.pyx":2115
  *         _assertValidNode(root)
  *         if element._doc is not root._doc:
  *             raise ValueError, u"Element is not in this tree"             # <<<<<<<<<<<<<<
@@ -68415,9 +68746,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *         path = []
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree_2, 0, 0);
-    __PYX_ERR(0, 2104, __pyx_L1_error)
+    __PYX_ERR(0, 2115, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2103
+    /* "lxml/etree.pyx":2114
  *             raise ValueError, u"Element is not in this tree"
  *         _assertValidNode(root)
  *         if element._doc is not root._doc:             # <<<<<<<<<<<<<<
@@ -68426,19 +68757,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
   }
 
-  /* "lxml/etree.pyx":2106
+  /* "lxml/etree.pyx":2117
  *             raise ValueError, u"Element is not in this tree"
  * 
  *         path = []             # <<<<<<<<<<<<<<
  *         c_element = element._c_node
  *         while c_element is not root._c_node:
  */
-  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2106, __pyx_L1_error)
+  __pyx_t_4 = PyList_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2117, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_path = ((PyObject*)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2107
+  /* "lxml/etree.pyx":2118
  * 
  *         path = []
  *         c_element = element._c_node             # <<<<<<<<<<<<<<
@@ -68448,7 +68779,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_5 = __pyx_v_element->_c_node;
   __pyx_v_c_element = __pyx_t_5;
 
-  /* "lxml/etree.pyx":2108
+  /* "lxml/etree.pyx":2119
  *         path = []
  *         c_element = element._c_node
  *         while c_element is not root._c_node:             # <<<<<<<<<<<<<<
@@ -68459,7 +68790,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_3 = ((__pyx_v_c_element != __pyx_v_root->_c_node) != 0);
     if (!__pyx_t_3) break;
 
-    /* "lxml/etree.pyx":2109
+    /* "lxml/etree.pyx":2120
  *         c_element = element._c_node
  *         while c_element is not root._c_node:
  *             c_name = c_element.name             # <<<<<<<<<<<<<<
@@ -68469,7 +68800,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_6 = __pyx_v_c_element->name;
     __pyx_v_c_name = __pyx_t_6;
 
-    /* "lxml/etree.pyx":2110
+    /* "lxml/etree.pyx":2121
  *         while c_element is not root._c_node:
  *             c_name = c_element.name
  *             c_href = _getNs(c_element)             # <<<<<<<<<<<<<<
@@ -68478,19 +68809,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
     __pyx_v_c_href = _getNs(__pyx_v_c_element);
 
-    /* "lxml/etree.pyx":2111
+    /* "lxml/etree.pyx":2122
  *             c_name = c_element.name
  *             c_href = _getNs(c_element)
  *             tag = _namespacedNameFromNsName(c_href, c_name)             # <<<<<<<<<<<<<<
  *             if c_href is NULL:
  *                 c_href = <const_xmlChar*>b''  # no namespace (NULL is wildcard)
  */
-    __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedNameFromNsName(__pyx_v_c_href, __pyx_v_c_name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2111, __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, 2122, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_XDECREF_SET(__pyx_v_tag, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":2112
+    /* "lxml/etree.pyx":2123
  *             c_href = _getNs(c_element)
  *             tag = _namespacedNameFromNsName(c_href, c_name)
  *             if c_href is NULL:             # <<<<<<<<<<<<<<
@@ -68500,7 +68831,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_3 = ((__pyx_v_c_href == NULL) != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/etree.pyx":2113
+      /* "lxml/etree.pyx":2124
  *             tag = _namespacedNameFromNsName(c_href, c_name)
  *             if c_href is NULL:
  *                 c_href = <const_xmlChar*>b''  # no namespace (NULL is wildcard)             # <<<<<<<<<<<<<<
@@ -68509,7 +68840,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
       __pyx_v_c_href = ((const xmlChar *)((const xmlChar *)((char const *)"")));
 
-      /* "lxml/etree.pyx":2112
+      /* "lxml/etree.pyx":2123
  *             c_href = _getNs(c_element)
  *             tag = _namespacedNameFromNsName(c_href, c_name)
  *             if c_href is NULL:             # <<<<<<<<<<<<<<
@@ -68518,7 +68849,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
     }
 
-    /* "lxml/etree.pyx":2115
+    /* "lxml/etree.pyx":2126
  *                 c_href = <const_xmlChar*>b''  # no namespace (NULL is wildcard)
  *             # use tag[N] if there are preceding siblings with the same tag
  *             count = 0             # <<<<<<<<<<<<<<
@@ -68527,7 +68858,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
     __pyx_v_count = 0;
 
-    /* "lxml/etree.pyx":2116
+    /* "lxml/etree.pyx":2127
  *             # use tag[N] if there are preceding siblings with the same tag
  *             count = 0
  *             c_node = c_element.prev             # <<<<<<<<<<<<<<
@@ -68537,7 +68868,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_5 = __pyx_v_c_element->prev;
     __pyx_v_c_node = __pyx_t_5;
 
-    /* "lxml/etree.pyx":2117
+    /* "lxml/etree.pyx":2128
  *             count = 0
  *             c_node = c_element.prev
  *             while c_node is not NULL:             # <<<<<<<<<<<<<<
@@ -68548,7 +68879,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
       if (!__pyx_t_3) break;
 
-      /* "lxml/etree.pyx":2118
+      /* "lxml/etree.pyx":2129
  *             c_node = c_element.prev
  *             while c_node is not NULL:
  *                 if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68558,7 +68889,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_t_3 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
       if (__pyx_t_3) {
 
-        /* "lxml/etree.pyx":2119
+        /* "lxml/etree.pyx":2130
  *             while c_node is not NULL:
  *                 if c_node.type == tree.XML_ELEMENT_NODE:
  *                     if _tagMatches(c_node, c_href, c_name):             # <<<<<<<<<<<<<<
@@ -68568,7 +68899,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
         __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) {
 
-          /* "lxml/etree.pyx":2120
+          /* "lxml/etree.pyx":2131
  *                 if c_node.type == tree.XML_ELEMENT_NODE:
  *                     if _tagMatches(c_node, c_href, c_name):
  *                         count += 1             # <<<<<<<<<<<<<<
@@ -68577,7 +68908,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
           __pyx_v_count = (__pyx_v_count + 1);
 
-          /* "lxml/etree.pyx":2119
+          /* "lxml/etree.pyx":2130
  *             while c_node is not NULL:
  *                 if c_node.type == tree.XML_ELEMENT_NODE:
  *                     if _tagMatches(c_node, c_href, c_name):             # <<<<<<<<<<<<<<
@@ -68586,7 +68917,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
         }
 
-        /* "lxml/etree.pyx":2118
+        /* "lxml/etree.pyx":2129
  *             c_node = c_element.prev
  *             while c_node is not NULL:
  *                 if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68595,7 +68926,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
       }
 
-      /* "lxml/etree.pyx":2121
+      /* "lxml/etree.pyx":2132
  *                     if _tagMatches(c_node, c_href, c_name):
  *                         count += 1
  *                 c_node = c_node.prev             # <<<<<<<<<<<<<<
@@ -68606,7 +68937,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_v_c_node = __pyx_t_5;
     }
 
-    /* "lxml/etree.pyx":2122
+    /* "lxml/etree.pyx":2133
  *                         count += 1
  *                 c_node = c_node.prev
  *             if count:             # <<<<<<<<<<<<<<
@@ -68616,18 +68947,18 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_3 = (__pyx_v_count != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/etree.pyx":2123
+      /* "lxml/etree.pyx":2134
  *                 c_node = c_node.prev
  *             if count:
  *                 tag = f'{tag}[{count+1}]'             # <<<<<<<<<<<<<<
  *             else:
  *                 # use tag[1] if there are following siblings with the same tag
  */
-      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2123, __pyx_L1_error)
+      __pyx_t_4 = PyTuple_New(4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2134, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_7 = 0;
       __pyx_t_8 = 127;
-      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2123, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyObject_FormatSimple(__pyx_v_tag, __pyx_empty_unicode); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2134, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_9) : __pyx_t_8;
       __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
@@ -68638,7 +68969,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_t_7 += 1;
       __Pyx_GIVEREF(__pyx_kp_u__36);
       PyTuple_SET_ITEM(__pyx_t_4, 1, __pyx_kp_u__36);
-      __pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t((__pyx_v_count + 1), 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2123, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyUnicode_From_Py_ssize_t((__pyx_v_count + 1), 0, ' ', 'd'); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2134, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_7 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_9);
       __Pyx_GIVEREF(__pyx_t_9);
@@ -68648,13 +68979,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_t_7 += 1;
       __Pyx_GIVEREF(__pyx_kp_u__37);
       PyTuple_SET_ITEM(__pyx_t_4, 3, __pyx_kp_u__37);
-      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2123, __pyx_L1_error)
+      __pyx_t_9 = __Pyx_PyUnicode_Join(__pyx_t_4, 4, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2134, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_9);
       __pyx_t_9 = 0;
 
-      /* "lxml/etree.pyx":2122
+      /* "lxml/etree.pyx":2133
  *                         count += 1
  *                 c_node = c_node.prev
  *             if count:             # <<<<<<<<<<<<<<
@@ -68664,7 +68995,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       goto __pyx_L13;
     }
 
-    /* "lxml/etree.pyx":2126
+    /* "lxml/etree.pyx":2137
  *             else:
  *                 # use tag[1] if there are following siblings with the same tag
  *                 c_node = c_element.next             # <<<<<<<<<<<<<<
@@ -68675,7 +69006,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
       __pyx_t_5 = __pyx_v_c_element->next;
       __pyx_v_c_node = __pyx_t_5;
 
-      /* "lxml/etree.pyx":2127
+      /* "lxml/etree.pyx":2138
  *                 # use tag[1] if there are following siblings with the same tag
  *                 c_node = c_element.next
  *                 while c_node is not NULL:             # <<<<<<<<<<<<<<
@@ -68686,7 +69017,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
         __pyx_t_3 = ((__pyx_v_c_node != NULL) != 0);
         if (!__pyx_t_3) break;
 
-        /* "lxml/etree.pyx":2128
+        /* "lxml/etree.pyx":2139
  *                 c_node = c_element.next
  *                 while c_node is not NULL:
  *                     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68696,7 +69027,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
         __pyx_t_3 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
         if (__pyx_t_3) {
 
-          /* "lxml/etree.pyx":2129
+          /* "lxml/etree.pyx":2140
  *                 while c_node is not NULL:
  *                     if c_node.type == tree.XML_ELEMENT_NODE:
  *                         if _tagMatches(c_node, c_href, c_name):             # <<<<<<<<<<<<<<
@@ -68706,19 +69037,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
           __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) {
 
-            /* "lxml/etree.pyx":2130
+            /* "lxml/etree.pyx":2141
  *                     if c_node.type == tree.XML_ELEMENT_NODE:
  *                         if _tagMatches(c_node, c_href, c_name):
  *                             tag += '[1]'             # <<<<<<<<<<<<<<
  *                             break
  *                     c_node = c_node.next
  */
-            __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_tag, __pyx_kp_s_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2130, __pyx_L1_error)
+            __pyx_t_9 = PyNumber_InPlaceAdd(__pyx_v_tag, __pyx_kp_s_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2141, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_DECREF_SET(__pyx_v_tag, __pyx_t_9);
             __pyx_t_9 = 0;
 
-            /* "lxml/etree.pyx":2131
+            /* "lxml/etree.pyx":2142
  *                         if _tagMatches(c_node, c_href, c_name):
  *                             tag += '[1]'
  *                             break             # <<<<<<<<<<<<<<
@@ -68727,7 +69058,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
             goto __pyx_L15_break;
 
-            /* "lxml/etree.pyx":2129
+            /* "lxml/etree.pyx":2140
  *                 while c_node is not NULL:
  *                     if c_node.type == tree.XML_ELEMENT_NODE:
  *                         if _tagMatches(c_node, c_href, c_name):             # <<<<<<<<<<<<<<
@@ -68736,7 +69067,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
           }
 
-          /* "lxml/etree.pyx":2128
+          /* "lxml/etree.pyx":2139
  *                 c_node = c_element.next
  *                 while c_node is not NULL:
  *                     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68745,7 +69076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
         }
 
-        /* "lxml/etree.pyx":2132
+        /* "lxml/etree.pyx":2143
  *                             tag += '[1]'
  *                             break
  *                     c_node = c_node.next             # <<<<<<<<<<<<<<
@@ -68759,16 +69090,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     }
     __pyx_L13:;
 
-    /* "lxml/etree.pyx":2134
+    /* "lxml/etree.pyx":2145
  *                     c_node = c_node.next
  * 
  *             path.append(tag)             # <<<<<<<<<<<<<<
  *             c_element = c_element.parent
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  */
-    __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_path, __pyx_v_tag); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2134, __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, 2145, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2135
+    /* "lxml/etree.pyx":2146
  * 
  *             path.append(tag)
  *             c_element = c_element.parent             # <<<<<<<<<<<<<<
@@ -68778,7 +69109,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_t_5 = __pyx_v_c_element->parent;
     __pyx_v_c_element = __pyx_t_5;
 
-    /* "lxml/etree.pyx":2136
+    /* "lxml/etree.pyx":2147
  *             path.append(tag)
  *             c_element = c_element.parent
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68796,7 +69127,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_L19_bool_binop_done:;
     if (unlikely(__pyx_t_3)) {
 
-      /* "lxml/etree.pyx":2137
+      /* "lxml/etree.pyx":2148
  *             c_element = c_element.parent
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  *                 raise ValueError, u"Element is not in this tree."             # <<<<<<<<<<<<<<
@@ -68804,9 +69135,9 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *             return '.'
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Element_is_not_in_this_tree, 0, 0);
-      __PYX_ERR(0, 2137, __pyx_L1_error)
+      __PYX_ERR(0, 2148, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":2136
+      /* "lxml/etree.pyx":2147
  *             path.append(tag)
  *             c_element = c_element.parent
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -68816,7 +69147,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     }
   }
 
-  /* "lxml/etree.pyx":2138
+  /* "lxml/etree.pyx":2149
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  *                 raise ValueError, u"Element is not in this tree."
  *         if not path:             # <<<<<<<<<<<<<<
@@ -68827,7 +69158,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   __pyx_t_2 = ((!__pyx_t_3) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2139
+    /* "lxml/etree.pyx":2150
  *                 raise ValueError, u"Element is not in this tree."
  *         if not path:
  *             return '.'             # <<<<<<<<<<<<<<
@@ -68839,7 +69170,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
     __pyx_r = __pyx_kp_s__3;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2138
+    /* "lxml/etree.pyx":2149
  *             if c_element is NULL or c_element.type != tree.XML_ELEMENT_NODE:
  *                 raise ValueError, u"Element is not in this tree."
  *         if not path:             # <<<<<<<<<<<<<<
@@ -68848,16 +69179,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  */
   }
 
-  /* "lxml/etree.pyx":2140
+  /* "lxml/etree.pyx":2151
  *         if not path:
  *             return '.'
  *         path.reverse()             # <<<<<<<<<<<<<<
  *         return '/'.join(path)
  * 
  */
-  __pyx_t_10 = PyList_Reverse(__pyx_v_path); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2140, __pyx_L1_error)
+  __pyx_t_10 = PyList_Reverse(__pyx_v_path); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 2151, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2141
+  /* "lxml/etree.pyx":2152
  *             return '.'
  *         path.reverse()
  *         return '/'.join(path)             # <<<<<<<<<<<<<<
@@ -68865,13 +69196,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
  *     def getiterator(self, tag=None, *tags):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_9 = __Pyx_PyString_Join(__pyx_kp_s__38, __pyx_v_path); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2141, __pyx_L1_error)
+  __pyx_t_9 = __Pyx_PyString_Join(__pyx_kp_s__38, __pyx_v_path); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2152, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_r = __pyx_t_9;
   __pyx_t_9 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2079
+  /* "lxml/etree.pyx":2090
  *         return path
  * 
  *     def getelementpath(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -68894,7 +69225,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_14getelementpath(struct Lx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2143
+/* "lxml/etree.pyx":2154
  *         return '/'.join(path)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -68945,7 +69276,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_17getiterator(PyObject *__
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "getiterator") < 0)) __PYX_ERR(0, 2143, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "getiterator") < 0)) __PYX_ERR(0, 2154, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -68984,14 +69315,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   __Pyx_RefNannySetupContext("getiterator", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":2160
+  /* "lxml/etree.pyx":2171
  *           with older versions of lxml or ElementTree.
  *         """
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if root is None:
  *             return ITER_EMPTY
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2160, __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, 2171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -69005,13 +69336,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2160, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2171, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_root = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2161
+  /* "lxml/etree.pyx":2172
  *         """
  *         root = self.getroot()
  *         if root is None:             # <<<<<<<<<<<<<<
@@ -69022,7 +69353,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2162
+    /* "lxml/etree.pyx":2173
  *         root = self.getroot()
  *         if root is None:
  *             return ITER_EMPTY             # <<<<<<<<<<<<<<
@@ -69034,7 +69365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2161
+    /* "lxml/etree.pyx":2172
  *         """
  *         root = self.getroot()
  *         if root is None:             # <<<<<<<<<<<<<<
@@ -69043,7 +69374,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  */
   }
 
-  /* "lxml/etree.pyx":2163
+  /* "lxml/etree.pyx":2174
  *         if root is None:
  *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -69054,25 +69385,25 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/etree.pyx":2164
+    /* "lxml/etree.pyx":2175
  *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return root.getiterator(*tags)
  * 
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2164, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2175, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
-    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2164, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2175, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "lxml/etree.pyx":2163
+    /* "lxml/etree.pyx":2174
  *         if root is None:
  *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -69081,7 +69412,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  */
   }
 
-  /* "lxml/etree.pyx":2165
+  /* "lxml/etree.pyx":2176
  *         if tag is not None:
  *             tags += (tag,)
  *         return root.getiterator(*tags)             # <<<<<<<<<<<<<<
@@ -69089,16 +69420,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
  *     def iter(self, tag=None, *tags):
  */
   __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, 2165, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_getiterator); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_tags, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2165, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_tags, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2143
+  /* "lxml/etree.pyx":2154
  *         return '/'.join(path)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -69121,7 +69452,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_16getiterator(struct LxmlE
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2167
+/* "lxml/etree.pyx":2178
  *         return root.getiterator(*tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -69172,7 +69503,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_19iter(PyObject *__pyx_v_s
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iter") < 0)) __PYX_ERR(0, 2167, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "iter") < 0)) __PYX_ERR(0, 2178, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -69211,14 +69542,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   __Pyx_RefNannySetupContext("iter", 0);
   __Pyx_INCREF(__pyx_v_tags);
 
-  /* "lxml/etree.pyx":2178
+  /* "lxml/etree.pyx":2189
  *         see `_Element.iter`.
  *         """
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if root is None:
  *             return ITER_EMPTY
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2178, __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, 2189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -69232,13 +69563,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2178, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2189, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_root = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2179
+  /* "lxml/etree.pyx":2190
  *         """
  *         root = self.getroot()
  *         if root is None:             # <<<<<<<<<<<<<<
@@ -69249,7 +69580,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2180
+    /* "lxml/etree.pyx":2191
  *         root = self.getroot()
  *         if root is None:
  *             return ITER_EMPTY             # <<<<<<<<<<<<<<
@@ -69261,7 +69592,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2179
+    /* "lxml/etree.pyx":2190
  *         """
  *         root = self.getroot()
  *         if root is None:             # <<<<<<<<<<<<<<
@@ -69270,7 +69601,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  */
   }
 
-  /* "lxml/etree.pyx":2181
+  /* "lxml/etree.pyx":2192
  *         if root is None:
  *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -69281,25 +69612,25 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   __pyx_t_4 = (__pyx_t_5 != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/etree.pyx":2182
+    /* "lxml/etree.pyx":2193
  *             return ITER_EMPTY
  *         if tag is not None:
  *             tags += (tag,)             # <<<<<<<<<<<<<<
  *         return root.iter(*tags)
  * 
  */
-    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2182, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2193, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_INCREF(__pyx_v_tag);
     __Pyx_GIVEREF(__pyx_v_tag);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tag);
-    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2182, __pyx_L1_error)
+    __pyx_t_2 = PyNumber_InPlaceAdd(__pyx_v_tags, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2193, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_tags, ((PyObject*)__pyx_t_2));
     __pyx_t_2 = 0;
 
-    /* "lxml/etree.pyx":2181
+    /* "lxml/etree.pyx":2192
  *         if root is None:
  *             return ITER_EMPTY
  *         if tag is not None:             # <<<<<<<<<<<<<<
@@ -69308,7 +69639,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  */
   }
 
-  /* "lxml/etree.pyx":2183
+  /* "lxml/etree.pyx":2194
  *         if tag is not None:
  *             tags += (tag,)
  *         return root.iter(*tags)             # <<<<<<<<<<<<<<
@@ -69316,16 +69647,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
  *     def find(self, path, namespaces=None):
  */
   __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, 2183, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_iter); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2194, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_tags, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2183, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_2, __pyx_v_tags, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2194, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2167
+  /* "lxml/etree.pyx":2178
  *         return root.getiterator(*tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
@@ -69348,7 +69679,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_18iter(struct LxmlElementT
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2185
+/* "lxml/etree.pyx":2196
  *         return root.iter(*tags)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -69394,7 +69725,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_21find(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 2185, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "find") < 0)) __PYX_ERR(0, 2196, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -69410,7 +69741,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_21find(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("find", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2185, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("find", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2196, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.find", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -69436,23 +69767,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   __Pyx_RefNannySetupContext("find", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":2195
+  /* "lxml/etree.pyx":2206
  *         prefixes in the path expression.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         root = self.getroot()
  *         if _isString(path):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2195, __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, 2206, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2196
+  /* "lxml/etree.pyx":2207
  *         """
  *         self._assertHasRoot()
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if _isString(path):
  *             if path[:1] == "/":
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2196, __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, 2207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -69466,13 +69797,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2196, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_root = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2197
+  /* "lxml/etree.pyx":2208
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -69482,32 +69813,32 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2198
+    /* "lxml/etree.pyx":2209
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
  *                 path = "." + path
  *         return root.find(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2198, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2209, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2198, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2209, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
-      /* "lxml/etree.pyx":2199
+      /* "lxml/etree.pyx":2210
  *         if _isString(path):
  *             if path[:1] == "/":
  *                 path = "." + path             # <<<<<<<<<<<<<<
  *         return root.find(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2199, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2210, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/etree.pyx":2198
+      /* "lxml/etree.pyx":2209
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
@@ -69516,7 +69847,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  */
     }
 
-    /* "lxml/etree.pyx":2197
+    /* "lxml/etree.pyx":2208
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -69525,7 +69856,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  */
   }
 
-  /* "lxml/etree.pyx":2200
+  /* "lxml/etree.pyx":2211
  *             if path[:1] == "/":
  *                 path = "." + path
  *         return root.find(path, namespaces)             # <<<<<<<<<<<<<<
@@ -69533,7 +69864,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
  *     def findtext(self, path, default=None, namespaces=None):
  */
   __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, 2200, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_find); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2211, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
@@ -69550,7 +69881,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2200, __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(0, 2211, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
@@ -69558,13 +69889,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2200, __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(0, 2211, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2200, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2211, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -69575,7 +69906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_namespaces);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2200, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2211, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -69584,7 +69915,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2185
+  /* "lxml/etree.pyx":2196
  *         return root.iter(*tags)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -69608,7 +69939,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_20find(struct LxmlElementT
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2202
+/* "lxml/etree.pyx":2213
  *         return root.find(path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
@@ -69664,7 +69995,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_23findtext(PyObject *__pyx
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findtext") < 0)) __PYX_ERR(0, 2202, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findtext") < 0)) __PYX_ERR(0, 2213, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -69683,7 +70014,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_23findtext(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2202, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("findtext", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2213, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.findtext", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -69709,23 +70040,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   __Pyx_RefNannySetupContext("findtext", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":2212
+  /* "lxml/etree.pyx":2223
  *         prefixes in the path expression.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         root = self.getroot()
  *         if _isString(path):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2212, __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, 2223, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2213
+  /* "lxml/etree.pyx":2224
  *         """
  *         self._assertHasRoot()
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if _isString(path):
  *             if path[:1] == "/":
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2213, __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, 2224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -69739,13 +70070,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2213, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2224, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_root = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2214
+  /* "lxml/etree.pyx":2225
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -69755,32 +70086,32 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2215
+    /* "lxml/etree.pyx":2226
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
  *                 path = "." + path
  *         return root.findtext(path, default, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2215, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2226, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2215, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2226, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
-      /* "lxml/etree.pyx":2216
+      /* "lxml/etree.pyx":2227
  *         if _isString(path):
  *             if path[:1] == "/":
  *                 path = "." + path             # <<<<<<<<<<<<<<
  *         return root.findtext(path, default, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2216, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2227, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/etree.pyx":2215
+      /* "lxml/etree.pyx":2226
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
@@ -69789,7 +70120,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  */
     }
 
-    /* "lxml/etree.pyx":2214
+    /* "lxml/etree.pyx":2225
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -69798,7 +70129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  */
   }
 
-  /* "lxml/etree.pyx":2217
+  /* "lxml/etree.pyx":2228
  *             if path[:1] == "/":
  *                 path = "." + path
  *         return root.findtext(path, default, namespaces)             # <<<<<<<<<<<<<<
@@ -69806,7 +70137,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
  *     def findall(self, path, namespaces=None):
  */
   __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, 2217, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_findtext); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
@@ -69823,7 +70154,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_path, __pyx_v_default, __pyx_v_namespaces};
-    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
@@ -69831,13 +70162,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[4] = {__pyx_t_4, __pyx_v_path, __pyx_v_default, __pyx_v_namespaces};
-    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_1, 3+__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(3+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2228, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -69851,7 +70182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_6, 2+__pyx_t_1, __pyx_v_namespaces);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2217, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2228, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -69860,7 +70191,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2202
+  /* "lxml/etree.pyx":2213
  *         return root.find(path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
@@ -69884,7 +70215,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_22findtext(struct LxmlElem
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2219
+/* "lxml/etree.pyx":2230
  *         return root.findtext(path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -69930,7 +70261,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_25findall(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findall") < 0)) __PYX_ERR(0, 2219, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "findall") < 0)) __PYX_ERR(0, 2230, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -69946,7 +70277,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_25findall(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("findall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2219, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("findall", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2230, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.findall", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -69972,23 +70303,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   __Pyx_RefNannySetupContext("findall", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":2229
+  /* "lxml/etree.pyx":2240
  *         prefixes in the path expression.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         root = self.getroot()
  *         if _isString(path):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2229, __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, 2240, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2230
+  /* "lxml/etree.pyx":2241
  *         """
  *         self._assertHasRoot()
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if _isString(path):
  *             if path[:1] == "/":
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2230, __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, 2241, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -70002,13 +70333,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2230, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2241, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_root = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2231
+  /* "lxml/etree.pyx":2242
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -70018,32 +70349,32 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2232
+    /* "lxml/etree.pyx":2243
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
  *                 path = "." + path
  *         return root.findall(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2232, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2243, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2232, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2243, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
-      /* "lxml/etree.pyx":2233
+      /* "lxml/etree.pyx":2244
  *         if _isString(path):
  *             if path[:1] == "/":
  *                 path = "." + path             # <<<<<<<<<<<<<<
  *         return root.findall(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2233, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2244, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/etree.pyx":2232
+      /* "lxml/etree.pyx":2243
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
@@ -70052,7 +70383,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  */
     }
 
-    /* "lxml/etree.pyx":2231
+    /* "lxml/etree.pyx":2242
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -70061,7 +70392,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  */
   }
 
-  /* "lxml/etree.pyx":2234
+  /* "lxml/etree.pyx":2245
  *             if path[:1] == "/":
  *                 path = "." + path
  *         return root.findall(path, namespaces)             # <<<<<<<<<<<<<<
@@ -70069,7 +70400,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
  *     def iterfind(self, path, namespaces=None):
  */
   __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, 2234, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_findall); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2245, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
@@ -70086,7 +70417,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2234, __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(0, 2245, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
@@ -70094,13 +70425,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2234, __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(0, 2245, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2234, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -70111,7 +70442,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_namespaces);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2234, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -70120,7 +70451,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2219
+  /* "lxml/etree.pyx":2230
  *         return root.findtext(path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -70144,7 +70475,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_24findall(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2236
+/* "lxml/etree.pyx":2247
  *         return root.findall(path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -70190,7 +70521,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_27iterfind(PyObject *__pyx
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterfind") < 0)) __PYX_ERR(0, 2236, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "iterfind") < 0)) __PYX_ERR(0, 2247, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -70206,7 +70537,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_27iterfind(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("iterfind", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2236, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("iterfind", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2247, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.iterfind", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -70232,23 +70563,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   __Pyx_RefNannySetupContext("iterfind", 0);
   __Pyx_INCREF(__pyx_v_path);
 
-  /* "lxml/etree.pyx":2246
+  /* "lxml/etree.pyx":2257
  *         prefixes in the path expression.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         root = self.getroot()
  *         if _isString(path):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2246, __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, 2257, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2247
+  /* "lxml/etree.pyx":2258
  *         """
  *         self._assertHasRoot()
  *         root = self.getroot()             # <<<<<<<<<<<<<<
  *         if _isString(path):
  *             if path[:1] == "/":
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_getroot); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2247, __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, 2258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -70262,13 +70593,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2247, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2258, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_root = __pyx_t_2;
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2248
+  /* "lxml/etree.pyx":2259
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -70278,32 +70609,32 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   __pyx_t_5 = (_isString(__pyx_v_path) != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2249
+    /* "lxml/etree.pyx":2260
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
  *                 path = "." + path
  *         return root.iterfind(path, namespaces)
  */
-    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2249, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_GetSlice(__pyx_v_path, 0, 1, NULL, NULL, &__pyx_slice__39, 0, 1, 1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2260, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2249, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PyString_Equals(__pyx_t_2, __pyx_kp_s__38, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2260, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     if (__pyx_t_5) {
 
-      /* "lxml/etree.pyx":2250
+      /* "lxml/etree.pyx":2261
  *         if _isString(path):
  *             if path[:1] == "/":
  *                 path = "." + path             # <<<<<<<<<<<<<<
  *         return root.iterfind(path, namespaces)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2250, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_kp_s__3, __pyx_v_path); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2261, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_path, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/etree.pyx":2249
+      /* "lxml/etree.pyx":2260
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
@@ -70312,7 +70643,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  */
     }
 
-    /* "lxml/etree.pyx":2248
+    /* "lxml/etree.pyx":2259
  *         self._assertHasRoot()
  *         root = self.getroot()
  *         if _isString(path):             # <<<<<<<<<<<<<<
@@ -70321,7 +70652,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  */
   }
 
-  /* "lxml/etree.pyx":2251
+  /* "lxml/etree.pyx":2262
  *             if path[:1] == "/":
  *                 path = "." + path
  *         return root.iterfind(path, namespaces)             # <<<<<<<<<<<<<<
@@ -70329,7 +70660,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  */
   __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, 2251, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_root, __pyx_n_s_iterfind); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2262, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   __pyx_t_1 = 0;
@@ -70346,7 +70677,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2251, __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(0, 2262, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
@@ -70354,13 +70685,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[3] = {__pyx_t_4, __pyx_v_path, __pyx_v_namespaces};
-    __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(0, 2251, __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(0, 2262, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_GOTREF(__pyx_t_2);
   } else
   #endif
   {
-    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2251, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2+__pyx_t_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2262, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     if (__pyx_t_4) {
       __Pyx_GIVEREF(__pyx_t_4); PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4); __pyx_t_4 = NULL;
@@ -70371,7 +70702,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
     __Pyx_INCREF(__pyx_v_namespaces);
     __Pyx_GIVEREF(__pyx_v_namespaces);
     PyTuple_SET_ITEM(__pyx_t_6, 1+__pyx_t_1, __pyx_v_namespaces);
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2251, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_6, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2262, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   }
@@ -70380,7 +70711,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2236
+  /* "lxml/etree.pyx":2247
  *         return root.findall(path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
@@ -70404,7 +70735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_26iterfind(struct LxmlElem
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2253
+/* "lxml/etree.pyx":2264
  *         return root.iterfind(path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -70433,7 +70764,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_29xpath(PyObject *__pyx_v_
     values[1] = ((PyObject *)Py_None);
     values[2] = ((PyObject *)Py_None);
 
-    /* "lxml/etree.pyx":2254
+    /* "lxml/etree.pyx":2265
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,
  *               smart_strings=True, **_variables):             # <<<<<<<<<<<<<<
@@ -70464,7 +70795,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_29xpath(PyObject *__pyx_v_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, pos_args, "xpath") < 0)) __PYX_ERR(0, 2253, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__variables, values, pos_args, "xpath") < 0)) __PYX_ERR(0, 2264, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -70478,7 +70809,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_29xpath(PyObject *__pyx_v_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2253, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("xpath", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2264, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__variables); __pyx_v__variables = 0;
   __Pyx_AddTraceback("lxml.etree._ElementTree.xpath", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -70487,7 +70818,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_29xpath(PyObject *__pyx_v_
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_28xpath(((struct LxmlElementTree *)__pyx_v_self), __pyx_v__path, __pyx_v_namespaces, __pyx_v_extensions, __pyx_v_smart_strings, __pyx_v__variables);
 
-  /* "lxml/etree.pyx":2253
+  /* "lxml/etree.pyx":2264
  *         return root.iterfind(path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -70511,64 +70842,64 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("xpath", 0);
 
-  /* "lxml/etree.pyx":2272
+  /* "lxml/etree.pyx":2283
  *         XPathEvaluator directly.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
  *                                            extensions=extensions,
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2272, __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, 2283, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2273
+  /* "lxml/etree.pyx":2284
  *         """
  *         self._assertHasRoot()
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2273, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2284, __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_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2273, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2284, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_namespaces, __pyx_v_namespaces) < 0) __PYX_ERR(0, 2273, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_namespaces, __pyx_v_namespaces) < 0) __PYX_ERR(0, 2284, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2274
+  /* "lxml/etree.pyx":2285
  *         self._assertHasRoot()
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
  *                                            extensions=extensions,             # <<<<<<<<<<<<<<
  *                                            smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 2273, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 2284, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2275
+  /* "lxml/etree.pyx":2286
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)             # <<<<<<<<<<<<<<
  *         return evaluator(_path, **_variables)
  * 
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 2273, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_smart_strings, __pyx_v_smart_strings) < 0) __PYX_ERR(0, 2284, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2273
+  /* "lxml/etree.pyx":2284
  *         """
  *         self._assertHasRoot()
  *         evaluator = XPathDocumentEvaluator(self, namespaces=namespaces,             # <<<<<<<<<<<<<<
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)
  */
-  __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, 2273, __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, 2284, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_evaluator = ((struct __pyx_obj_4lxml_5etree_XPathDocumentEvaluator *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2276
+  /* "lxml/etree.pyx":2287
  *                                            extensions=extensions,
  *                                            smart_strings=smart_strings)
  *         return evaluator(_path, **_variables)             # <<<<<<<<<<<<<<
@@ -70576,19 +70907,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2276, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(__pyx_v__path);
   __Pyx_GIVEREF(__pyx_v__path);
   PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_v__path);
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_4, __pyx_v__variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2276, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_evaluator), __pyx_t_4, __pyx_v__variables); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2253
+  /* "lxml/etree.pyx":2264
  *         return root.iterfind(path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
@@ -70610,7 +70941,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_28xpath(struct LxmlElement
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2278
+/* "lxml/etree.pyx":2289
  *         return evaluator(_path, **_variables)
  * 
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):             # <<<<<<<<<<<<<<
@@ -70669,7 +71000,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_31xslt(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__kw, values, pos_args, "xslt") < 0)) __PYX_ERR(0, 2278, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__kw, values, pos_args, "xslt") < 0)) __PYX_ERR(0, 2289, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -70688,7 +71019,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_31xslt(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("xslt", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2278, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("xslt", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2289, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__kw); __pyx_v__kw = 0;
   __Pyx_AddTraceback("lxml.etree._ElementTree.xslt", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -70713,55 +71044,55 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("xslt", 0);
 
-  /* "lxml/etree.pyx":2292
+  /* "lxml/etree.pyx":2303
  *         class directly.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         style = XSLT(_xslt, extensions=extensions,
  *                      access_control=access_control)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2292, __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, 2303, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2293
+  /* "lxml/etree.pyx":2304
  *         """
  *         self._assertHasRoot()
  *         style = XSLT(_xslt, extensions=extensions,             # <<<<<<<<<<<<<<
  *                      access_control=access_control)
  *         return style(self, **_kw)
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2293, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v__xslt);
   __Pyx_GIVEREF(__pyx_v__xslt);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v__xslt);
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2293, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 2293, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_extensions, __pyx_v_extensions) < 0) __PYX_ERR(0, 2304, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2294
+  /* "lxml/etree.pyx":2305
  *         self._assertHasRoot()
  *         style = XSLT(_xslt, extensions=extensions,
  *                      access_control=access_control)             # <<<<<<<<<<<<<<
  *         return style(self, **_kw)
  * 
  */
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_access_control, __pyx_v_access_control) < 0) __PYX_ERR(0, 2293, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_access_control, __pyx_v_access_control) < 0) __PYX_ERR(0, 2304, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2293
+  /* "lxml/etree.pyx":2304
  *         """
  *         self._assertHasRoot()
  *         style = XSLT(_xslt, extensions=extensions,             # <<<<<<<<<<<<<<
  *                      access_control=access_control)
  *         return style(self, **_kw)
  */
-  __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, 2293, __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, 2304, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_style = ((struct __pyx_obj_4lxml_5etree_XSLT *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2295
+  /* "lxml/etree.pyx":2306
  *         style = XSLT(_xslt, extensions=extensions,
  *                      access_control=access_control)
  *         return style(self, **_kw)             # <<<<<<<<<<<<<<
@@ -70769,19 +71100,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
  *     def relaxng(self, relaxng):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2295, __pyx_L1_error)
+  __pyx_t_4 = PyTuple_New(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_INCREF(((PyObject *)__pyx_v_self));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
   PyTuple_SET_ITEM(__pyx_t_4, 0, ((PyObject *)__pyx_v_self));
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_style), __pyx_t_4, __pyx_v__kw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2295, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_v_style), __pyx_t_4, __pyx_v__kw); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2306, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2278
+  /* "lxml/etree.pyx":2289
  *         return evaluator(_path, **_variables)
  * 
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):             # <<<<<<<<<<<<<<
@@ -70803,7 +71134,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_30xslt(struct LxmlElementT
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2297
+/* "lxml/etree.pyx":2308
  *         return style(self, **_kw)
  * 
  *     def relaxng(self, relaxng):             # <<<<<<<<<<<<<<
@@ -70836,28 +71167,28 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("relaxng", 0);
 
-  /* "lxml/etree.pyx":2311
+  /* "lxml/etree.pyx":2322
  *         class directly.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         schema = RelaxNG(relaxng)
  *         return schema.validate(self)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2311, __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, 2322, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2312
+  /* "lxml/etree.pyx":2323
  *         """
  *         self._assertHasRoot()
  *         schema = RelaxNG(relaxng)             # <<<<<<<<<<<<<<
  *         return schema.validate(self)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_RelaxNG), __pyx_v_relaxng); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2312, __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, 2323, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_RelaxNG *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2313
+  /* "lxml/etree.pyx":2324
  *         self._assertHasRoot()
  *         schema = RelaxNG(relaxng)
  *         return schema.validate(self)             # <<<<<<<<<<<<<<
@@ -70865,7 +71196,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
  *     def xmlschema(self, xmlschema):
  */
   __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, 2313, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_schema), __pyx_n_s_validate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2324, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -70879,14 +71210,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self));
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2313, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2324, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2297
+  /* "lxml/etree.pyx":2308
  *         return style(self, **_kw)
  * 
  *     def relaxng(self, relaxng):             # <<<<<<<<<<<<<<
@@ -70908,7 +71239,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_32relaxng(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2315
+/* "lxml/etree.pyx":2326
  *         return schema.validate(self)
  * 
  *     def xmlschema(self, xmlschema):             # <<<<<<<<<<<<<<
@@ -70941,28 +71272,28 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("xmlschema", 0);
 
-  /* "lxml/etree.pyx":2329
+  /* "lxml/etree.pyx":2340
  *         class directly.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         schema = XMLSchema(xmlschema)
  *         return schema.validate(self)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2329, __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, 2340, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2330
+  /* "lxml/etree.pyx":2341
  *         """
  *         self._assertHasRoot()
  *         schema = XMLSchema(xmlschema)             # <<<<<<<<<<<<<<
  *         return schema.validate(self)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_CallOneArg(((PyObject *)__pyx_ptype_4lxml_5etree_XMLSchema), __pyx_v_xmlschema); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2330, __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, 2341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_schema = ((struct __pyx_obj_4lxml_5etree_XMLSchema *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2331
+  /* "lxml/etree.pyx":2342
  *         self._assertHasRoot()
  *         schema = XMLSchema(xmlschema)
  *         return schema.validate(self)             # <<<<<<<<<<<<<<
@@ -70970,7 +71301,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
  *     def xinclude(self):
  */
   __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, 2331, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_schema), __pyx_n_s_validate); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2342, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -70984,14 +71315,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_self)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self));
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2331, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2342, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2315
+  /* "lxml/etree.pyx":2326
  *         return schema.validate(self)
  * 
  *     def xmlschema(self, xmlschema):             # <<<<<<<<<<<<<<
@@ -71013,7 +71344,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_34xmlschema(struct LxmlEle
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2333
+/* "lxml/etree.pyx":2344
  *         return schema.validate(self)
  * 
  *     def xinclude(self):             # <<<<<<<<<<<<<<
@@ -71045,23 +71376,23 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("xinclude", 0);
 
-  /* "lxml/etree.pyx":2345
+  /* "lxml/etree.pyx":2356
  *         due to restrictions of libxml2 <= 2.6.29.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         XInclude()(self._context_node)
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2345, __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, 2356, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2346
+  /* "lxml/etree.pyx":2357
  *         """
  *         self._assertHasRoot()
  *         XInclude()(self._context_node)             # <<<<<<<<<<<<<<
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,
  */
-  __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_XInclude)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2346, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree_XInclude)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2357, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_3))) {
@@ -71075,12 +71406,12 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, ((PyObject *)__pyx_v_self->_context_node)) : __Pyx_PyObject_CallOneArg(__pyx_t_3, ((PyObject *)__pyx_v_self->_context_node));
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2346, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2357, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2333
+  /* "lxml/etree.pyx":2344
  *         return schema.validate(self)
  * 
  *     def xinclude(self):             # <<<<<<<<<<<<<<
@@ -71103,7 +71434,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_36xinclude(struct LxmlElem
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2348
+/* "lxml/etree.pyx":2359
  *         XInclude()(self._context_node)
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
@@ -71131,7 +71462,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_39write_c14n(PyObject *__p
     values[2] = ((PyObject *)Py_True);
     values[3] = ((PyObject *)__pyx_int_0);
 
-    /* "lxml/etree.pyx":2349
+    /* "lxml/etree.pyx":2360
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,
  *                    compression=0, inclusive_ns_prefixes=None):             # <<<<<<<<<<<<<<
@@ -71162,7 +71493,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_39write_c14n(PyObject *__p
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_c14n") < 0)) __PYX_ERR(0, 2348, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "write_c14n") < 0)) __PYX_ERR(0, 2359, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -71177,7 +71508,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_39write_c14n(PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("write_c14n", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2348, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("write_c14n", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2359, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._ElementTree.write_c14n", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -71185,7 +71516,7 @@ static PyObject *__pyx_pw_4lxml_5etree_12_ElementTree_39write_c14n(PyObject *__p
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(((struct LxmlElementTree *)__pyx_v_self), __pyx_v_file, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_compression, __pyx_v_inclusive_ns_prefixes);
 
-  /* "lxml/etree.pyx":2348
+  /* "lxml/etree.pyx":2359
  *         XInclude()(self._context_node)
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
@@ -71210,16 +71541,16 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
   __Pyx_RefNannySetupContext("write_c14n", 0);
   __Pyx_INCREF(__pyx_v_compression);
 
-  /* "lxml/etree.pyx":2367
+  /* "lxml/etree.pyx":2378
  *         of the namespace node's parent element.
  *         """
  *         self._assertHasRoot()             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot(__pyx_v_self); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2367, __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, 2378, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2368
+  /* "lxml/etree.pyx":2379
  *         """
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)             # <<<<<<<<<<<<<<
@@ -71228,10 +71559,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  */
   __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, 2368, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_2)); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2379, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2369
+  /* "lxml/etree.pyx":2380
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
@@ -71245,14 +71576,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
     __pyx_t_3 = __pyx_t_5;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_2 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2369, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2369, __pyx_L1_error)
+  __pyx_t_2 = PyObject_RichCompare(__pyx_v_compression, __pyx_int_0, Py_LT); __Pyx_XGOTREF(__pyx_t_2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2380, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 2380, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_t_3 = __pyx_t_5;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2370
+    /* "lxml/etree.pyx":2381
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:
  *             compression = 0             # <<<<<<<<<<<<<<
@@ -71262,7 +71593,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
     __Pyx_INCREF(__pyx_int_0);
     __Pyx_DECREF_SET(__pyx_v_compression, __pyx_int_0);
 
-    /* "lxml/etree.pyx":2369
+    /* "lxml/etree.pyx":2380
  *         self._assertHasRoot()
  *         _assertValidNode(self._context_node)
  *         if compression is None or compression < 0:             # <<<<<<<<<<<<<<
@@ -71271,7 +71602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  */
   }
 
-  /* "lxml/etree.pyx":2372
+  /* "lxml/etree.pyx":2383
  *             compression = 0
  * 
  *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,             # <<<<<<<<<<<<<<
@@ -71280,31 +71611,31 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
  */
   __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, 2372, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2372, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_exclusive); if (unlikely((__pyx_t_3 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2383, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_with_comments); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2383, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2373
+  /* "lxml/etree.pyx":2384
  * 
  *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  *                         compression, inclusive_ns_prefixes)             # <<<<<<<<<<<<<<
  * 
  * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):
  */
-  __pyx_t_1 = __Pyx_PyInt_As_int(__pyx_v_compression); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2373, __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, 2384, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2372
+  /* "lxml/etree.pyx":2383
  *             compression = 0
  * 
  *         _tofilelikeC14N(file, self._context_node, exclusive, with_comments,             # <<<<<<<<<<<<<<
  *                         compression, inclusive_ns_prefixes)
  * 
  */
-  __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, 2372, __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, 2383, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-  /* "lxml/etree.pyx":2348
+  /* "lxml/etree.pyx":2359
  *         XInclude()(self._context_node)
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
@@ -71327,7 +71658,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12_ElementTree_38write_c14n(struct LxmlEl
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2375
+/* "lxml/etree.pyx":2386
  *                         compression, inclusive_ns_prefixes)
  * 
  * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):             # <<<<<<<<<<<<<<
@@ -71341,7 +71672,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_elementTreeFactory", 0);
 
-  /* "lxml/etree.pyx":2376
+  /* "lxml/etree.pyx":2387
  * 
  * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):
  *     return _newElementTree(doc, context_node, _ElementTree)             # <<<<<<<<<<<<<<
@@ -71349,13 +71680,13 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
  * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,
  */
   __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, 2376, __pyx_L1_error)
+  __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, 2387, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = ((struct LxmlElementTree *)__pyx_t_1);
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2375
+  /* "lxml/etree.pyx":2386
  *                         compression, inclusive_ns_prefixes)
  * 
  * cdef _ElementTree _elementTreeFactory(_Document doc, _Element context_node):             # <<<<<<<<<<<<<<
@@ -71374,7 +71705,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__elementTreeFactory(struct L
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2378
+/* "lxml/etree.pyx":2389
  *     return _newElementTree(doc, context_node, _ElementTree)
  * 
  * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,             # <<<<<<<<<<<<<<
@@ -71396,7 +71727,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __Pyx_RefNannySetupContext("_newElementTree", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_context_node);
 
-  /* "lxml/etree.pyx":2381
+  /* "lxml/etree.pyx":2392
  *                                   object baseclass):
  *     cdef _ElementTree result
  *     result = baseclass()             # <<<<<<<<<<<<<<
@@ -71416,14 +71747,14 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2381, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2392, __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__ElementTree))))) __PYX_ERR(0, 2381, __pyx_L1_error)
+  if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__ElementTree))))) __PYX_ERR(0, 2392, __pyx_L1_error)
   __pyx_v_result = ((struct LxmlElementTree *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2382
+  /* "lxml/etree.pyx":2393
  *     cdef _ElementTree result
  *     result = baseclass()
  *     if context_node is None and doc is not None:             # <<<<<<<<<<<<<<
@@ -71443,20 +71774,20 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_4) {
 
-    /* "lxml/etree.pyx":2383
+    /* "lxml/etree.pyx":2394
  *     result = baseclass()
  *     if context_node is None and doc is not None:
  *         context_node = doc.getroot()             # <<<<<<<<<<<<<<
  *     if context_node is None:
  *         _assertValidDoc(doc)
  */
-    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2383, __pyx_L1_error)
+    __pyx_t_1 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2394, __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, 2383, __pyx_L1_error)
+    if (!(likely(((__pyx_t_1) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_1, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2394, __pyx_L1_error)
     __Pyx_DECREF_SET(__pyx_v_context_node, ((struct LxmlElement *)__pyx_t_1));
     __pyx_t_1 = 0;
 
-    /* "lxml/etree.pyx":2382
+    /* "lxml/etree.pyx":2393
  *     cdef _ElementTree result
  *     result = baseclass()
  *     if context_node is None and doc is not None:             # <<<<<<<<<<<<<<
@@ -71465,7 +71796,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  */
   }
 
-  /* "lxml/etree.pyx":2384
+  /* "lxml/etree.pyx":2395
  *     if context_node is None and doc is not None:
  *         context_node = doc.getroot()
  *     if context_node is None:             # <<<<<<<<<<<<<<
@@ -71476,16 +71807,16 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":2385
+    /* "lxml/etree.pyx":2396
  *         context_node = doc.getroot()
  *     if context_node is None:
  *         _assertValidDoc(doc)             # <<<<<<<<<<<<<<
  *         result._doc = doc
  *     else:
  */
-    __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2385, __pyx_L1_error)
+    __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidDoc(__pyx_v_doc); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2396, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2386
+    /* "lxml/etree.pyx":2397
  *     if context_node is None:
  *         _assertValidDoc(doc)
  *         result._doc = doc             # <<<<<<<<<<<<<<
@@ -71498,7 +71829,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
     __Pyx_DECREF(((PyObject *)__pyx_v_result->_doc));
     __pyx_v_result->_doc = __pyx_v_doc;
 
-    /* "lxml/etree.pyx":2384
+    /* "lxml/etree.pyx":2395
  *     if context_node is None and doc is not None:
  *         context_node = doc.getroot()
  *     if context_node is None:             # <<<<<<<<<<<<<<
@@ -71508,7 +71839,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
     goto __pyx_L6;
   }
 
-  /* "lxml/etree.pyx":2388
+  /* "lxml/etree.pyx":2399
  *         result._doc = doc
  *     else:
  *         _assertValidNode(context_node)             # <<<<<<<<<<<<<<
@@ -71516,11 +71847,11 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
  *     return result
  */
   /*else*/ {
-    __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_context_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2388, __pyx_L1_error)
+    __pyx_t_7 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_context_node); if (unlikely(__pyx_t_7 == ((int)-1))) __PYX_ERR(0, 2399, __pyx_L1_error)
   }
   __pyx_L6:;
 
-  /* "lxml/etree.pyx":2389
+  /* "lxml/etree.pyx":2400
  *     else:
  *         _assertValidNode(context_node)
  *     result._context_node = context_node             # <<<<<<<<<<<<<<
@@ -71533,7 +71864,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __Pyx_DECREF(((PyObject *)__pyx_v_result->_context_node));
   __pyx_v_result->_context_node = __pyx_v_context_node;
 
-  /* "lxml/etree.pyx":2390
+  /* "lxml/etree.pyx":2401
  *         _assertValidNode(context_node)
  *     result._context_node = context_node
  *     return result             # <<<<<<<<<<<<<<
@@ -71545,7 +71876,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2378
+  /* "lxml/etree.pyx":2389
  *     return _newElementTree(doc, context_node, _ElementTree)
  * 
  * cdef _ElementTree _newElementTree(_Document doc, _Element context_node,             # <<<<<<<<<<<<<<
@@ -71568,7 +71899,7 @@ static struct LxmlElementTree *__pyx_f_4lxml_5etree__newElementTree(struct LxmlD
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2399
+/* "lxml/etree.pyx":2410
  *     """
  *     cdef _Element _element
  *     def __cinit__(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -71602,7 +71933,7 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_1__cinit__(PyObject *__pyx_v_self, PyO
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2399, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2410, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -71613,13 +71944,13 @@ static int __pyx_pw_4lxml_5etree_7_Attrib_1__cinit__(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2399, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2410, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Attrib.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2399, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2410, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_7_Attrib___cinit__(((struct __pyx_obj_4lxml_5etree__Attrib *)__pyx_v_self), __pyx_v_element);
 
   /* function exit code */
@@ -71637,16 +71968,16 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2400
+  /* "lxml/etree.pyx":2411
  *     cdef _Element _element
  *     def __cinit__(self, _Element element not None):
  *         _assertValidNode(element)             # <<<<<<<<<<<<<<
  *         self._element = element
  * 
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2400, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2411, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2401
+  /* "lxml/etree.pyx":2412
  *     def __cinit__(self, _Element element not None):
  *         _assertValidNode(element)
  *         self._element = element             # <<<<<<<<<<<<<<
@@ -71659,7 +71990,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_element));
   __pyx_v_self->_element = __pyx_v_element;
 
-  /* "lxml/etree.pyx":2399
+  /* "lxml/etree.pyx":2410
  *     """
  *     cdef _Element _element
  *     def __cinit__(self, _Element element not None):             # <<<<<<<<<<<<<<
@@ -71678,7 +72009,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib___cinit__(struct __pyx_obj_4lxml_5etre
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2404
+/* "lxml/etree.pyx":2415
  * 
  *     # MANIPULATORS
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -71706,7 +72037,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__setitem__", 0);
 
-  /* "lxml/etree.pyx":2405
+  /* "lxml/etree.pyx":2416
  *     # MANIPULATORS
  *     def __setitem__(self, key, value):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -71715,10 +72046,10 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
  */
   __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, 2405, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2416, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2406
+  /* "lxml/etree.pyx":2417
  *     def __setitem__(self, key, value):
  *         _assertValidNode(self._element)
  *         _setAttributeValue(self._element, key, value)             # <<<<<<<<<<<<<<
@@ -71727,10 +72058,10 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
  */
   __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, 2406, __pyx_L1_error)
+  __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, 2417, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2404
+  /* "lxml/etree.pyx":2415
  * 
  *     # MANIPULATORS
  *     def __setitem__(self, key, value):             # <<<<<<<<<<<<<<
@@ -71750,7 +72081,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_2__setitem__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2408
+/* "lxml/etree.pyx":2419
  *         _setAttributeValue(self._element, key, value)
  * 
  *     def __delitem__(self, key):             # <<<<<<<<<<<<<<
@@ -71778,7 +72109,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__delitem__", 0);
 
-  /* "lxml/etree.pyx":2409
+  /* "lxml/etree.pyx":2420
  * 
  *     def __delitem__(self, key):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -71787,10 +72118,10 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
  */
   __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, 2409, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2420, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2410
+  /* "lxml/etree.pyx":2421
  *     def __delitem__(self, key):
  *         _assertValidNode(self._element)
  *         _delAttribute(self._element, key)             # <<<<<<<<<<<<<<
@@ -71799,10 +72130,10 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
  */
   __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, 2410, __pyx_L1_error)
+  __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, 2421, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2408
+  /* "lxml/etree.pyx":2419
  *         _setAttributeValue(self._element, key, value)
  * 
  *     def __delitem__(self, key):             # <<<<<<<<<<<<<<
@@ -71822,7 +72153,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_4__delitem__(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2412
+/* "lxml/etree.pyx":2423
  *         _delAttribute(self._element, key)
  * 
  *     def update(self, sequence_or_dict):             # <<<<<<<<<<<<<<
@@ -71864,7 +72195,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   __Pyx_RefNannySetupContext("update", 0);
   __Pyx_INCREF(__pyx_v_sequence_or_dict);
 
-  /* "lxml/etree.pyx":2413
+  /* "lxml/etree.pyx":2424
  * 
  *     def update(self, sequence_or_dict):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -71873,10 +72204,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  */
   __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, 2413, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2424, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2414
+  /* "lxml/etree.pyx":2425
  *     def update(self, sequence_or_dict):
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):             # <<<<<<<<<<<<<<
@@ -71897,14 +72228,14 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/etree.pyx":2415
+    /* "lxml/etree.pyx":2426
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  *             sequence_or_dict = sequence_or_dict.items()             # <<<<<<<<<<<<<<
  *         for key, value in sequence_or_dict:
  *             _setAttributeValue(self._element, key, value)
  */
-    __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_sequence_or_dict, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2415, __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, 2426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -71918,13 +72249,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
     }
     __pyx_t_1 = (__pyx_t_7) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_7) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2415, __pyx_L1_error)
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2426, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_DECREF_SET(__pyx_v_sequence_or_dict, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/etree.pyx":2414
+    /* "lxml/etree.pyx":2425
  *     def update(self, sequence_or_dict):
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):             # <<<<<<<<<<<<<<
@@ -71933,7 +72264,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  */
   }
 
-  /* "lxml/etree.pyx":2416
+  /* "lxml/etree.pyx":2427
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  *             sequence_or_dict = sequence_or_dict.items()
  *         for key, value in sequence_or_dict:             # <<<<<<<<<<<<<<
@@ -71944,26 +72275,26 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
     __pyx_t_1 = __pyx_v_sequence_or_dict; __Pyx_INCREF(__pyx_t_1); __pyx_t_8 = 0;
     __pyx_t_9 = NULL;
   } else {
-    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sequence_or_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2416, __pyx_L1_error)
+    __pyx_t_8 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_sequence_or_dict); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2427, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
-    __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2416, __pyx_L1_error)
+    __pyx_t_9 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 2427, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_9)) {
       if (likely(PyList_CheckExact(__pyx_t_1))) {
         if (__pyx_t_8 >= PyList_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2416, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2427, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2416, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2427, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       } else {
         if (__pyx_t_8 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2416, __pyx_L1_error)
+        __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_8); __Pyx_INCREF(__pyx_t_6); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 2427, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2416, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2427, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
       }
@@ -71973,7 +72304,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 2416, __pyx_L1_error)
+          else __PYX_ERR(0, 2427, __pyx_L1_error)
         }
         break;
       }
@@ -71985,7 +72316,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 2416, __pyx_L1_error)
+        __PYX_ERR(0, 2427, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -71998,15 +72329,15 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
       __Pyx_INCREF(__pyx_t_7);
       __Pyx_INCREF(__pyx_t_10);
       #else
-      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2416, __pyx_L1_error)
+      __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 2427, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
-      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2416, __pyx_L1_error)
+      __pyx_t_10 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 2427, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       #endif
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2416, __pyx_L1_error)
+      __pyx_t_11 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 2427, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_12 = Py_TYPE(__pyx_t_11)->tp_iternext;
@@ -72014,7 +72345,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
       __Pyx_GOTREF(__pyx_t_7);
       index = 1; __pyx_t_10 = __pyx_t_12(__pyx_t_11); if (unlikely(!__pyx_t_10)) goto __pyx_L8_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_10);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 2416, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_12(__pyx_t_11), 2) < 0) __PYX_ERR(0, 2427, __pyx_L1_error)
       __pyx_t_12 = NULL;
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       goto __pyx_L9_unpacking_done;
@@ -72022,7 +72353,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
       __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
       __pyx_t_12 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 2416, __pyx_L1_error)
+      __PYX_ERR(0, 2427, __pyx_L1_error)
       __pyx_L9_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_key, __pyx_t_7);
@@ -72030,7 +72361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
     __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_10);
     __pyx_t_10 = 0;
 
-    /* "lxml/etree.pyx":2417
+    /* "lxml/etree.pyx":2428
  *             sequence_or_dict = sequence_or_dict.items()
  *         for key, value in sequence_or_dict:
  *             _setAttributeValue(self._element, key, value)             # <<<<<<<<<<<<<<
@@ -72039,10 +72370,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
  */
     __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, 2417, __pyx_L1_error)
+    __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, 2428, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":2416
+    /* "lxml/etree.pyx":2427
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  *             sequence_or_dict = sequence_or_dict.items()
  *         for key, value in sequence_or_dict:             # <<<<<<<<<<<<<<
@@ -72052,7 +72383,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2412
+  /* "lxml/etree.pyx":2423
  *         _delAttribute(self._element, key)
  * 
  *     def update(self, sequence_or_dict):             # <<<<<<<<<<<<<<
@@ -72080,7 +72411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_6update(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2419
+/* "lxml/etree.pyx":2430
  *             _setAttributeValue(self._element, key, value)
  * 
  *     def pop(self, key, *default):             # <<<<<<<<<<<<<<
@@ -72127,7 +72458,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_9pop(PyObject *__pyx_v_self, PyO
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "pop") < 0)) __PYX_ERR(0, 2419, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, used_pos_args, "pop") < 0)) __PYX_ERR(0, 2430, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
       goto __pyx_L5_argtuple_error;
@@ -72138,7 +72469,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_9pop(PyObject *__pyx_v_self, PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2419, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("pop", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2430, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_default); __pyx_v_default = 0;
   __Pyx_AddTraceback("lxml.etree._Attrib.pop", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -72165,35 +72496,35 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("pop", 0);
 
-  /* "lxml/etree.pyx":2420
+  /* "lxml/etree.pyx":2431
  * 
  *     def pop(self, key, *default):
  *         if len(default) > 1:             # <<<<<<<<<<<<<<
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  *         _assertValidNode(self._element)
  */
-  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2420, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2431, __pyx_L1_error)
   __pyx_t_2 = ((__pyx_t_1 > 1) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2421
+    /* "lxml/etree.pyx":2432
  *     def pop(self, key, *default):
  *         if len(default) > 1:
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  */
-    __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2421, __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, 2421, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_GET_SIZE(__pyx_v_default); if (unlikely(__pyx_t_1 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2432, __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, 2432, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_pop_expected_at_most_2_arguments, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2421, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_pop_expected_at_most_2_arguments, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2432, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_4, 0, 0);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __PYX_ERR(0, 2421, __pyx_L1_error)
+    __PYX_ERR(0, 2432, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2420
+    /* "lxml/etree.pyx":2431
  * 
  *     def pop(self, key, *default):
  *         if len(default) > 1:             # <<<<<<<<<<<<<<
@@ -72202,7 +72533,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  */
   }
 
-  /* "lxml/etree.pyx":2422
+  /* "lxml/etree.pyx":2433
  *         if len(default) > 1:
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72211,10 +72542,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  */
   __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, 2422, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_4)); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2433, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2423
+  /* "lxml/etree.pyx":2434
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)             # <<<<<<<<<<<<<<
@@ -72223,13 +72554,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  */
   __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, 2423, __pyx_L1_error)
+  __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, 2434, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_result = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":2424
+  /* "lxml/etree.pyx":2435
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -72240,7 +72571,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   __pyx_t_6 = (__pyx_t_2 != 0);
   if (__pyx_t_6) {
 
-    /* "lxml/etree.pyx":2425
+    /* "lxml/etree.pyx":2436
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:
  *             if not default:             # <<<<<<<<<<<<<<
@@ -72251,7 +72582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
     __pyx_t_2 = ((!__pyx_t_6) != 0);
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":2426
+      /* "lxml/etree.pyx":2437
  *         if result is None:
  *             if not default:
  *                 raise KeyError, key             # <<<<<<<<<<<<<<
@@ -72259,9 +72590,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  *         else:
  */
       __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
-      __PYX_ERR(0, 2426, __pyx_L1_error)
+      __PYX_ERR(0, 2437, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":2425
+      /* "lxml/etree.pyx":2436
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:
  *             if not default:             # <<<<<<<<<<<<<<
@@ -72270,19 +72601,19 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
  */
     }
 
-    /* "lxml/etree.pyx":2427
+    /* "lxml/etree.pyx":2438
  *             if not default:
  *                 raise KeyError, key
  *             result = default[0]             # <<<<<<<<<<<<<<
  *         else:
  *             _delAttribute(self._element, key)
  */
-    __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, 2427, __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, 2438, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":2424
+    /* "lxml/etree.pyx":2435
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -72292,7 +72623,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
     goto __pyx_L4;
   }
 
-  /* "lxml/etree.pyx":2429
+  /* "lxml/etree.pyx":2440
  *             result = default[0]
  *         else:
  *             _delAttribute(self._element, key)             # <<<<<<<<<<<<<<
@@ -72302,12 +72633,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   /*else*/ {
     __pyx_t_3 = ((PyObject *)__pyx_v_self->_element);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_5 = __pyx_f_4lxml_5etree__delAttribute(((struct LxmlElement *)__pyx_t_3), __pyx_v_key); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2429, __pyx_L1_error)
+    __pyx_t_5 = __pyx_f_4lxml_5etree__delAttribute(((struct LxmlElement *)__pyx_t_3), __pyx_v_key); if (unlikely(__pyx_t_5 == ((int)-1))) __PYX_ERR(0, 2440, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   }
   __pyx_L4:;
 
-  /* "lxml/etree.pyx":2430
+  /* "lxml/etree.pyx":2441
  *         else:
  *             _delAttribute(self._element, key)
  *         return result             # <<<<<<<<<<<<<<
@@ -72319,7 +72650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2419
+  /* "lxml/etree.pyx":2430
  *             _setAttributeValue(self._element, key, value)
  * 
  *     def pop(self, key, *default):             # <<<<<<<<<<<<<<
@@ -72340,7 +72671,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_8pop(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2432
+/* "lxml/etree.pyx":2443
  *         return result
  * 
  *     def clear(self):             # <<<<<<<<<<<<<<
@@ -72372,7 +72703,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("clear", 0);
 
-  /* "lxml/etree.pyx":2433
+  /* "lxml/etree.pyx":2444
  * 
  *     def clear(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72381,10 +72712,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
  */
   __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, 2433, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2444, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2434
+  /* "lxml/etree.pyx":2445
  *     def clear(self):
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node = self._element._c_node             # <<<<<<<<<<<<<<
@@ -72394,7 +72725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
   __pyx_t_3 = __pyx_v_self->_element->_c_node;
   __pyx_v_c_node = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2435
+  /* "lxml/etree.pyx":2446
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node = self._element._c_node
  *         while c_node.properties is not NULL:             # <<<<<<<<<<<<<<
@@ -72405,7 +72736,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
     __pyx_t_4 = ((__pyx_v_c_node->properties != NULL) != 0);
     if (!__pyx_t_4) break;
 
-    /* "lxml/etree.pyx":2436
+    /* "lxml/etree.pyx":2447
  *         cdef xmlNode* c_node = self._element._c_node
  *         while c_node.properties is not NULL:
  *             tree.xmlRemoveProp(c_node.properties)             # <<<<<<<<<<<<<<
@@ -72415,7 +72746,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
     (void)(xmlRemoveProp(__pyx_v_c_node->properties));
   }
 
-  /* "lxml/etree.pyx":2432
+  /* "lxml/etree.pyx":2443
  *         return result
  * 
  *     def clear(self):             # <<<<<<<<<<<<<<
@@ -72436,7 +72767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_10clear(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2439
+/* "lxml/etree.pyx":2450
  * 
  *     # ACCESSORS
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -72465,7 +72796,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/etree.pyx":2440
+  /* "lxml/etree.pyx":2451
  *     # ACCESSORS
  *     def __repr__(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72474,10 +72805,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
  */
   __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, 2440, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2451, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2441
+  /* "lxml/etree.pyx":2452
  *     def __repr__(self):
  *         _assertValidNode(self._element)
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))             # <<<<<<<<<<<<<<
@@ -72485,19 +72816,19 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
  *     def __copy__(self):
  */
   __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, 2441, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2441, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2441, __pyx_L1_error)
+  __pyx_t_1 = PyObject_Repr(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2452, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2439
+  /* "lxml/etree.pyx":2450
  * 
  *     # ACCESSORS
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -72517,7 +72848,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_12__repr__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2443
+/* "lxml/etree.pyx":2454
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
@@ -72547,7 +72878,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__copy__", 0);
 
-  /* "lxml/etree.pyx":2444
+  /* "lxml/etree.pyx":2455
  * 
  *     def __copy__(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72556,10 +72887,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
  */
   __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, 2444, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2455, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2445
+  /* "lxml/etree.pyx":2456
  *     def __copy__(self):
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))             # <<<<<<<<<<<<<<
@@ -72567,16 +72898,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
  *     def __deepcopy__(self, memo):
  */
   __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, 2445, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2445, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2456, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2443
+  /* "lxml/etree.pyx":2454
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
@@ -72596,7 +72927,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_14__copy__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2447
+/* "lxml/etree.pyx":2458
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
@@ -72626,7 +72957,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__deepcopy__", 0);
 
-  /* "lxml/etree.pyx":2448
+  /* "lxml/etree.pyx":2459
  * 
  *     def __deepcopy__(self, memo):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72635,10 +72966,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
  */
   __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, 2448, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2459, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2449
+  /* "lxml/etree.pyx":2460
  *     def __deepcopy__(self, memo):
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))             # <<<<<<<<<<<<<<
@@ -72646,16 +72977,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
  *     def __getitem__(self, key):
  */
   __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, 2449, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2460, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2449, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2460, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2447
+  /* "lxml/etree.pyx":2458
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
@@ -72675,7 +73006,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_16__deepcopy__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2451
+/* "lxml/etree.pyx":2462
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
@@ -72707,7 +73038,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__getitem__", 0);
 
-  /* "lxml/etree.pyx":2452
+  /* "lxml/etree.pyx":2463
  * 
  *     def __getitem__(self, key):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72716,10 +73047,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  */
   __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, 2452, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2463, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2453
+  /* "lxml/etree.pyx":2464
  *     def __getitem__(self, key):
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)             # <<<<<<<<<<<<<<
@@ -72728,13 +73059,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  */
   __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, 2453, __pyx_L1_error)
+  __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, 2464, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_result = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":2454
+  /* "lxml/etree.pyx":2465
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -72745,7 +73076,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   __pyx_t_5 = (__pyx_t_4 != 0);
   if (unlikely(__pyx_t_5)) {
 
-    /* "lxml/etree.pyx":2455
+    /* "lxml/etree.pyx":2466
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:
  *             raise KeyError, key             # <<<<<<<<<<<<<<
@@ -72753,9 +73084,9 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  * 
  */
     __Pyx_Raise(__pyx_builtin_KeyError, __pyx_v_key, 0, 0);
-    __PYX_ERR(0, 2455, __pyx_L1_error)
+    __PYX_ERR(0, 2466, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2454
+    /* "lxml/etree.pyx":2465
  *         _assertValidNode(self._element)
  *         result = _getAttributeValue(self._element, key, None)
  *         if result is None:             # <<<<<<<<<<<<<<
@@ -72764,7 +73095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
  */
   }
 
-  /* "lxml/etree.pyx":2456
+  /* "lxml/etree.pyx":2467
  *         if result is None:
  *             raise KeyError, key
  *         return result             # <<<<<<<<<<<<<<
@@ -72776,7 +73107,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2451
+  /* "lxml/etree.pyx":2462
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __getitem__(self, key):             # <<<<<<<<<<<<<<
@@ -72797,7 +73128,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_18__getitem__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2458
+/* "lxml/etree.pyx":2469
  *         return result
  * 
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -72828,7 +73159,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__bool__", 0);
 
-  /* "lxml/etree.pyx":2459
+  /* "lxml/etree.pyx":2470
  * 
  *     def __bool__(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72837,10 +73168,10 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  */
   __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, 2459, __pyx_L1_error)
+  __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)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2460
+  /* "lxml/etree.pyx":2471
  *     def __bool__(self):
  *         _assertValidNode(self._element)
  *         cdef xmlAttr* c_attr = self._element._c_node.properties             # <<<<<<<<<<<<<<
@@ -72850,7 +73181,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
   __pyx_t_3 = __pyx_v_self->_element->_c_node->properties;
   __pyx_v_c_attr = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2461
+  /* "lxml/etree.pyx":2472
  *         _assertValidNode(self._element)
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         while c_attr is not NULL:             # <<<<<<<<<<<<<<
@@ -72861,7 +73192,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
     __pyx_t_4 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_4) break;
 
-    /* "lxml/etree.pyx":2462
+    /* "lxml/etree.pyx":2473
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
@@ -72871,7 +73202,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
     __pyx_t_4 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_4) {
 
-      /* "lxml/etree.pyx":2463
+      /* "lxml/etree.pyx":2474
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 return 1             # <<<<<<<<<<<<<<
@@ -72881,7 +73212,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "lxml/etree.pyx":2462
+      /* "lxml/etree.pyx":2473
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
@@ -72890,7 +73221,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
  */
     }
 
-    /* "lxml/etree.pyx":2464
+    /* "lxml/etree.pyx":2475
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 return 1
  *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
@@ -72901,7 +73232,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
     __pyx_v_c_attr = __pyx_t_3;
   }
 
-  /* "lxml/etree.pyx":2465
+  /* "lxml/etree.pyx":2476
  *                 return 1
  *             c_attr = c_attr.next
  *         return 0             # <<<<<<<<<<<<<<
@@ -72911,7 +73242,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2458
+  /* "lxml/etree.pyx":2469
  *         return result
  * 
  *     def __bool__(self):             # <<<<<<<<<<<<<<
@@ -72929,7 +73260,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_20__bool__(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2467
+/* "lxml/etree.pyx":2478
  *         return 0
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -72961,7 +73292,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__len__", 0);
 
-  /* "lxml/etree.pyx":2468
+  /* "lxml/etree.pyx":2479
  * 
  *     def __len__(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -72970,10 +73301,10 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  */
   __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, 2468, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2479, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2469
+  /* "lxml/etree.pyx":2480
  *     def __len__(self):
  *         _assertValidNode(self._element)
  *         cdef xmlAttr* c_attr = self._element._c_node.properties             # <<<<<<<<<<<<<<
@@ -72983,7 +73314,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   __pyx_t_3 = __pyx_v_self->_element->_c_node->properties;
   __pyx_v_c_attr = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2470
+  /* "lxml/etree.pyx":2481
  *         _assertValidNode(self._element)
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         cdef Py_ssize_t c = 0             # <<<<<<<<<<<<<<
@@ -72992,7 +73323,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  */
   __pyx_v_c = 0;
 
-  /* "lxml/etree.pyx":2471
+  /* "lxml/etree.pyx":2482
  *         cdef xmlAttr* c_attr = self._element._c_node.properties
  *         cdef Py_ssize_t c = 0
  *         while c_attr is not NULL:             # <<<<<<<<<<<<<<
@@ -73003,7 +73334,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
     __pyx_t_4 = ((__pyx_v_c_attr != NULL) != 0);
     if (!__pyx_t_4) break;
 
-    /* "lxml/etree.pyx":2472
+    /* "lxml/etree.pyx":2483
  *         cdef Py_ssize_t c = 0
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
@@ -73013,7 +73344,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
     __pyx_t_4 = ((__pyx_v_c_attr->type == XML_ATTRIBUTE_NODE) != 0);
     if (__pyx_t_4) {
 
-      /* "lxml/etree.pyx":2473
+      /* "lxml/etree.pyx":2484
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 c += 1             # <<<<<<<<<<<<<<
@@ -73022,7 +73353,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  */
       __pyx_v_c = (__pyx_v_c + 1);
 
-      /* "lxml/etree.pyx":2472
+      /* "lxml/etree.pyx":2483
  *         cdef Py_ssize_t c = 0
  *         while c_attr is not NULL:
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
@@ -73031,7 +73362,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
  */
     }
 
-    /* "lxml/etree.pyx":2474
+    /* "lxml/etree.pyx":2485
  *             if c_attr.type == tree.XML_ATTRIBUTE_NODE:
  *                 c += 1
  *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
@@ -73042,7 +73373,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
     __pyx_v_c_attr = __pyx_t_3;
   }
 
-  /* "lxml/etree.pyx":2475
+  /* "lxml/etree.pyx":2486
  *                 c += 1
  *             c_attr = c_attr.next
  *         return c             # <<<<<<<<<<<<<<
@@ -73052,7 +73383,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   __pyx_r = __pyx_v_c;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2467
+  /* "lxml/etree.pyx":2478
  *         return 0
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
@@ -73070,7 +73401,7 @@ static Py_ssize_t __pyx_pf_4lxml_5etree_7_Attrib_22__len__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2477
+/* "lxml/etree.pyx":2488
  *         return c
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -73115,7 +73446,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_25get(PyObject *__pyx_v_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 2477, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "get") < 0)) __PYX_ERR(0, 2488, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -73131,7 +73462,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7_Attrib_25get(PyObject *__pyx_v_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2477, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("get", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2488, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Attrib.get", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -73152,7 +73483,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("get", 0);
 
-  /* "lxml/etree.pyx":2478
+  /* "lxml/etree.pyx":2489
  * 
  *     def get(self, key, default=None):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73161,10 +73492,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
  */
   __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, 2478, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2489, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2479
+  /* "lxml/etree.pyx":2490
  *     def get(self, key, default=None):
  *         _assertValidNode(self._element)
  *         return _getAttributeValue(self._element, key, default)             # <<<<<<<<<<<<<<
@@ -73174,14 +73505,14 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
   __Pyx_XDECREF(__pyx_r);
   __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, __pyx_v_default); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2479, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_4lxml_5etree__getAttributeValue(((struct LxmlElement *)__pyx_t_1), __pyx_v_key, __pyx_v_default); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2490, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2477
+  /* "lxml/etree.pyx":2488
  *         return c
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
@@ -73201,7 +73532,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_24get(struct __pyx_obj_4lxml_5et
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2481
+/* "lxml/etree.pyx":2492
  *         return _getAttributeValue(self._element, key, default)
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -73230,7 +73561,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("keys", 0);
 
-  /* "lxml/etree.pyx":2482
+  /* "lxml/etree.pyx":2493
  * 
  *     def keys(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73239,10 +73570,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
  */
   __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, 2482, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2493, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2483
+  /* "lxml/etree.pyx":2494
  *     def keys(self):
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 1)             # <<<<<<<<<<<<<<
@@ -73250,13 +73581,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
  *     def __iter__(self):
  */
   __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, 2483, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2494, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2481
+  /* "lxml/etree.pyx":2492
  *         return _getAttributeValue(self._element, key, default)
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
@@ -73275,7 +73606,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_26keys(struct __pyx_obj_4lxml_5e
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2485
+/* "lxml/etree.pyx":2496
  *         return _collectAttributes(self._element._c_node, 1)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -73304,7 +73635,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2486
+  /* "lxml/etree.pyx":2497
  * 
  *     def __iter__(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73313,10 +73644,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
  */
   __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, 2486, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2497, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2487
+  /* "lxml/etree.pyx":2498
  *     def __iter__(self):
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 1))             # <<<<<<<<<<<<<<
@@ -73324,16 +73655,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
  *     def iterkeys(self):
  */
   __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, 2487, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2498, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2487, __pyx_L1_error)
+  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2498, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2485
+  /* "lxml/etree.pyx":2496
  *         return _collectAttributes(self._element._c_node, 1)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -73353,7 +73684,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_28__iter__(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2489
+/* "lxml/etree.pyx":2500
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def iterkeys(self):             # <<<<<<<<<<<<<<
@@ -73383,7 +73714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("iterkeys", 0);
 
-  /* "lxml/etree.pyx":2490
+  /* "lxml/etree.pyx":2501
  * 
  *     def iterkeys(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73392,10 +73723,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
  */
   __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, 2490, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2501, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2491
+  /* "lxml/etree.pyx":2502
  *     def iterkeys(self):
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 1))             # <<<<<<<<<<<<<<
@@ -73403,16 +73734,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
  *     def values(self):
  */
   __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, 2491, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2491, __pyx_L1_error)
+  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2502, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2489
+  /* "lxml/etree.pyx":2500
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def iterkeys(self):             # <<<<<<<<<<<<<<
@@ -73432,7 +73763,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_30iterkeys(struct __pyx_obj_4lxm
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2493
+/* "lxml/etree.pyx":2504
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
@@ -73461,7 +73792,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("values", 0);
 
-  /* "lxml/etree.pyx":2494
+  /* "lxml/etree.pyx":2505
  * 
  *     def values(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73470,10 +73801,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
  */
   __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, 2494, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2505, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2495
+  /* "lxml/etree.pyx":2506
  *     def values(self):
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 2)             # <<<<<<<<<<<<<<
@@ -73481,13 +73812,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
  *     def itervalues(self):
  */
   __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, 2495, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2493
+  /* "lxml/etree.pyx":2504
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
@@ -73506,7 +73837,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_32values(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2497
+/* "lxml/etree.pyx":2508
  *         return _collectAttributes(self._element._c_node, 2)
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
@@ -73536,7 +73867,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("itervalues", 0);
 
-  /* "lxml/etree.pyx":2498
+  /* "lxml/etree.pyx":2509
  * 
  *     def itervalues(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73545,10 +73876,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
  */
   __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, 2498, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2509, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2499
+  /* "lxml/etree.pyx":2510
  *     def itervalues(self):
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 2))             # <<<<<<<<<<<<<<
@@ -73556,16 +73887,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
  *     def items(self):
  */
   __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, 2499, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2510, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2499, __pyx_L1_error)
+  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2510, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2497
+  /* "lxml/etree.pyx":2508
  *         return _collectAttributes(self._element._c_node, 2)
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
@@ -73585,7 +73916,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_34itervalues(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2501
+/* "lxml/etree.pyx":2512
  *         return iter(_collectAttributes(self._element._c_node, 2))
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
@@ -73614,7 +73945,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("items", 0);
 
-  /* "lxml/etree.pyx":2502
+  /* "lxml/etree.pyx":2513
  * 
  *     def items(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73623,10 +73954,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
  */
   __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, 2502, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2513, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2503
+  /* "lxml/etree.pyx":2514
  *     def items(self):
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 3)             # <<<<<<<<<<<<<<
@@ -73634,13 +73965,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
  *     def iteritems(self):
  */
   __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, 2503, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2514, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2501
+  /* "lxml/etree.pyx":2512
  *         return iter(_collectAttributes(self._element._c_node, 2))
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
@@ -73659,7 +73990,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_36items(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2505
+/* "lxml/etree.pyx":2516
  *         return _collectAttributes(self._element._c_node, 3)
  * 
  *     def iteritems(self):             # <<<<<<<<<<<<<<
@@ -73689,7 +74020,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("iteritems", 0);
 
-  /* "lxml/etree.pyx":2506
+  /* "lxml/etree.pyx":2517
  * 
  *     def iteritems(self):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73698,10 +74029,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
  */
   __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, 2506, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2517, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2507
+  /* "lxml/etree.pyx":2518
  *     def iteritems(self):
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 3))             # <<<<<<<<<<<<<<
@@ -73709,16 +74040,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
  *     def has_key(self, key):
  */
   __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, 2507, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__collectAttributes(__pyx_v_self->_element->_c_node, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2507, __pyx_L1_error)
+  __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2518, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2505
+  /* "lxml/etree.pyx":2516
  *         return _collectAttributes(self._element._c_node, 3)
  * 
  *     def iteritems(self):             # <<<<<<<<<<<<<<
@@ -73738,7 +74069,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_38iteritems(struct __pyx_obj_4lx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2509
+/* "lxml/etree.pyx":2520
  *         return iter(_collectAttributes(self._element._c_node, 3))
  * 
  *     def has_key(self, key):             # <<<<<<<<<<<<<<
@@ -73768,7 +74099,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("has_key", 0);
 
-  /* "lxml/etree.pyx":2510
+  /* "lxml/etree.pyx":2521
  * 
  *     def has_key(self, key):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73777,10 +74108,10 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
  */
   __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, 2510, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2521, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2511
+  /* "lxml/etree.pyx":2522
  *     def has_key(self, key):
  *         _assertValidNode(self._element)
  *         return key in self             # <<<<<<<<<<<<<<
@@ -73788,14 +74119,14 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
  *     def __contains__(self, key):
  */
   __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, 2511, __pyx_L1_error)
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2511, __pyx_L1_error)
+  __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_v_key, ((PyObject *)__pyx_v_self), Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2522, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2522, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2509
+  /* "lxml/etree.pyx":2520
  *         return iter(_collectAttributes(self._element._c_node, 3))
  * 
  *     def has_key(self, key):             # <<<<<<<<<<<<<<
@@ -73814,7 +74145,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_40has_key(struct __pyx_obj_4lxml
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2513
+/* "lxml/etree.pyx":2524
  *         return key in self
  * 
  *     def __contains__(self, key):             # <<<<<<<<<<<<<<
@@ -73851,7 +74182,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("__contains__", 0);
 
-  /* "lxml/etree.pyx":2514
+  /* "lxml/etree.pyx":2525
  * 
  *     def __contains__(self, key):
  *         _assertValidNode(self._element)             # <<<<<<<<<<<<<<
@@ -73860,17 +74191,17 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
  */
   __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, 2514, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__assertValidNode(((struct LxmlElement *)__pyx_t_1)); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 2525, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2516
+  /* "lxml/etree.pyx":2527
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node
  *         ns, tag = _getNsTag(key)             # <<<<<<<<<<<<<<
  *         c_node = self._element._c_node
  *         c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2516, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_key); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2527, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(__pyx_t_1 != Py_None)) {
     PyObject* sequence = __pyx_t_1;
@@ -73878,7 +74209,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
     if (unlikely(size != 2)) {
       if (size > 2) __Pyx_RaiseTooManyValuesError(2);
       else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-      __PYX_ERR(0, 2516, __pyx_L1_error)
+      __PYX_ERR(0, 2527, __pyx_L1_error)
     }
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
     __pyx_t_3 = PyTuple_GET_ITEM(sequence, 0); 
@@ -73886,21 +74217,21 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
     __Pyx_INCREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_t_4);
     #else
-    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2516, __pyx_L1_error)
+    __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2527, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2516, __pyx_L1_error)
+    __pyx_t_4 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2527, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   } else {
-    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 2516, __pyx_L1_error)
+    __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 2527, __pyx_L1_error)
   }
   __pyx_v_ns = __pyx_t_3;
   __pyx_t_3 = 0;
   __pyx_v_tag = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2517
+  /* "lxml/etree.pyx":2528
  *         cdef xmlNode* c_node
  *         ns, tag = _getNsTag(key)
  *         c_node = self._element._c_node             # <<<<<<<<<<<<<<
@@ -73910,7 +74241,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   __pyx_t_5 = __pyx_v_self->_element->_c_node;
   __pyx_v_c_node = __pyx_t_5;
 
-  /* "lxml/etree.pyx":2518
+  /* "lxml/etree.pyx":2529
  *         ns, tag = _getNsTag(key)
  *         c_node = self._element._c_node
  *         c_href = <const_xmlChar*>NULL if ns is None else _xcstr(ns)             # <<<<<<<<<<<<<<
@@ -73925,7 +74256,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   }
   __pyx_v_c_href = __pyx_t_6;
 
-  /* "lxml/etree.pyx":2519
+  /* "lxml/etree.pyx":2530
  *         c_node = self._element._c_node
  *         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             # <<<<<<<<<<<<<<
@@ -73940,7 +74271,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2513
+  /* "lxml/etree.pyx":2524
  *         return key in self
  * 
  *     def __contains__(self, key):             # <<<<<<<<<<<<<<
@@ -73962,7 +74293,7 @@ static int __pyx_pf_4lxml_5etree_7_Attrib_42__contains__(struct __pyx_obj_4lxml_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2521
+/* "lxml/etree.pyx":2532
  *         return 1 if tree.xmlHasNsProp(c_node, _xcstr(tag), c_href) else 0
  * 
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -73999,7 +74330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
   __Pyx_RefNannySetupContext("__richcmp__", 0);
   __Pyx_INCREF(__pyx_v_other);
 
-  /* "lxml/etree.pyx":2522
+  /* "lxml/etree.pyx":2533
  * 
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -74015,14 +74346,14 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":2523
+      /* "lxml/etree.pyx":2534
  *     def __richcmp__(self, other, int op):
  *         try:
  *             one = dict(self.items())             # <<<<<<<<<<<<<<
  *             if not isinstance(other, dict):
  *                 other = dict(other)
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_items); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2523, __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, 2534, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -74036,16 +74367,16 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2523, __pyx_L3_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2534, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2523, __pyx_L3_error)
+      __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2534, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_v_one = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "lxml/etree.pyx":2524
+      /* "lxml/etree.pyx":2535
  *         try:
  *             one = dict(self.items())
  *             if not isinstance(other, dict):             # <<<<<<<<<<<<<<
@@ -74056,19 +74387,19 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
       __pyx_t_8 = ((!(__pyx_t_7 != 0)) != 0);
       if (__pyx_t_8) {
 
-        /* "lxml/etree.pyx":2525
+        /* "lxml/etree.pyx":2536
  *             one = dict(self.items())
  *             if not isinstance(other, dict):
  *                 other = dict(other)             # <<<<<<<<<<<<<<
  *         except (TypeError, ValueError):
  *             return NotImplemented
  */
-        __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_other); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2525, __pyx_L3_error)
+        __pyx_t_5 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_other); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2536, __pyx_L3_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF_SET(__pyx_v_other, __pyx_t_5);
         __pyx_t_5 = 0;
 
-        /* "lxml/etree.pyx":2524
+        /* "lxml/etree.pyx":2535
  *         try:
  *             one = dict(self.items())
  *             if not isinstance(other, dict):             # <<<<<<<<<<<<<<
@@ -74077,7 +74408,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  */
       }
 
-      /* "lxml/etree.pyx":2522
+      /* "lxml/etree.pyx":2533
  * 
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -74094,7 +74425,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-    /* "lxml/etree.pyx":2526
+    /* "lxml/etree.pyx":2537
  *             if not isinstance(other, dict):
  *                 other = dict(other)
  *         except (TypeError, ValueError):             # <<<<<<<<<<<<<<
@@ -74104,12 +74435,12 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
     __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);
-      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 2526, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_5, &__pyx_t_4, &__pyx_t_6) < 0) __PYX_ERR(0, 2537, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_GOTREF(__pyx_t_6);
 
-      /* "lxml/etree.pyx":2527
+      /* "lxml/etree.pyx":2538
  *                 other = dict(other)
  *         except (TypeError, ValueError):
  *             return NotImplemented             # <<<<<<<<<<<<<<
@@ -74127,7 +74458,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
 
-    /* "lxml/etree.pyx":2522
+    /* "lxml/etree.pyx":2533
  * 
  *     def __richcmp__(self, other, int op):
  *         try:             # <<<<<<<<<<<<<<
@@ -74148,7 +74479,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
     __pyx_L8_try_end:;
   }
 
-  /* "lxml/etree.pyx":2528
+  /* "lxml/etree.pyx":2539
  *         except (TypeError, ValueError):
  *             return NotImplemented
  *         return python.PyObject_RichCompare(one, other, op)             # <<<<<<<<<<<<<<
@@ -74156,13 +74487,13 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
  * 
  */
   __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, 2528, __pyx_L1_error)
+  __pyx_t_6 = PyObject_RichCompare(__pyx_v_one, __pyx_v_other, __pyx_v_op); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2539, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_r = __pyx_t_6;
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2521
+  /* "lxml/etree.pyx":2532
  *         return 1 if tree.xmlHasNsProp(c_node, _xcstr(tag), c_href) else 0
  * 
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -74185,7 +74516,7 @@ static PyObject *__pyx_pf_4lxml_5etree_7_Attrib_44__richcmp__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2540
+/* "lxml/etree.pyx":2551
  *     cdef xmlAttr* _c_attr
  *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -74211,7 +74542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_o
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2541
+  /* "lxml/etree.pyx":2552
  *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -74223,7 +74554,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_o
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2540
+  /* "lxml/etree.pyx":2551
  *     cdef xmlAttr* _c_attr
  *     cdef int _keysvalues # 1 - keys, 2 - values, 3 - items (key, value)
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -74238,7 +74569,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator___iter__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2543
+/* "lxml/etree.pyx":2554
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -74271,7 +74602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
 
-  /* "lxml/etree.pyx":2545
+  /* "lxml/etree.pyx":2556
  *     def __next__(self):
  *         cdef xmlAttr* c_attr
  *         if self._node is None:             # <<<<<<<<<<<<<<
@@ -74282,7 +74613,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2546
+    /* "lxml/etree.pyx":2557
  *         cdef xmlAttr* c_attr
  *         if self._node is None:
  *             raise StopIteration             # <<<<<<<<<<<<<<
@@ -74290,9 +74621,9 @@ 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:
  */
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-    __PYX_ERR(0, 2546, __pyx_L1_error)
+    __PYX_ERR(0, 2557, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2545
+    /* "lxml/etree.pyx":2556
  *     def __next__(self):
  *         cdef xmlAttr* c_attr
  *         if self._node is None:             # <<<<<<<<<<<<<<
@@ -74301,7 +74632,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  */
   }
 
-  /* "lxml/etree.pyx":2547
+  /* "lxml/etree.pyx":2558
  *         if self._node is None:
  *             raise StopIteration
  *         c_attr = self._c_attr             # <<<<<<<<<<<<<<
@@ -74311,7 +74642,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   __pyx_t_3 = __pyx_v_self->_c_attr;
   __pyx_v_c_attr = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2548
+  /* "lxml/etree.pyx":2559
  *             raise StopIteration
  *         c_attr = self._c_attr
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:             # <<<<<<<<<<<<<<
@@ -74330,7 +74661,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     __pyx_L6_bool_binop_done:;
     if (!__pyx_t_2) break;
 
-    /* "lxml/etree.pyx":2549
+    /* "lxml/etree.pyx":2560
  *         c_attr = self._c_attr
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
  *             c_attr = c_attr.next             # <<<<<<<<<<<<<<
@@ -74341,7 +74672,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     __pyx_v_c_attr = __pyx_t_3;
   }
 
-  /* "lxml/etree.pyx":2550
+  /* "lxml/etree.pyx":2561
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
  *             c_attr = c_attr.next
  *         if c_attr is NULL:             # <<<<<<<<<<<<<<
@@ -74351,7 +74682,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   __pyx_t_2 = ((__pyx_v_c_attr == NULL) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2551
+    /* "lxml/etree.pyx":2562
  *             c_attr = c_attr.next
  *         if c_attr is NULL:
  *             self._node = None             # <<<<<<<<<<<<<<
@@ -74364,7 +74695,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_node));
     __pyx_v_self->_node = ((struct LxmlElement *)Py_None);
 
-    /* "lxml/etree.pyx":2552
+    /* "lxml/etree.pyx":2563
  *         if c_attr is NULL:
  *             self._node = None
  *             raise StopIteration             # <<<<<<<<<<<<<<
@@ -74372,9 +74703,9 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *         self._c_attr = c_attr.next
  */
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-    __PYX_ERR(0, 2552, __pyx_L1_error)
+    __PYX_ERR(0, 2563, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2550
+    /* "lxml/etree.pyx":2561
  *         while c_attr is not NULL and c_attr.type != tree.XML_ATTRIBUTE_NODE:
  *             c_attr = c_attr.next
  *         if c_attr is NULL:             # <<<<<<<<<<<<<<
@@ -74383,7 +74714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  */
   }
 
-  /* "lxml/etree.pyx":2554
+  /* "lxml/etree.pyx":2565
  *             raise StopIteration
  * 
  *         self._c_attr = c_attr.next             # <<<<<<<<<<<<<<
@@ -74393,7 +74724,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   __pyx_t_3 = __pyx_v_c_attr->next;
   __pyx_v_self->_c_attr = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2555
+  /* "lxml/etree.pyx":2566
  * 
  *         self._c_attr = c_attr.next
  *         if self._keysvalues == 1:             # <<<<<<<<<<<<<<
@@ -74403,7 +74734,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   switch (__pyx_v_self->_keysvalues) {
     case 1:
 
-    /* "lxml/etree.pyx":2556
+    /* "lxml/etree.pyx":2567
  *         self._c_attr = c_attr.next
  *         if self._keysvalues == 1:
  *             return _namespacedName(<xmlNode*>c_attr)             # <<<<<<<<<<<<<<
@@ -74411,13 +74742,13 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             return _attributeValue(self._node._c_node, c_attr)
  */
     __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, 2556, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2567, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2555
+    /* "lxml/etree.pyx":2566
  * 
  *         self._c_attr = c_attr.next
  *         if self._keysvalues == 1:             # <<<<<<<<<<<<<<
@@ -74427,7 +74758,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     break;
     case 2:
 
-    /* "lxml/etree.pyx":2558
+    /* "lxml/etree.pyx":2569
  *             return _namespacedName(<xmlNode*>c_attr)
  *         elif self._keysvalues == 2:
  *             return _attributeValue(self._node._c_node, c_attr)             # <<<<<<<<<<<<<<
@@ -74435,13 +74766,13 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  *             return (_namespacedName(<xmlNode*>c_attr),
  */
     __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, 2558, __pyx_L1_error)
+    __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, 2569, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2557
+    /* "lxml/etree.pyx":2568
  *         if self._keysvalues == 1:
  *             return _namespacedName(<xmlNode*>c_attr)
  *         elif self._keysvalues == 2:             # <<<<<<<<<<<<<<
@@ -74451,7 +74782,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     break;
     default:
 
-    /* "lxml/etree.pyx":2560
+    /* "lxml/etree.pyx":2571
  *             return _attributeValue(self._node._c_node, c_attr)
  *         else:
  *             return (_namespacedName(<xmlNode*>c_attr),             # <<<<<<<<<<<<<<
@@ -74459,27 +74790,27 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
  * 
  */
     __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, 2560, __pyx_L1_error)
+    __pyx_t_4 = __pyx_f_4lxml_5etree__namespacedName(((xmlNode *)__pyx_v_c_attr)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2571, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
 
-    /* "lxml/etree.pyx":2561
+    /* "lxml/etree.pyx":2572
  *         else:
  *             return (_namespacedName(<xmlNode*>c_attr),
  *                     _attributeValue(self._node._c_node, c_attr))             # <<<<<<<<<<<<<<
  * 
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
  */
-    __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, 2561, __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, 2572, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
 
-    /* "lxml/etree.pyx":2560
+    /* "lxml/etree.pyx":2571
  *             return _attributeValue(self._node._c_node, c_attr)
  *         else:
  *             return (_namespacedName(<xmlNode*>c_attr),             # <<<<<<<<<<<<<<
  *                     _attributeValue(self._node._c_node, c_attr))
  * 
  */
-    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2560, __pyx_L1_error)
+    __pyx_t_6 = PyTuple_New(2); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2571, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_GIVEREF(__pyx_t_4);
     PyTuple_SET_ITEM(__pyx_t_6, 0, __pyx_t_4);
@@ -74493,7 +74824,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
     break;
   }
 
-  /* "lxml/etree.pyx":2543
+  /* "lxml/etree.pyx":2554
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -74514,7 +74845,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_AttribIterator_2__next__(struct __pyx_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2563
+/* "lxml/etree.pyx":2574
  *                     _attributeValue(self._node._c_node, c_attr))
  * 
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):             # <<<<<<<<<<<<<<
@@ -74531,7 +74862,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   xmlAttr *__pyx_t_3;
   __Pyx_RefNannySetupContext("_attributeIteratorFactory", 0);
 
-  /* "lxml/etree.pyx":2565
+  /* "lxml/etree.pyx":2576
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
  *     cdef _AttribIterator attribs
  *     if element._c_node.properties is NULL:             # <<<<<<<<<<<<<<
@@ -74541,7 +74872,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   __pyx_t_1 = ((__pyx_v_element->_c_node->properties == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2566
+    /* "lxml/etree.pyx":2577
  *     cdef _AttribIterator attribs
  *     if element._c_node.properties is NULL:
  *         return ITER_EMPTY             # <<<<<<<<<<<<<<
@@ -74553,7 +74884,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
     __pyx_r = __pyx_v_4lxml_5etree_ITER_EMPTY;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2565
+    /* "lxml/etree.pyx":2576
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):
  *     cdef _AttribIterator attribs
  *     if element._c_node.properties is NULL:             # <<<<<<<<<<<<<<
@@ -74562,19 +74893,19 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  */
   }
 
-  /* "lxml/etree.pyx":2567
+  /* "lxml/etree.pyx":2578
  *     if element._c_node.properties is NULL:
  *         return ITER_EMPTY
  *     attribs = _AttribIterator()             # <<<<<<<<<<<<<<
  *     attribs._node = element
  *     attribs._c_attr = element._c_node.properties
  */
-  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AttribIterator)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2567, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__AttribIterator)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2578, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_attribs = ((struct __pyx_obj_4lxml_5etree__AttribIterator *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2568
+  /* "lxml/etree.pyx":2579
  *         return ITER_EMPTY
  *     attribs = _AttribIterator()
  *     attribs._node = element             # <<<<<<<<<<<<<<
@@ -74587,7 +74918,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   __Pyx_DECREF(((PyObject *)__pyx_v_attribs->_node));
   __pyx_v_attribs->_node = __pyx_v_element;
 
-  /* "lxml/etree.pyx":2569
+  /* "lxml/etree.pyx":2580
  *     attribs = _AttribIterator()
  *     attribs._node = element
  *     attribs._c_attr = element._c_node.properties             # <<<<<<<<<<<<<<
@@ -74597,7 +74928,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   __pyx_t_3 = __pyx_v_element->_c_node->properties;
   __pyx_v_attribs->_c_attr = __pyx_t_3;
 
-  /* "lxml/etree.pyx":2570
+  /* "lxml/etree.pyx":2581
  *     attribs._node = element
  *     attribs._c_attr = element._c_node.properties
  *     attribs._keysvalues = keysvalues             # <<<<<<<<<<<<<<
@@ -74606,7 +74937,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
  */
   __pyx_v_attribs->_keysvalues = __pyx_v_keysvalues;
 
-  /* "lxml/etree.pyx":2571
+  /* "lxml/etree.pyx":2582
  *     attribs._c_attr = element._c_node.properties
  *     attribs._keysvalues = keysvalues
  *     return attribs             # <<<<<<<<<<<<<<
@@ -74618,7 +74949,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   __pyx_r = ((PyObject *)__pyx_v_attribs);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2563
+  /* "lxml/etree.pyx":2574
  *                     _attributeValue(self._node._c_node, c_attr))
  * 
  * cdef object _attributeIteratorFactory(_Element element, int keysvalues):             # <<<<<<<<<<<<<<
@@ -74638,7 +74969,7 @@ static PyObject *__pyx_f_4lxml_5etree__attributeIteratorFactory(struct LxmlEleme
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2583
+/* "lxml/etree.pyx":2594
  *     cdef char* _href
  *     cdef char* _name
  *     cdef _initTagMatch(self, tag):             # <<<<<<<<<<<<<<
@@ -74654,7 +74985,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_initTagMatch", 0);
 
-  /* "lxml/etree.pyx":2584
+  /* "lxml/etree.pyx":2595
  *     cdef char* _name
  *     cdef _initTagMatch(self, tag):
  *         self._href = NULL             # <<<<<<<<<<<<<<
@@ -74663,7 +74994,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
   __pyx_v_self->_href = NULL;
 
-  /* "lxml/etree.pyx":2585
+  /* "lxml/etree.pyx":2596
  *     cdef _initTagMatch(self, tag):
  *         self._href = NULL
  *         self._name = NULL             # <<<<<<<<<<<<<<
@@ -74672,7 +75003,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
   __pyx_v_self->_name = NULL;
 
-  /* "lxml/etree.pyx":2586
+  /* "lxml/etree.pyx":2597
  *         self._href = NULL
  *         self._name = NULL
  *         if tag is None:             # <<<<<<<<<<<<<<
@@ -74683,7 +75014,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2587
+    /* "lxml/etree.pyx":2598
  *         self._name = NULL
  *         if tag is None:
  *             self._node_type = 0             # <<<<<<<<<<<<<<
@@ -74692,7 +75023,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     __pyx_v_self->_node_type = 0;
 
-    /* "lxml/etree.pyx":2586
+    /* "lxml/etree.pyx":2597
  *         self._href = NULL
  *         self._name = NULL
  *         if tag is None:             # <<<<<<<<<<<<<<
@@ -74702,21 +75033,21 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2588
+  /* "lxml/etree.pyx":2599
  *         if tag is None:
  *             self._node_type = 0
  *         elif tag is Comment:             # <<<<<<<<<<<<<<
  *             self._node_type = tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Comment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2588, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Comment); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2589
+    /* "lxml/etree.pyx":2600
  *             self._node_type = 0
  *         elif tag is Comment:
  *             self._node_type = tree.XML_COMMENT_NODE             # <<<<<<<<<<<<<<
@@ -74725,7 +75056,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     __pyx_v_self->_node_type = XML_COMMENT_NODE;
 
-    /* "lxml/etree.pyx":2588
+    /* "lxml/etree.pyx":2599
  *         if tag is None:
  *             self._node_type = 0
  *         elif tag is Comment:             # <<<<<<<<<<<<<<
@@ -74735,21 +75066,21 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2590
+  /* "lxml/etree.pyx":2601
  *         elif tag is Comment:
  *             self._node_type = tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
  *             self._node_type = tree.XML_PI_NODE
  *         elif tag is Entity:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2590, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2601, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = (__pyx_v_tag == __pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2591
+    /* "lxml/etree.pyx":2602
  *             self._node_type = tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  *             self._node_type = tree.XML_PI_NODE             # <<<<<<<<<<<<<<
@@ -74758,7 +75089,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     __pyx_v_self->_node_type = XML_PI_NODE;
 
-    /* "lxml/etree.pyx":2590
+    /* "lxml/etree.pyx":2601
  *         elif tag is Comment:
  *             self._node_type = tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
@@ -74768,21 +75099,21 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2592
+  /* "lxml/etree.pyx":2603
  *         elif tag is ProcessingInstruction:
  *             self._node_type = tree.XML_PI_NODE
  *         elif tag is Entity:             # <<<<<<<<<<<<<<
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Entity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2592, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Entity); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2603, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2593
+    /* "lxml/etree.pyx":2604
  *             self._node_type = tree.XML_PI_NODE
  *         elif tag is Entity:
  *             self._node_type = tree.XML_ENTITY_REF_NODE             # <<<<<<<<<<<<<<
@@ -74791,7 +75122,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     __pyx_v_self->_node_type = XML_ENTITY_REF_NODE;
 
-    /* "lxml/etree.pyx":2592
+    /* "lxml/etree.pyx":2603
  *         elif tag is ProcessingInstruction:
  *             self._node_type = tree.XML_PI_NODE
  *         elif tag is Entity:             # <<<<<<<<<<<<<<
@@ -74801,21 +75132,21 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2594
+  /* "lxml/etree.pyx":2605
  *         elif tag is Entity:
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:             # <<<<<<<<<<<<<<
  *             self._node_type = tree.XML_ELEMENT_NODE
  *         else:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2594, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_Element); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2605, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = (__pyx_v_tag == __pyx_t_3);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2595
+    /* "lxml/etree.pyx":2606
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  *             self._node_type = tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
@@ -74824,7 +75155,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     __pyx_v_self->_node_type = XML_ELEMENT_NODE;
 
-    /* "lxml/etree.pyx":2594
+    /* "lxml/etree.pyx":2605
  *         elif tag is Entity:
  *             self._node_type = tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:             # <<<<<<<<<<<<<<
@@ -74834,7 +75165,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2597
+  /* "lxml/etree.pyx":2608
  *             self._node_type = tree.XML_ELEMENT_NODE
  *         else:
  *             self._node_type = tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
@@ -74844,14 +75175,14 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   /*else*/ {
     __pyx_v_self->_node_type = XML_ELEMENT_NODE;
 
-    /* "lxml/etree.pyx":2598
+    /* "lxml/etree.pyx":2609
  *         else:
  *             self._node_type = tree.XML_ELEMENT_NODE
  *             self._pystrings = _getNsTag(tag)             # <<<<<<<<<<<<<<
  *             if self._pystrings[0] is not None:
  *                 self._href = _cstr(self._pystrings[0])
  */
-    __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2598, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2609, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_GIVEREF(__pyx_t_3);
     __Pyx_GOTREF(__pyx_v_self->_pystrings);
@@ -74859,33 +75190,33 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     __pyx_v_self->_pystrings = __pyx_t_3;
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":2599
+    /* "lxml/etree.pyx":2610
  *             self._node_type = tree.XML_ELEMENT_NODE
  *             self._pystrings = _getNsTag(tag)
  *             if self._pystrings[0] is not None:             # <<<<<<<<<<<<<<
  *                 self._href = _cstr(self._pystrings[0])
  *             self._name = _cstr(self._pystrings[1])
  */
-    __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, 2599, __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, 2610, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_2 = (__pyx_t_3 != Py_None);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":2600
+      /* "lxml/etree.pyx":2611
  *             self._pystrings = _getNsTag(tag)
  *             if self._pystrings[0] is not None:
  *                 self._href = _cstr(self._pystrings[0])             # <<<<<<<<<<<<<<
  *             self._name = _cstr(self._pystrings[1])
  *             if self._name[0] == c'*' and self._name[1] == c'\0':
  */
-      __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, 2600, __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, 2611, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_self->_href = PyBytes_AS_STRING(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":2599
+      /* "lxml/etree.pyx":2610
  *             self._node_type = tree.XML_ELEMENT_NODE
  *             self._pystrings = _getNsTag(tag)
  *             if self._pystrings[0] is not None:             # <<<<<<<<<<<<<<
@@ -74894,19 +75225,19 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
     }
 
-    /* "lxml/etree.pyx":2601
+    /* "lxml/etree.pyx":2612
  *             if self._pystrings[0] is not None:
  *                 self._href = _cstr(self._pystrings[0])
  *             self._name = _cstr(self._pystrings[1])             # <<<<<<<<<<<<<<
  *             if self._name[0] == c'*' and self._name[1] == c'\0':
  *                 self._name = NULL
  */
-    __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, 2601, __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, 2612, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_self->_name = PyBytes_AS_STRING(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":2602
+    /* "lxml/etree.pyx":2613
  *                 self._href = _cstr(self._pystrings[0])
  *             self._name = _cstr(self._pystrings[1])
  *             if self._name[0] == c'*' and self._name[1] == c'\0':             # <<<<<<<<<<<<<<
@@ -74924,7 +75255,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
     __pyx_L6_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":2603
+      /* "lxml/etree.pyx":2614
  *             self._name = _cstr(self._pystrings[1])
  *             if self._name[0] == c'*' and self._name[1] == c'\0':
  *                 self._name = NULL             # <<<<<<<<<<<<<<
@@ -74933,7 +75264,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
  */
       __pyx_v_self->_name = NULL;
 
-      /* "lxml/etree.pyx":2602
+      /* "lxml/etree.pyx":2613
  *                 self._href = _cstr(self._pystrings[0])
  *             self._name = _cstr(self._pystrings[1])
  *             if self._name[0] == c'*' and self._name[1] == c'\0':             # <<<<<<<<<<<<<<
@@ -74944,7 +75275,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2583
+  /* "lxml/etree.pyx":2594
  *     cdef char* _href
  *     cdef char* _name
  *     cdef _initTagMatch(self, tag):             # <<<<<<<<<<<<<<
@@ -74965,7 +75296,7 @@ static PyObject *__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch(struct
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2613
+/* "lxml/etree.pyx":2624
  *     cdef _Element _node
  *     cdef _node_to_node_function _next_element
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -74991,7 +75322,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2614
+  /* "lxml/etree.pyx":2625
  *     cdef _node_to_node_function _next_element
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -75003,7 +75334,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2613
+  /* "lxml/etree.pyx":2624
  *     cdef _Element _node
  *     cdef _node_to_node_function _next_element
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -75018,7 +75349,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator___iter__(struct LxmlEl
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2616
+/* "lxml/etree.pyx":2627
  *         return self
  * 
  *     cdef void _storeNext(self, _Element node):             # <<<<<<<<<<<<<<
@@ -75035,7 +75366,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_storeNext", 0);
 
-  /* "lxml/etree.pyx":2618
+  /* "lxml/etree.pyx":2629
  *     cdef void _storeNext(self, _Element node):
  *         cdef xmlNode* c_node
  *         c_node = self._next_element(node._c_node)             # <<<<<<<<<<<<<<
@@ -75044,7 +75375,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
  */
   __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_node->_c_node);
 
-  /* "lxml/etree.pyx":2619
+  /* "lxml/etree.pyx":2630
  *         cdef xmlNode* c_node
  *         c_node = self._next_element(node._c_node)
  *         while c_node is not NULL and \             # <<<<<<<<<<<<<<
@@ -75059,7 +75390,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
       goto __pyx_L5_bool_binop_done;
     }
 
-    /* "lxml/etree.pyx":2620
+    /* "lxml/etree.pyx":2631
  *         c_node = self._next_element(node._c_node)
  *         while c_node is not NULL and \
  *                   self._node_type != 0 and \             # <<<<<<<<<<<<<<
@@ -75073,7 +75404,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
       goto __pyx_L5_bool_binop_done;
     }
 
-    /* "lxml/etree.pyx":2621
+    /* "lxml/etree.pyx":2632
  *         while c_node is not NULL and \
  *                   self._node_type != 0 and \
  *                   (<tree.xmlElementType>self._node_type != c_node.type or             # <<<<<<<<<<<<<<
@@ -75087,7 +75418,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
       goto __pyx_L5_bool_binop_done;
     }
 
-    /* "lxml/etree.pyx":2622
+    /* "lxml/etree.pyx":2633
  *                   self._node_type != 0 and \
  *                   (<tree.xmlElementType>self._node_type != c_node.type or
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):             # <<<<<<<<<<<<<<
@@ -75099,7 +75430,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
     __pyx_L5_bool_binop_done:;
     if (!__pyx_t_1) break;
 
-    /* "lxml/etree.pyx":2623
+    /* "lxml/etree.pyx":2634
  *                   (<tree.xmlElementType>self._node_type != c_node.type or
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):
  *             c_node = self._next_element(c_node)             # <<<<<<<<<<<<<<
@@ -75109,7 +75440,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
     __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_c_node);
   }
 
-  /* "lxml/etree.pyx":2624
+  /* "lxml/etree.pyx":2635
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):
  *             c_node = self._next_element(c_node)
  *         if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -75119,7 +75450,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2625
+    /* "lxml/etree.pyx":2636
  *             c_node = self._next_element(c_node)
  *         if c_node is NULL:
  *             self._node = None             # <<<<<<<<<<<<<<
@@ -75132,7 +75463,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_node));
     __pyx_v_self->_node = ((struct LxmlElement *)Py_None);
 
-    /* "lxml/etree.pyx":2624
+    /* "lxml/etree.pyx":2635
  *                    not _tagMatches(c_node, <const_xmlChar*>self._href, <const_xmlChar*>self._name)):
  *             c_node = self._next_element(c_node)
  *         if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -75142,7 +75473,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
     goto __pyx_L9;
   }
 
-  /* "lxml/etree.pyx":2628
+  /* "lxml/etree.pyx":2639
  *         else:
  *             # Python ref:
  *             self._node = _elementFactory(node._doc, c_node)             # <<<<<<<<<<<<<<
@@ -75152,7 +75483,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   /*else*/ {
     __pyx_t_3 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_3);
-    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2628, __pyx_L1_error)
+    __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_3), __pyx_v_c_node)); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2639, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_GIVEREF(__pyx_t_4);
@@ -75163,7 +75494,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   }
   __pyx_L9:;
 
-  /* "lxml/etree.pyx":2616
+  /* "lxml/etree.pyx":2627
  *         return self
  * 
  *     cdef void _storeNext(self, _Element node):             # <<<<<<<<<<<<<<
@@ -75181,7 +75512,7 @@ static void __pyx_f_4lxml_5etree_16_ElementIterator__storeNext(struct LxmlElemen
   __Pyx_RefNannyFinishContext();
 }
 
-/* "lxml/etree.pyx":2630
+/* "lxml/etree.pyx":2641
  *             self._node = _elementFactory(node._doc, c_node)
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -75211,7 +75542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
 
-  /* "lxml/etree.pyx":2633
+  /* "lxml/etree.pyx":2644
  *         cdef xmlNode* c_node
  *         cdef _Element current_node
  *         if self._node is None:             # <<<<<<<<<<<<<<
@@ -75222,7 +75553,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":2634
+    /* "lxml/etree.pyx":2645
  *         cdef _Element current_node
  *         if self._node is None:
  *             raise StopIteration             # <<<<<<<<<<<<<<
@@ -75230,9 +75561,9 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  *         current_node = self._node
  */
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-    __PYX_ERR(0, 2634, __pyx_L1_error)
+    __PYX_ERR(0, 2645, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2633
+    /* "lxml/etree.pyx":2644
  *         cdef xmlNode* c_node
  *         cdef _Element current_node
  *         if self._node is None:             # <<<<<<<<<<<<<<
@@ -75241,7 +75572,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  */
   }
 
-  /* "lxml/etree.pyx":2636
+  /* "lxml/etree.pyx":2647
  *             raise StopIteration
  *         # Python ref:
  *         current_node = self._node             # <<<<<<<<<<<<<<
@@ -75253,7 +75584,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":2637
+  /* "lxml/etree.pyx":2648
  *         # Python ref:
  *         current_node = self._node
  *         self._storeNext(current_node)             # <<<<<<<<<<<<<<
@@ -75262,7 +75593,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
  */
   ((struct __pyx_vtabstruct_4lxml_5etree__ElementIterator *)__pyx_v_self->__pyx_base.__pyx_vtab)->_storeNext(__pyx_v_self, __pyx_v_current_node);
 
-  /* "lxml/etree.pyx":2638
+  /* "lxml/etree.pyx":2649
  *         current_node = self._node
  *         self._storeNext(current_node)
  *         return current_node             # <<<<<<<<<<<<<<
@@ -75274,7 +75605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   __pyx_r = ((PyObject *)__pyx_v_current_node);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2630
+  /* "lxml/etree.pyx":2641
  *             self._node = _elementFactory(node._doc, c_node)
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -75294,7 +75625,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ElementIterator_2__next__(struct LxmlE
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2653
+/* "lxml/etree.pyx":2664
  *     cdef int _node_types
  * 
  *     def __cinit__(self, tags):             # <<<<<<<<<<<<<<
@@ -75328,7 +75659,7 @@ static int __pyx_pw_4lxml_5etree_16_MultiTagMatcher_1__cinit__(PyObject *__pyx_v
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2653, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2664, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -75339,7 +75670,7 @@ static int __pyx_pw_4lxml_5etree_16_MultiTagMatcher_1__cinit__(PyObject *__pyx_v
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2653, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2664, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._MultiTagMatcher.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -75358,14 +75689,14 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2654
+  /* "lxml/etree.pyx":2665
  * 
  *     def __cinit__(self, tags):
  *         self._py_tags = []             # <<<<<<<<<<<<<<
  *         self.initTagMatch(tags)
  * 
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2654, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2665, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_py_tags);
@@ -75373,18 +75704,18 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
   __pyx_v_self->_py_tags = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2655
+  /* "lxml/etree.pyx":2666
  *     def __cinit__(self, tags):
  *         self._py_tags = []
  *         self.initTagMatch(tags)             # <<<<<<<<<<<<<<
  * 
  *     def __dealloc__(self):
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(__pyx_v_self, __pyx_v_tags); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2655, __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, 2666, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2653
+  /* "lxml/etree.pyx":2664
  *     cdef int _node_types
  * 
  *     def __cinit__(self, tags):             # <<<<<<<<<<<<<<
@@ -75404,7 +75735,7 @@ static int __pyx_pf_4lxml_5etree_16_MultiTagMatcher___cinit__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2657
+/* "lxml/etree.pyx":2668
  *         self.initTagMatch(tags)
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -75427,7 +75758,7 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__dealloc__", 0);
 
-  /* "lxml/etree.pyx":2658
+  /* "lxml/etree.pyx":2669
  * 
  *     def __dealloc__(self):
  *         self._clear()             # <<<<<<<<<<<<<<
@@ -75436,7 +75767,7 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
  */
   __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(__pyx_v_self);
 
-  /* "lxml/etree.pyx":2657
+  /* "lxml/etree.pyx":2668
  *         self.initTagMatch(tags)
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
@@ -75448,7 +75779,7 @@ static void __pyx_pf_4lxml_5etree_16_MultiTagMatcher_2__dealloc__(struct __pyx_o
   __Pyx_RefNannyFinishContext();
 }
 
-/* "lxml/etree.pyx":2660
+/* "lxml/etree.pyx":2671
  *         self._clear()
  * 
  *     cdef bint rejectsAll(self):             # <<<<<<<<<<<<<<
@@ -75463,7 +75794,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("rejectsAll", 0);
 
-  /* "lxml/etree.pyx":2661
+  /* "lxml/etree.pyx":2672
  * 
  *     cdef bint rejectsAll(self):
  *         return not self._tag_count and not self._node_types             # <<<<<<<<<<<<<<
@@ -75482,7 +75813,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
   __pyx_r = __pyx_t_1;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2660
+  /* "lxml/etree.pyx":2671
  *         self._clear()
  * 
  *     cdef bint rejectsAll(self):             # <<<<<<<<<<<<<<
@@ -75496,7 +75827,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2663
+/* "lxml/etree.pyx":2674
  *         return not self._tag_count and not self._node_types
  * 
  *     cdef bint rejectsAllAttributes(self):             # <<<<<<<<<<<<<<
@@ -75509,7 +75840,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("rejectsAllAttributes", 0);
 
-  /* "lxml/etree.pyx":2664
+  /* "lxml/etree.pyx":2675
  * 
  *     cdef bint rejectsAllAttributes(self):
  *         return not self._tag_count             # <<<<<<<<<<<<<<
@@ -75519,7 +75850,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
   __pyx_r = (!(__pyx_v_self->_tag_count != 0));
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2663
+  /* "lxml/etree.pyx":2674
  *         return not self._tag_count and not self._node_types
  * 
  *     cdef bint rejectsAllAttributes(self):             # <<<<<<<<<<<<<<
@@ -75533,7 +75864,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAllAttributes(struct _
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2666
+/* "lxml/etree.pyx":2677
  *         return not self._tag_count
  * 
  *     cdef bint matchesType(self, int node_type):             # <<<<<<<<<<<<<<
@@ -75548,7 +75879,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("matchesType", 0);
 
-  /* "lxml/etree.pyx":2667
+  /* "lxml/etree.pyx":2678
  * 
  *     cdef bint matchesType(self, int node_type):
  *         if node_type == tree.XML_ELEMENT_NODE and self._tag_count:             # <<<<<<<<<<<<<<
@@ -75566,7 +75897,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2668
+    /* "lxml/etree.pyx":2679
  *     cdef bint matchesType(self, int node_type):
  *         if node_type == tree.XML_ELEMENT_NODE and self._tag_count:
  *             return True             # <<<<<<<<<<<<<<
@@ -75576,7 +75907,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2667
+    /* "lxml/etree.pyx":2678
  * 
  *     cdef bint matchesType(self, int node_type):
  *         if node_type == tree.XML_ELEMENT_NODE and self._tag_count:             # <<<<<<<<<<<<<<
@@ -75585,7 +75916,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
  */
   }
 
-  /* "lxml/etree.pyx":2669
+  /* "lxml/etree.pyx":2680
  *         if node_type == tree.XML_ELEMENT_NODE and self._tag_count:
  *             return True
  *         return self._node_types & (1 << node_type)             # <<<<<<<<<<<<<<
@@ -75595,7 +75926,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
   __pyx_r = (__pyx_v_self->_node_types & (1 << __pyx_v_node_type));
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2666
+  /* "lxml/etree.pyx":2677
  *         return not self._tag_count
  * 
  *     cdef bint matchesType(self, int node_type):             # <<<<<<<<<<<<<<
@@ -75609,7 +75940,7 @@ static int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesType(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2671
+/* "lxml/etree.pyx":2682
  *         return self._node_types & (1 << node_type)
  * 
  *     cdef void _clear(self):             # <<<<<<<<<<<<<<
@@ -75627,7 +75958,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
   size_t __pyx_t_4;
   __Pyx_RefNannySetupContext("_clear", 0);
 
-  /* "lxml/etree.pyx":2673
+  /* "lxml/etree.pyx":2684
  *     cdef void _clear(self):
  *         cdef size_t i, count
  *         count = self._tag_count             # <<<<<<<<<<<<<<
@@ -75637,7 +75968,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
   __pyx_t_1 = __pyx_v_self->_tag_count;
   __pyx_v_count = __pyx_t_1;
 
-  /* "lxml/etree.pyx":2674
+  /* "lxml/etree.pyx":2685
  *         cdef size_t i, count
  *         count = self._tag_count
  *         self._tag_count = 0             # <<<<<<<<<<<<<<
@@ -75646,7 +75977,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  */
   __pyx_v_self->_tag_count = 0;
 
-  /* "lxml/etree.pyx":2675
+  /* "lxml/etree.pyx":2686
  *         count = self._tag_count
  *         self._tag_count = 0
  *         if self._cached_tags:             # <<<<<<<<<<<<<<
@@ -75656,7 +75987,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
   __pyx_t_2 = (__pyx_v_self->_cached_tags != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2676
+    /* "lxml/etree.pyx":2687
  *         self._tag_count = 0
  *         if self._cached_tags:
  *             for i in xrange(count):             # <<<<<<<<<<<<<<
@@ -75668,7 +75999,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
     for (__pyx_t_4 = 0; __pyx_t_4 < __pyx_t_3; __pyx_t_4+=1) {
       __pyx_v_i = __pyx_t_4;
 
-      /* "lxml/etree.pyx":2677
+      /* "lxml/etree.pyx":2688
  *         if self._cached_tags:
  *             for i in xrange(count):
  *                 cpython.ref.Py_XDECREF(self._cached_tags[i].href)             # <<<<<<<<<<<<<<
@@ -75678,7 +76009,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
       Py_XDECREF((__pyx_v_self->_cached_tags[__pyx_v_i]).href);
     }
 
-    /* "lxml/etree.pyx":2678
+    /* "lxml/etree.pyx":2689
  *             for i in xrange(count):
  *                 cpython.ref.Py_XDECREF(self._cached_tags[i].href)
  *             python.lxml_free(self._cached_tags)             # <<<<<<<<<<<<<<
@@ -75687,7 +76018,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  */
     lxml_free(__pyx_v_self->_cached_tags);
 
-    /* "lxml/etree.pyx":2679
+    /* "lxml/etree.pyx":2690
  *                 cpython.ref.Py_XDECREF(self._cached_tags[i].href)
  *             python.lxml_free(self._cached_tags)
  *             self._cached_tags = NULL             # <<<<<<<<<<<<<<
@@ -75696,7 +76027,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  */
     __pyx_v_self->_cached_tags = NULL;
 
-    /* "lxml/etree.pyx":2675
+    /* "lxml/etree.pyx":2686
  *         count = self._tag_count
  *         self._tag_count = 0
  *         if self._cached_tags:             # <<<<<<<<<<<<<<
@@ -75705,7 +76036,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
  */
   }
 
-  /* "lxml/etree.pyx":2671
+  /* "lxml/etree.pyx":2682
  *         return self._node_types & (1 << node_type)
  * 
  *     cdef void _clear(self):             # <<<<<<<<<<<<<<
@@ -75717,7 +76048,7 @@ static void __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(struct __pyx_obj_4lxm
   __Pyx_RefNannyFinishContext();
 }
 
-/* "lxml/etree.pyx":2681
+/* "lxml/etree.pyx":2692
  *             self._cached_tags = NULL
  * 
  *     cdef initTagMatch(self, tags):             # <<<<<<<<<<<<<<
@@ -75735,7 +76066,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("initTagMatch", 0);
 
-  /* "lxml/etree.pyx":2682
+  /* "lxml/etree.pyx":2693
  * 
  *     cdef initTagMatch(self, tags):
  *         self._cached_doc = None             # <<<<<<<<<<<<<<
@@ -75748,7 +76079,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_cached_doc));
   __pyx_v_self->_cached_doc = ((struct LxmlDocument *)Py_None);
 
-  /* "lxml/etree.pyx":2683
+  /* "lxml/etree.pyx":2694
  *     cdef initTagMatch(self, tags):
  *         self._cached_doc = None
  *         del self._py_tags[:]             # <<<<<<<<<<<<<<
@@ -75757,11 +76088,11 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  */
   if (unlikely(__pyx_v_self->_py_tags == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 2683, __pyx_L1_error)
+    __PYX_ERR(0, 2694, __pyx_L1_error)
   }
-  if (__Pyx_PyObject_DelSlice(__pyx_v_self->_py_tags, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 2683, __pyx_L1_error)
+  if (__Pyx_PyObject_DelSlice(__pyx_v_self->_py_tags, 0, 0, NULL, NULL, NULL, 0, 0, 1) < 0) __PYX_ERR(0, 2694, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2684
+  /* "lxml/etree.pyx":2695
  *         self._cached_doc = None
  *         del self._py_tags[:]
  *         self._clear()             # <<<<<<<<<<<<<<
@@ -75770,7 +76101,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  */
   __pyx_f_4lxml_5etree_16_MultiTagMatcher__clear(__pyx_v_self);
 
-  /* "lxml/etree.pyx":2685
+  /* "lxml/etree.pyx":2696
  *         del self._py_tags[:]
  *         self._clear()
  *         if tags is None or tags == ():             # <<<<<<<<<<<<<<
@@ -75784,14 +76115,14 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
     __pyx_t_1 = __pyx_t_3;
     goto __pyx_L4_bool_binop_done;
   }
-  __pyx_t_4 = PyObject_RichCompare(__pyx_v_tags, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2685, __pyx_L1_error)
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2685, __pyx_L1_error)
+  __pyx_t_4 = PyObject_RichCompare(__pyx_v_tags, __pyx_empty_tuple, Py_EQ); __Pyx_XGOTREF(__pyx_t_4); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2696, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2696, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_1 = __pyx_t_3;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2687
+    /* "lxml/etree.pyx":2698
  *         if tags is None or tags == ():
  *             # no selection in tags argument => match anything
  *             self._node_types = (             # <<<<<<<<<<<<<<
@@ -75800,7 +76131,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
  */
     __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":2685
+    /* "lxml/etree.pyx":2696
  *         del self._py_tags[:]
  *         self._clear()
  *         if tags is None or tags == ():             # <<<<<<<<<<<<<<
@@ -75810,7 +76141,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2693
+  /* "lxml/etree.pyx":2704
  *                 1 << tree.XML_ELEMENT_NODE)
  *         else:
  *             self._node_types = 0             # <<<<<<<<<<<<<<
@@ -75820,23 +76151,23 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   /*else*/ {
     __pyx_v_self->_node_types = 0;
 
-    /* "lxml/etree.pyx":2694
+    /* "lxml/etree.pyx":2705
  *         else:
  *             self._node_types = 0
  *             self._storeTags(tags, set())             # <<<<<<<<<<<<<<
  * 
  *     cdef _storeTags(self, tag, set seen):
  */
-    __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2694, __pyx_L1_error)
+    __pyx_t_4 = PySet_New(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2705, __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, 2694, __pyx_L1_error)
+    __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, 2705, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2681
+  /* "lxml/etree.pyx":2692
  *             self._cached_tags = NULL
  * 
  *     cdef initTagMatch(self, tags):             # <<<<<<<<<<<<<<
@@ -75858,7 +76189,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher_initTagMatch(struct __p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2696
+/* "lxml/etree.pyx":2707
  *             self._storeTags(tags, set())
  * 
  *     cdef _storeTags(self, tag, set seen):             # <<<<<<<<<<<<<<
@@ -75882,21 +76213,21 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_storeTags", 0);
 
-  /* "lxml/etree.pyx":2697
+  /* "lxml/etree.pyx":2708
  * 
  *     cdef _storeTags(self, tag, set seen):
  *         if tag is Comment:             # <<<<<<<<<<<<<<
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2697, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Comment); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2708, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2698
+    /* "lxml/etree.pyx":2709
  *     cdef _storeTags(self, tag, set seen):
  *         if tag is Comment:
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE             # <<<<<<<<<<<<<<
@@ -75905,7 +76236,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_COMMENT_NODE));
 
-    /* "lxml/etree.pyx":2697
+    /* "lxml/etree.pyx":2708
  * 
  *     cdef _storeTags(self, tag, set seen):
  *         if tag is Comment:             # <<<<<<<<<<<<<<
@@ -75915,21 +76246,21 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2699
+  /* "lxml/etree.pyx":2710
  *         if tag is Comment:
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
  *             self._node_types |= 1 << tree.XML_PI_NODE
  *         elif tag is Entity:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2699, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2710, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = (__pyx_v_tag == __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2700
+    /* "lxml/etree.pyx":2711
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:
  *             self._node_types |= 1 << tree.XML_PI_NODE             # <<<<<<<<<<<<<<
@@ -75938,7 +76269,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_PI_NODE));
 
-    /* "lxml/etree.pyx":2699
+    /* "lxml/etree.pyx":2710
  *         if tag is Comment:
  *             self._node_types |= 1 << tree.XML_COMMENT_NODE
  *         elif tag is ProcessingInstruction:             # <<<<<<<<<<<<<<
@@ -75948,21 +76279,21 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2701
+  /* "lxml/etree.pyx":2712
  *         elif tag is ProcessingInstruction:
  *             self._node_types |= 1 << tree.XML_PI_NODE
  *         elif tag is Entity:             # <<<<<<<<<<<<<<
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2701, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Entity); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2712, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_v_tag == __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2702
+    /* "lxml/etree.pyx":2713
  *             self._node_types |= 1 << tree.XML_PI_NODE
  *         elif tag is Entity:
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE             # <<<<<<<<<<<<<<
@@ -75971,7 +76302,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ENTITY_REF_NODE));
 
-    /* "lxml/etree.pyx":2701
+    /* "lxml/etree.pyx":2712
  *         elif tag is ProcessingInstruction:
  *             self._node_types |= 1 << tree.XML_PI_NODE
  *         elif tag is Entity:             # <<<<<<<<<<<<<<
@@ -75981,21 +76312,21 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2703
+  /* "lxml/etree.pyx":2714
  *         elif tag is Entity:
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:             # <<<<<<<<<<<<<<
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Element); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2703, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_Element); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2714, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = (__pyx_v_tag == __pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2704
+    /* "lxml/etree.pyx":2715
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
@@ -76004,7 +76335,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ELEMENT_NODE));
 
-    /* "lxml/etree.pyx":2703
+    /* "lxml/etree.pyx":2714
  *         elif tag is Entity:
  *             self._node_types |= 1 << tree.XML_ENTITY_REF_NODE
  *         elif tag is Element:             # <<<<<<<<<<<<<<
@@ -76014,7 +76345,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2705
+  /* "lxml/etree.pyx":2716
  *         elif tag is Element:
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):             # <<<<<<<<<<<<<<
@@ -76024,7 +76355,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   __pyx_t_2 = (_isString(__pyx_v_tag) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2706
+    /* "lxml/etree.pyx":2717
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):
  *             if tag in seen:             # <<<<<<<<<<<<<<
@@ -76033,13 +76364,13 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     if (unlikely(__pyx_v_seen == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 2706, __pyx_L1_error)
+      __PYX_ERR(0, 2717, __pyx_L1_error)
     }
-    __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_seen, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2706, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySet_ContainsTF(__pyx_v_tag, __pyx_v_seen, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2717, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/etree.pyx":2707
+      /* "lxml/etree.pyx":2718
  *         elif python._isString(tag):
  *             if tag in seen:
  *                 return             # <<<<<<<<<<<<<<
@@ -76050,7 +76381,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       __pyx_r = Py_None; __Pyx_INCREF(Py_None);
       goto __pyx_L0;
 
-      /* "lxml/etree.pyx":2706
+      /* "lxml/etree.pyx":2717
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):
  *             if tag in seen:             # <<<<<<<<<<<<<<
@@ -76059,7 +76390,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     }
 
-    /* "lxml/etree.pyx":2708
+    /* "lxml/etree.pyx":2719
  *             if tag in seen:
  *                 return
  *             seen.add(tag)             # <<<<<<<<<<<<<<
@@ -76068,11 +76399,11 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     if (unlikely(__pyx_v_seen == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "add");
-      __PYX_ERR(0, 2708, __pyx_L1_error)
+      __PYX_ERR(0, 2719, __pyx_L1_error)
     }
-    __pyx_t_4 = PySet_Add(__pyx_v_seen, __pyx_v_tag); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2708, __pyx_L1_error)
+    __pyx_t_4 = PySet_Add(__pyx_v_seen, __pyx_v_tag); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2719, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2709
+    /* "lxml/etree.pyx":2720
  *                 return
  *             seen.add(tag)
  *             if tag in ('*', '{*}*'):             # <<<<<<<<<<<<<<
@@ -76081,20 +76412,20 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
     __Pyx_INCREF(__pyx_v_tag);
     __pyx_t_1 = __pyx_v_tag;
-    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__40, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2709, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__40, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2720, __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__41, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2709, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_kp_s__41, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2720, __pyx_L1_error)
     __pyx_t_3 = __pyx_t_2;
     __pyx_L6_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/etree.pyx":2710
+      /* "lxml/etree.pyx":2721
  *             seen.add(tag)
  *             if tag in ('*', '{*}*'):
  *                 self._node_types |= 1 << tree.XML_ELEMENT_NODE             # <<<<<<<<<<<<<<
@@ -76103,7 +76434,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
       __pyx_v_self->_node_types = (__pyx_v_self->_node_types | (1 << XML_ELEMENT_NODE));
 
-      /* "lxml/etree.pyx":2709
+      /* "lxml/etree.pyx":2720
  *                 return
  *             seen.add(tag)
  *             if tag in ('*', '{*}*'):             # <<<<<<<<<<<<<<
@@ -76113,7 +76444,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       goto __pyx_L5;
     }
 
-    /* "lxml/etree.pyx":2712
+    /* "lxml/etree.pyx":2723
  *                 self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *             else:
  *                 href, name = _getNsTag(tag)             # <<<<<<<<<<<<<<
@@ -76121,7 +76452,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  *                     name = None
  */
     /*else*/ {
-      __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2712, __pyx_L1_error)
+      __pyx_t_1 = __pyx_f_4lxml_5etree__getNsTag(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2723, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (likely(__pyx_t_1 != Py_None)) {
         PyObject* sequence = __pyx_t_1;
@@ -76129,7 +76460,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          __PYX_ERR(0, 2712, __pyx_L1_error)
+          __PYX_ERR(0, 2723, __pyx_L1_error)
         }
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         __pyx_t_5 = PyTuple_GET_ITEM(sequence, 0); 
@@ -76137,31 +76468,31 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         __Pyx_INCREF(__pyx_t_5);
         __Pyx_INCREF(__pyx_t_6);
         #else
-        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2712, __pyx_L1_error)
+        __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2723, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2712, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2723, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       } else {
-        __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 2712, __pyx_L1_error)
+        __Pyx_RaiseNoneNotIterableError(); __PYX_ERR(0, 2723, __pyx_L1_error)
       }
       __pyx_v_href = __pyx_t_5;
       __pyx_t_5 = 0;
       __pyx_v_name = __pyx_t_6;
       __pyx_t_6 = 0;
 
-      /* "lxml/etree.pyx":2713
+      /* "lxml/etree.pyx":2724
  *             else:
  *                 href, name = _getNsTag(tag)
  *                 if name == b'*':             # <<<<<<<<<<<<<<
  *                     name = None
  *                 if href is None:
  */
-      __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_kp_b__40, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2713, __pyx_L1_error)
+      __pyx_t_2 = (__Pyx_PyBytes_Equals(__pyx_v_name, __pyx_kp_b__40, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2724, __pyx_L1_error)
       if (__pyx_t_2) {
 
-        /* "lxml/etree.pyx":2714
+        /* "lxml/etree.pyx":2725
  *                 href, name = _getNsTag(tag)
  *                 if name == b'*':
  *                     name = None             # <<<<<<<<<<<<<<
@@ -76171,7 +76502,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_name, Py_None);
 
-        /* "lxml/etree.pyx":2713
+        /* "lxml/etree.pyx":2724
  *             else:
  *                 href, name = _getNsTag(tag)
  *                 if name == b'*':             # <<<<<<<<<<<<<<
@@ -76180,7 +76511,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
       }
 
-      /* "lxml/etree.pyx":2715
+      /* "lxml/etree.pyx":2726
  *                 if name == b'*':
  *                     name = None
  *                 if href is None:             # <<<<<<<<<<<<<<
@@ -76191,7 +76522,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
 
-        /* "lxml/etree.pyx":2716
+        /* "lxml/etree.pyx":2727
  *                     name = None
  *                 if href is None:
  *                     href = b''  # no namespace             # <<<<<<<<<<<<<<
@@ -76201,7 +76532,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         __Pyx_INCREF(__pyx_kp_b__11);
         __Pyx_DECREF_SET(__pyx_v_href, __pyx_kp_b__11);
 
-        /* "lxml/etree.pyx":2715
+        /* "lxml/etree.pyx":2726
  *                 if name == b'*':
  *                     name = None
  *                 if href is None:             # <<<<<<<<<<<<<<
@@ -76211,17 +76542,17 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         goto __pyx_L9;
       }
 
-      /* "lxml/etree.pyx":2717
+      /* "lxml/etree.pyx":2728
  *                 if href is None:
  *                     href = b''  # no namespace
  *                 elif href == b'*':             # <<<<<<<<<<<<<<
  *                     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__40, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2717, __pyx_L1_error)
+      __pyx_t_3 = (__Pyx_PyBytes_Equals(__pyx_v_href, __pyx_kp_b__40, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 2728, __pyx_L1_error)
       if (__pyx_t_3) {
 
-        /* "lxml/etree.pyx":2718
+        /* "lxml/etree.pyx":2729
  *                     href = b''  # no namespace
  *                 elif href == b'*':
  *                     href = None  # wildcard: any namespace, including none             # <<<<<<<<<<<<<<
@@ -76231,7 +76562,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_href, Py_None);
 
-        /* "lxml/etree.pyx":2717
+        /* "lxml/etree.pyx":2728
  *                 if href is None:
  *                     href = b''  # no namespace
  *                 elif href == b'*':             # <<<<<<<<<<<<<<
@@ -76241,7 +76572,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       }
       __pyx_L9:;
 
-      /* "lxml/etree.pyx":2719
+      /* "lxml/etree.pyx":2730
  *                 elif href == b'*':
  *                     href = None  # wildcard: any namespace, including none
  *                 self._py_tags.append((href, name))             # <<<<<<<<<<<<<<
@@ -76250,9 +76581,9 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
  */
       if (unlikely(__pyx_v_self->_py_tags == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(0, 2719, __pyx_L1_error)
+        __PYX_ERR(0, 2730, __pyx_L1_error)
       }
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2719, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2730, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_href);
       __Pyx_GIVEREF(__pyx_v_href);
@@ -76260,12 +76591,12 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       __Pyx_INCREF(__pyx_v_name);
       __Pyx_GIVEREF(__pyx_v_name);
       PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_name);
-      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->_py_tags, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2719, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyList_Append(__pyx_v_self->_py_tags, __pyx_t_1); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 2730, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     }
     __pyx_L5:;
 
-    /* "lxml/etree.pyx":2705
+    /* "lxml/etree.pyx":2716
  *         elif tag is Element:
  *             self._node_types |= 1 << tree.XML_ELEMENT_NODE
  *         elif python._isString(tag):             # <<<<<<<<<<<<<<
@@ -76275,7 +76606,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2722
+  /* "lxml/etree.pyx":2733
  *         else:
  *             # support a sequence of tags
  *             for item in tag:             # <<<<<<<<<<<<<<
@@ -76287,26 +76618,26 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       __pyx_t_1 = __pyx_v_tag; __Pyx_INCREF(__pyx_t_1); __pyx_t_7 = 0;
       __pyx_t_8 = NULL;
     } else {
-      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2722, __pyx_L1_error)
+      __pyx_t_7 = -1; __pyx_t_1 = PyObject_GetIter(__pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2733, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2722, __pyx_L1_error)
+      __pyx_t_8 = Py_TYPE(__pyx_t_1)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 2733, __pyx_L1_error)
     }
     for (;;) {
       if (likely(!__pyx_t_8)) {
         if (likely(PyList_CheckExact(__pyx_t_1))) {
           if (__pyx_t_7 >= PyList_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2722, __pyx_L1_error)
+          __pyx_t_6 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2733, __pyx_L1_error)
           #else
-          __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2722, __pyx_L1_error)
+          __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2733, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           #endif
         } else {
           if (__pyx_t_7 >= PyTuple_GET_SIZE(__pyx_t_1)) break;
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2722, __pyx_L1_error)
+          __pyx_t_6 = PyTuple_GET_ITEM(__pyx_t_1, __pyx_t_7); __Pyx_INCREF(__pyx_t_6); __pyx_t_7++; if (unlikely(0 < 0)) __PYX_ERR(0, 2733, __pyx_L1_error)
           #else
-          __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2722, __pyx_L1_error)
+          __pyx_t_6 = PySequence_ITEM(__pyx_t_1, __pyx_t_7); __pyx_t_7++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2733, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           #endif
         }
@@ -76316,7 +76647,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
           PyObject* exc_type = PyErr_Occurred();
           if (exc_type) {
             if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-            else __PYX_ERR(0, 2722, __pyx_L1_error)
+            else __PYX_ERR(0, 2733, __pyx_L1_error)
           }
           break;
         }
@@ -76325,18 +76656,18 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
       __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "lxml/etree.pyx":2723
+      /* "lxml/etree.pyx":2734
  *             # support a sequence of tags
  *             for item in tag:
  *                 self._storeTags(item, seen)             # <<<<<<<<<<<<<<
  * 
  *     cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:
  */
-      __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, 2723, __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, 2734, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-      /* "lxml/etree.pyx":2722
+      /* "lxml/etree.pyx":2733
  *         else:
  *             # support a sequence of tags
  *             for item in tag:             # <<<<<<<<<<<<<<
@@ -76348,7 +76679,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2696
+  /* "lxml/etree.pyx":2707
  *             self._storeTags(tags, set())
  * 
  *     cdef _storeTags(self, tag, set seen):             # <<<<<<<<<<<<<<
@@ -76374,7 +76705,7 @@ static PyObject *__pyx_f_4lxml_5etree_16_MultiTagMatcher__storeTags(struct __pyx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2725
+/* "lxml/etree.pyx":2736
  *                 self._storeTags(item, seen)
  * 
  *     cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:             # <<<<<<<<<<<<<<
@@ -76399,7 +76730,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     }
   }
 
-  /* "lxml/etree.pyx":2729
+  /* "lxml/etree.pyx":2740
  *         Look up the tag names in the doc dict to enable string pointer comparisons.
  *         """
  *         cdef size_t dict_size = tree.xmlDictSize(doc._c_doc.dict)             # <<<<<<<<<<<<<<
@@ -76408,7 +76739,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   __pyx_v_dict_size = xmlDictSize(__pyx_v_doc->_c_doc->dict);
 
-  /* "lxml/etree.pyx":2730
+  /* "lxml/etree.pyx":2741
  *         """
  *         cdef size_t dict_size = tree.xmlDictSize(doc._c_doc.dict)
  *         if doc is self._cached_doc and dict_size == self._cached_size:             # <<<<<<<<<<<<<<
@@ -76427,7 +76758,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2732
+    /* "lxml/etree.pyx":2743
  *         if doc is self._cached_doc and dict_size == self._cached_size:
  *             # doc and dict didn't change => names already cached
  *             return 0             # <<<<<<<<<<<<<<
@@ -76437,7 +76768,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2730
+    /* "lxml/etree.pyx":2741
  *         """
  *         cdef size_t dict_size = tree.xmlDictSize(doc._c_doc.dict)
  *         if doc is self._cached_doc and dict_size == self._cached_size:             # <<<<<<<<<<<<<<
@@ -76446,7 +76777,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   }
 
-  /* "lxml/etree.pyx":2733
+  /* "lxml/etree.pyx":2744
  *             # doc and dict didn't change => names already cached
  *             return 0
  *         self._tag_count = 0             # <<<<<<<<<<<<<<
@@ -76455,7 +76786,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   __pyx_v_self->_tag_count = 0;
 
-  /* "lxml/etree.pyx":2734
+  /* "lxml/etree.pyx":2745
  *             return 0
  *         self._tag_count = 0
  *         if not self._py_tags:             # <<<<<<<<<<<<<<
@@ -76466,7 +76797,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __pyx_t_3 = ((!__pyx_t_1) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2735
+    /* "lxml/etree.pyx":2746
  *         self._tag_count = 0
  *         if not self._py_tags:
  *             self._cached_doc = doc             # <<<<<<<<<<<<<<
@@ -76479,7 +76810,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_cached_doc));
     __pyx_v_self->_cached_doc = __pyx_v_doc;
 
-    /* "lxml/etree.pyx":2736
+    /* "lxml/etree.pyx":2747
  *         if not self._py_tags:
  *             self._cached_doc = doc
  *             self._cached_size = dict_size             # <<<<<<<<<<<<<<
@@ -76488,7 +76819,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
     __pyx_v_self->_cached_size = __pyx_v_dict_size;
 
-    /* "lxml/etree.pyx":2737
+    /* "lxml/etree.pyx":2748
  *             self._cached_doc = doc
  *             self._cached_size = dict_size
  *             return 0             # <<<<<<<<<<<<<<
@@ -76498,7 +76829,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2734
+    /* "lxml/etree.pyx":2745
  *             return 0
  *         self._tag_count = 0
  *         if not self._py_tags:             # <<<<<<<<<<<<<<
@@ -76507,7 +76838,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   }
 
-  /* "lxml/etree.pyx":2738
+  /* "lxml/etree.pyx":2749
  *             self._cached_size = dict_size
  *             return 0
  *         if not self._cached_tags:             # <<<<<<<<<<<<<<
@@ -76517,7 +76848,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __pyx_t_3 = ((!(__pyx_v_self->_cached_tags != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2739
+    /* "lxml/etree.pyx":2750
  *             return 0
  *         if not self._cached_tags:
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))             # <<<<<<<<<<<<<<
@@ -76528,13 +76859,13 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     __Pyx_INCREF(__pyx_t_4);
     if (unlikely(__pyx_t_4 == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(0, 2739, __pyx_L1_error)
+      __PYX_ERR(0, 2750, __pyx_L1_error)
     }
-    __pyx_t_5 = PyList_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2739, __pyx_L1_error)
+    __pyx_t_5 = PyList_GET_SIZE(__pyx_t_4); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 2750, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_self->_cached_tags = ((struct __pyx_t_4lxml_5etree_qname *)lxml_malloc(__pyx_t_5, (sizeof(struct __pyx_t_4lxml_5etree_qname))));
 
-    /* "lxml/etree.pyx":2740
+    /* "lxml/etree.pyx":2751
  *         if not self._cached_tags:
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))
  *             if not self._cached_tags:             # <<<<<<<<<<<<<<
@@ -76544,7 +76875,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
     __pyx_t_3 = ((!(__pyx_v_self->_cached_tags != 0)) != 0);
     if (unlikely(__pyx_t_3)) {
 
-      /* "lxml/etree.pyx":2741
+      /* "lxml/etree.pyx":2752
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))
  *             if not self._cached_tags:
  *                 self._cached_doc = None             # <<<<<<<<<<<<<<
@@ -76557,16 +76888,16 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
       __Pyx_DECREF(((PyObject *)__pyx_v_self->_cached_doc));
       __pyx_v_self->_cached_doc = ((struct LxmlDocument *)Py_None);
 
-      /* "lxml/etree.pyx":2742
+      /* "lxml/etree.pyx":2753
  *             if not self._cached_tags:
  *                 self._cached_doc = None
  *                 raise MemoryError()             # <<<<<<<<<<<<<<
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  */
-      PyErr_NoMemory(); __PYX_ERR(0, 2742, __pyx_L1_error)
+      PyErr_NoMemory(); __PYX_ERR(0, 2753, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":2740
+      /* "lxml/etree.pyx":2751
  *         if not self._cached_tags:
  *             self._cached_tags = <qname*>python.lxml_malloc(len(self._py_tags), sizeof(qname))
  *             if not self._cached_tags:             # <<<<<<<<<<<<<<
@@ -76575,7 +76906,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
     }
 
-    /* "lxml/etree.pyx":2738
+    /* "lxml/etree.pyx":2749
  *             self._cached_size = dict_size
  *             return 0
  *         if not self._cached_tags:             # <<<<<<<<<<<<<<
@@ -76584,7 +76915,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   }
 
-  /* "lxml/etree.pyx":2744
+  /* "lxml/etree.pyx":2755
  *                 raise MemoryError()
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)             # <<<<<<<<<<<<<<
@@ -76594,18 +76925,18 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __pyx_t_4 = __pyx_v_self->_py_tags;
   __Pyx_INCREF(__pyx_t_4);
 
-  /* "lxml/etree.pyx":2743
+  /* "lxml/etree.pyx":2754
  *                 self._cached_doc = None
  *                 raise MemoryError()
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(             # <<<<<<<<<<<<<<
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  *         self._cached_doc = doc
  */
-  __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, 2743, __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, 2754, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_v_self->_tag_count = ((size_t)__pyx_t_5);
 
-  /* "lxml/etree.pyx":2745
+  /* "lxml/etree.pyx":2756
  *         self._tag_count = <size_t>_mapTagsToQnameMatchArray(
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  *         self._cached_doc = doc             # <<<<<<<<<<<<<<
@@ -76618,7 +76949,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_cached_doc));
   __pyx_v_self->_cached_doc = __pyx_v_doc;
 
-  /* "lxml/etree.pyx":2746
+  /* "lxml/etree.pyx":2757
  *             doc._c_doc, self._py_tags, self._cached_tags, force_into_dict)
  *         self._cached_doc = doc
  *         self._cached_size = dict_size             # <<<<<<<<<<<<<<
@@ -76627,7 +76958,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
  */
   __pyx_v_self->_cached_size = __pyx_v_dict_size;
 
-  /* "lxml/etree.pyx":2747
+  /* "lxml/etree.pyx":2758
  *         self._cached_doc = doc
  *         self._cached_size = dict_size
  *         return 0             # <<<<<<<<<<<<<<
@@ -76637,7 +76968,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2725
+  /* "lxml/etree.pyx":2736
  *                 self._storeTags(item, seen)
  * 
  *     cdef inline int cacheTags(self, _Document doc, bint force_into_dict=False) except -1:             # <<<<<<<<<<<<<<
@@ -76655,7 +76986,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_cacheTags(struc
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2749
+/* "lxml/etree.pyx":2760
  *         return 0
  * 
  *     cdef inline bint matches(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -76673,7 +77004,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_4;
   __Pyx_RefNannySetupContext("matches", 0);
 
-  /* "lxml/etree.pyx":2751
+  /* "lxml/etree.pyx":2762
  *     cdef inline bint matches(self, xmlNode* c_node):
  *         cdef qname* c_qname
  *         if self._node_types & (1 << c_node.type):             # <<<<<<<<<<<<<<
@@ -76683,7 +77014,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
   __pyx_t_1 = ((__pyx_v_self->_node_types & (1 << __pyx_v_c_node->type)) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2752
+    /* "lxml/etree.pyx":2763
  *         cdef qname* c_qname
  *         if self._node_types & (1 << c_node.type):
  *             return True             # <<<<<<<<<<<<<<
@@ -76693,7 +77024,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2751
+    /* "lxml/etree.pyx":2762
  *     cdef inline bint matches(self, xmlNode* c_node):
  *         cdef qname* c_qname
  *         if self._node_types & (1 << c_node.type):             # <<<<<<<<<<<<<<
@@ -76702,7 +77033,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  */
   }
 
-  /* "lxml/etree.pyx":2753
+  /* "lxml/etree.pyx":2764
  *         if self._node_types & (1 << c_node.type):
  *             return True
  *         elif c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -76712,7 +77043,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2754
+    /* "lxml/etree.pyx":2765
  *             return True
  *         elif c_node.type == tree.XML_ELEMENT_NODE:
  *             for c_qname in self._cached_tags[:self._tag_count]:             # <<<<<<<<<<<<<<
@@ -76724,7 +77055,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
       __pyx_t_2 = __pyx_t_4;
       __pyx_v_c_qname = __pyx_t_2;
 
-      /* "lxml/etree.pyx":2755
+      /* "lxml/etree.pyx":2766
  *         elif c_node.type == tree.XML_ELEMENT_NODE:
  *             for c_qname in self._cached_tags[:self._tag_count]:
  *                 if _tagMatchesExactly(c_node, c_qname):             # <<<<<<<<<<<<<<
@@ -76734,7 +77065,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
       __pyx_t_1 = (__pyx_f_4lxml_5etree__tagMatchesExactly(__pyx_v_c_node, __pyx_v_c_qname) != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/etree.pyx":2756
+        /* "lxml/etree.pyx":2767
  *             for c_qname in self._cached_tags[:self._tag_count]:
  *                 if _tagMatchesExactly(c_node, c_qname):
  *                     return True             # <<<<<<<<<<<<<<
@@ -76744,7 +77075,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
         __pyx_r = 1;
         goto __pyx_L0;
 
-        /* "lxml/etree.pyx":2755
+        /* "lxml/etree.pyx":2766
  *         elif c_node.type == tree.XML_ELEMENT_NODE:
  *             for c_qname in self._cached_tags[:self._tag_count]:
  *                 if _tagMatchesExactly(c_node, c_qname):             # <<<<<<<<<<<<<<
@@ -76754,7 +77085,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
       }
     }
 
-    /* "lxml/etree.pyx":2753
+    /* "lxml/etree.pyx":2764
  *         if self._node_types & (1 << c_node.type):
  *             return True
  *         elif c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -76763,7 +77094,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
  */
   }
 
-  /* "lxml/etree.pyx":2757
+  /* "lxml/etree.pyx":2768
  *                 if _tagMatchesExactly(c_node, c_qname):
  *                     return True
  *         return False             # <<<<<<<<<<<<<<
@@ -76773,7 +77104,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2749
+  /* "lxml/etree.pyx":2760
  *         return 0
  * 
  *     cdef inline bint matches(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -76787,7 +77118,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(struct
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2759
+/* "lxml/etree.pyx":2770
  *         return False
  * 
  *     cdef inline bint matchesNsTag(self, const_xmlChar* c_href,             # <<<<<<<<<<<<<<
@@ -76805,7 +77136,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
   struct __pyx_t_4lxml_5etree_qname *__pyx_t_4;
   __Pyx_RefNannySetupContext("matchesNsTag", 0);
 
-  /* "lxml/etree.pyx":2762
+  /* "lxml/etree.pyx":2773
  *                                   const_xmlChar* c_name):
  *         cdef qname* c_qname
  *         if self._node_types & (1 << tree.XML_ELEMENT_NODE):             # <<<<<<<<<<<<<<
@@ -76815,7 +77146,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
   __pyx_t_1 = ((__pyx_v_self->_node_types & (1 << XML_ELEMENT_NODE)) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2763
+    /* "lxml/etree.pyx":2774
  *         cdef qname* c_qname
  *         if self._node_types & (1 << tree.XML_ELEMENT_NODE):
  *             return True             # <<<<<<<<<<<<<<
@@ -76825,7 +77156,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2762
+    /* "lxml/etree.pyx":2773
  *                                   const_xmlChar* c_name):
  *         cdef qname* c_qname
  *         if self._node_types & (1 << tree.XML_ELEMENT_NODE):             # <<<<<<<<<<<<<<
@@ -76834,7 +77165,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
  */
   }
 
-  /* "lxml/etree.pyx":2764
+  /* "lxml/etree.pyx":2775
  *         if self._node_types & (1 << tree.XML_ELEMENT_NODE):
  *             return True
  *         for c_qname in self._cached_tags[:self._tag_count]:             # <<<<<<<<<<<<<<
@@ -76846,7 +77177,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
     __pyx_t_2 = __pyx_t_4;
     __pyx_v_c_qname = __pyx_t_2;
 
-    /* "lxml/etree.pyx":2765
+    /* "lxml/etree.pyx":2776
  *             return True
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):             # <<<<<<<<<<<<<<
@@ -76856,7 +77187,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
     __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) {
 
-      /* "lxml/etree.pyx":2766
+      /* "lxml/etree.pyx":2777
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):
  *                 return True             # <<<<<<<<<<<<<<
@@ -76866,7 +77197,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "lxml/etree.pyx":2765
+      /* "lxml/etree.pyx":2776
  *             return True
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):             # <<<<<<<<<<<<<<
@@ -76876,7 +77207,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
     }
   }
 
-  /* "lxml/etree.pyx":2767
+  /* "lxml/etree.pyx":2778
  *             if _nsTagMatchesExactly(c_href, c_name, c_qname):
  *                 return True
  *         return False             # <<<<<<<<<<<<<<
@@ -76886,7 +77217,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2759
+  /* "lxml/etree.pyx":2770
  *         return False
  * 
  *     cdef inline bint matchesNsTag(self, const_xmlChar* c_href,             # <<<<<<<<<<<<<<
@@ -76900,7 +77231,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag(st
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2769
+/* "lxml/etree.pyx":2780
  *         return False
  * 
  *     cdef inline bint matchesAttribute(self, xmlAttr* c_attr):             # <<<<<<<<<<<<<<
@@ -76918,7 +77249,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("matchesAttribute", 0);
 
-  /* "lxml/etree.pyx":2774
+  /* "lxml/etree.pyx":2785
  *         """
  *         cdef qname* c_qname
  *         for c_qname in self._cached_tags[:self._tag_count]:             # <<<<<<<<<<<<<<
@@ -76930,7 +77261,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
     __pyx_t_1 = __pyx_t_3;
     __pyx_v_c_qname = __pyx_t_1;
 
-    /* "lxml/etree.pyx":2775
+    /* "lxml/etree.pyx":2786
  *         cdef qname* c_qname
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _tagMatchesExactly(<xmlNode*>c_attr, c_qname):             # <<<<<<<<<<<<<<
@@ -76940,7 +77271,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
     __pyx_t_4 = (__pyx_f_4lxml_5etree__tagMatchesExactly(((xmlNode *)__pyx_v_c_attr), __pyx_v_c_qname) != 0);
     if (__pyx_t_4) {
 
-      /* "lxml/etree.pyx":2776
+      /* "lxml/etree.pyx":2787
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _tagMatchesExactly(<xmlNode*>c_attr, c_qname):
  *                 return True             # <<<<<<<<<<<<<<
@@ -76950,7 +77281,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
       __pyx_r = 1;
       goto __pyx_L0;
 
-      /* "lxml/etree.pyx":2775
+      /* "lxml/etree.pyx":2786
  *         cdef qname* c_qname
  *         for c_qname in self._cached_tags[:self._tag_count]:
  *             if _tagMatchesExactly(<xmlNode*>c_attr, c_qname):             # <<<<<<<<<<<<<<
@@ -76960,7 +77291,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
     }
   }
 
-  /* "lxml/etree.pyx":2777
+  /* "lxml/etree.pyx":2788
  *             if _tagMatchesExactly(<xmlNode*>c_attr, c_qname):
  *                 return True
  *         return False             # <<<<<<<<<<<<<<
@@ -76970,7 +77301,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2769
+  /* "lxml/etree.pyx":2780
  *         return False
  * 
  *     cdef inline bint matchesAttribute(self, xmlAttr* c_attr):             # <<<<<<<<<<<<<<
@@ -76984,7 +77315,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribut
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2785
+/* "lxml/etree.pyx":2796
  * 
  *     @cython.final
  *     cdef _initTagMatcher(self, tags):             # <<<<<<<<<<<<<<
@@ -76999,19 +77330,19 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_initTagMatcher", 0);
 
-  /* "lxml/etree.pyx":2786
+  /* "lxml/etree.pyx":2797
  *     @cython.final
  *     cdef _initTagMatcher(self, tags):
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tags)             # <<<<<<<<<<<<<<
  * 
  *     def __iter__(self):
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2786, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2797, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_tags);
   __Pyx_GIVEREF(__pyx_v_tags);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_tags);
-  __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_1, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2786, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_1, NULL)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2797, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_2));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_GIVEREF(((PyObject *)__pyx_t_2));
@@ -77020,7 +77351,7 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
   __pyx_v_self->_matcher = ((struct __pyx_obj_4lxml_5etree__MultiTagMatcher *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2785
+  /* "lxml/etree.pyx":2796
  * 
  *     @cython.final
  *     cdef _initTagMatcher(self, tags):             # <<<<<<<<<<<<<<
@@ -77042,7 +77373,7 @@ static PyObject *__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher(st
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2788
+/* "lxml/etree.pyx":2799
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tags)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -77068,7 +77399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2789
+  /* "lxml/etree.pyx":2800
  * 
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -77080,7 +77411,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2788
+  /* "lxml/etree.pyx":2799
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tags)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -77095,7 +77426,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator___iter__(struct _
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2792
+/* "lxml/etree.pyx":2803
  * 
  *     @cython.final
  *     cdef int _storeNext(self, _Element node) except -1:             # <<<<<<<<<<<<<<
@@ -77115,7 +77446,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("_storeNext", 0);
 
-  /* "lxml/etree.pyx":2793
+  /* "lxml/etree.pyx":2804
  *     @cython.final
  *     cdef int _storeNext(self, _Element node) except -1:
  *         self._matcher.cacheTags(node._doc)             # <<<<<<<<<<<<<<
@@ -77124,10 +77455,10 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  */
   __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, 2793, __pyx_L1_error)
+  __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, 2804, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2794
+  /* "lxml/etree.pyx":2805
  *     cdef int _storeNext(self, _Element node) except -1:
  *         self._matcher.cacheTags(node._doc)
  *         c_node = self._next_element(node._c_node)             # <<<<<<<<<<<<<<
@@ -77136,7 +77467,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
  */
   __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_node->_c_node);
 
-  /* "lxml/etree.pyx":2795
+  /* "lxml/etree.pyx":2806
  *         self._matcher.cacheTags(node._doc)
  *         c_node = self._next_element(node._c_node)
  *         while c_node is not NULL and not self._matcher.matches(c_node):             # <<<<<<<<<<<<<<
@@ -77155,7 +77486,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
     __pyx_L5_bool_binop_done:;
     if (!__pyx_t_3) break;
 
-    /* "lxml/etree.pyx":2796
+    /* "lxml/etree.pyx":2807
  *         c_node = self._next_element(node._c_node)
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  *             c_node = self._next_element(c_node)             # <<<<<<<<<<<<<<
@@ -77165,7 +77496,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
     __pyx_v_c_node = __pyx_v_self->_next_element(__pyx_v_c_node);
   }
 
-  /* "lxml/etree.pyx":2798
+  /* "lxml/etree.pyx":2809
  *             c_node = self._next_element(c_node)
  *         # 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             # <<<<<<<<<<<<<<
@@ -77175,7 +77506,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   if (((__pyx_v_c_node != NULL) != 0)) {
     __pyx_t_5 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_5);
-    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2798, __pyx_L1_error)
+    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2809, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_1 = __pyx_t_6;
@@ -77190,7 +77521,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   __pyx_v_self->_node = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2799
+  /* "lxml/etree.pyx":2810
  *         # 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
  *         return 0             # <<<<<<<<<<<<<<
@@ -77200,7 +77531,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2792
+  /* "lxml/etree.pyx":2803
  * 
  *     @cython.final
  *     cdef int _storeNext(self, _Element node) except -1:             # <<<<<<<<<<<<<<
@@ -77220,7 +77551,7 @@ static int __pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext(struct __pyx_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2801
+/* "lxml/etree.pyx":2812
  *         return 0
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -77251,7 +77582,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   int __pyx_t_4;
   __Pyx_RefNannySetupContext("__next__", 0);
 
-  /* "lxml/etree.pyx":2802
+  /* "lxml/etree.pyx":2813
  * 
  *     def __next__(self):
  *         cdef _Element current_node = self._node             # <<<<<<<<<<<<<<
@@ -77263,7 +77594,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2803
+  /* "lxml/etree.pyx":2814
  *     def __next__(self):
  *         cdef _Element current_node = self._node
  *         if current_node is None:             # <<<<<<<<<<<<<<
@@ -77274,7 +77605,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":2804
+    /* "lxml/etree.pyx":2815
  *         cdef _Element current_node = self._node
  *         if current_node is None:
  *             raise StopIteration             # <<<<<<<<<<<<<<
@@ -77282,9 +77613,9 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  *         return current_node
  */
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-    __PYX_ERR(0, 2804, __pyx_L1_error)
+    __PYX_ERR(0, 2815, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2803
+    /* "lxml/etree.pyx":2814
  *     def __next__(self):
  *         cdef _Element current_node = self._node
  *         if current_node is None:             # <<<<<<<<<<<<<<
@@ -77293,16 +77624,16 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
  */
   }
 
-  /* "lxml/etree.pyx":2805
+  /* "lxml/etree.pyx":2816
  *         if current_node is None:
  *             raise StopIteration
  *         self._storeNext(current_node)             # <<<<<<<<<<<<<<
  *         return current_node
  * 
  */
-  __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, 2805, __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, 2816, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2806
+  /* "lxml/etree.pyx":2817
  *             raise StopIteration
  *         self._storeNext(current_node)
  *         return current_node             # <<<<<<<<<<<<<<
@@ -77314,7 +77645,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   __pyx_r = ((PyObject *)__pyx_v_current_node);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2801
+  /* "lxml/etree.pyx":2812
  *         return 0
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -77334,7 +77665,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ElementMatchIterator_2__next__(struct
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2812
+/* "lxml/etree.pyx":2823
  *     Iterates over the children of an element.
  *     """
  *     def __cinit__(self, _Element node not None, tag=None, *, bint reversed=False):             # <<<<<<<<<<<<<<
@@ -77384,7 +77715,7 @@ static int __pyx_pw_4lxml_5etree_20ElementChildIterator_1__cinit__(PyObject *__p
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2812, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2823, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -77398,20 +77729,20 @@ static int __pyx_pw_4lxml_5etree_20ElementChildIterator_1__cinit__(PyObject *__p
     __pyx_v_node = ((struct LxmlElement *)values[0]);
     __pyx_v_tag = values[1];
     if (values[2]) {
-      __pyx_v_reversed = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reversed == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2812, __pyx_L3_error)
+      __pyx_v_reversed = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_reversed == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2823, __pyx_L3_error)
     } else {
       __pyx_v_reversed = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2812, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2823, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ElementChildIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2812, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2823, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(((struct __pyx_obj_4lxml_5etree_ElementChildIterator *)__pyx_v_self), __pyx_v_node, __pyx_v_tag, __pyx_v_reversed);
 
   /* function exit code */
@@ -77435,27 +77766,27 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2814
+  /* "lxml/etree.pyx":2825
  *     def __cinit__(self, _Element node not None, tag=None, *, bint reversed=False):
  *         cdef xmlNode* c_node
  *         _assertValidNode(node)             # <<<<<<<<<<<<<<
  *         self._initTagMatcher(tag)
  *         if reversed:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2814, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2825, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2815
+  /* "lxml/etree.pyx":2826
  *         cdef xmlNode* c_node
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)             # <<<<<<<<<<<<<<
  *         if reversed:
  *             c_node = _findChildBackwards(node._c_node, 0)
  */
-  __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, 2815, __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, 2826, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2816
+  /* "lxml/etree.pyx":2827
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)
  *         if reversed:             # <<<<<<<<<<<<<<
@@ -77465,7 +77796,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   __pyx_t_3 = (__pyx_v_reversed != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2817
+    /* "lxml/etree.pyx":2828
  *         self._initTagMatcher(tag)
  *         if reversed:
  *             c_node = _findChildBackwards(node._c_node, 0)             # <<<<<<<<<<<<<<
@@ -77474,7 +77805,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  */
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildBackwards(__pyx_v_node->_c_node, 0);
 
-    /* "lxml/etree.pyx":2818
+    /* "lxml/etree.pyx":2829
  *         if reversed:
  *             c_node = _findChildBackwards(node._c_node, 0)
  *             self._next_element = _previousElement             # <<<<<<<<<<<<<<
@@ -77483,7 +77814,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  */
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
 
-    /* "lxml/etree.pyx":2816
+    /* "lxml/etree.pyx":2827
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)
  *         if reversed:             # <<<<<<<<<<<<<<
@@ -77493,7 +77824,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2820
+  /* "lxml/etree.pyx":2831
  *             self._next_element = _previousElement
  *         else:
  *             c_node = _findChildForwards(node._c_node, 0)             # <<<<<<<<<<<<<<
@@ -77503,7 +77834,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   /*else*/ {
     __pyx_v_c_node = __pyx_f_4lxml_5etree__findChildForwards(__pyx_v_node->_c_node, 0);
 
-    /* "lxml/etree.pyx":2821
+    /* "lxml/etree.pyx":2832
  *         else:
  *             c_node = _findChildForwards(node._c_node, 0)
  *             self._next_element = _nextElement             # <<<<<<<<<<<<<<
@@ -77514,7 +77845,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2822
+  /* "lxml/etree.pyx":2833
  *             c_node = _findChildForwards(node._c_node, 0)
  *             self._next_element = _nextElement
  *         self._matcher.cacheTags(node._doc)             # <<<<<<<<<<<<<<
@@ -77523,10 +77854,10 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
  */
   __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, 2822, __pyx_L1_error)
+  __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, 2833, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2823
+  /* "lxml/etree.pyx":2834
  *             self._next_element = _nextElement
  *         self._matcher.cacheTags(node._doc)
  *         while c_node is not NULL and not self._matcher.matches(c_node):             # <<<<<<<<<<<<<<
@@ -77545,7 +77876,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
     __pyx_L6_bool_binop_done:;
     if (!__pyx_t_3) break;
 
-    /* "lxml/etree.pyx":2824
+    /* "lxml/etree.pyx":2835
  *         self._matcher.cacheTags(node._doc)
  *         while c_node is not NULL and not self._matcher.matches(c_node):
  *             c_node = self._next_element(c_node)             # <<<<<<<<<<<<<<
@@ -77555,7 +77886,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
     __pyx_v_c_node = __pyx_v_self->__pyx_base._next_element(__pyx_v_c_node);
   }
 
-  /* "lxml/etree.pyx":2826
+  /* "lxml/etree.pyx":2837
  *             c_node = self._next_element(c_node)
  *         # 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             # <<<<<<<<<<<<<<
@@ -77565,7 +77896,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   if (((__pyx_v_c_node != NULL) != 0)) {
     __pyx_t_5 = ((PyObject *)__pyx_v_node->_doc);
     __Pyx_INCREF(__pyx_t_5);
-    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2826, __pyx_L1_error)
+    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_5), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2837, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __pyx_t_2 = __pyx_t_6;
@@ -77580,7 +77911,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   __pyx_v_self->__pyx_base._node = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2812
+  /* "lxml/etree.pyx":2823
  *     Iterates over the children of an element.
  *     """
  *     def __cinit__(self, _Element node not None, tag=None, *, bint reversed=False):             # <<<<<<<<<<<<<<
@@ -77602,7 +77933,7 @@ static int __pyx_pf_4lxml_5etree_20ElementChildIterator___cinit__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2834
+/* "lxml/etree.pyx":2845
  *     You can pass the boolean keyword ``preceding`` to specify the direction.
  *     """
  *     def __cinit__(self, _Element node not None, tag=None, *, bint preceding=False):             # <<<<<<<<<<<<<<
@@ -77652,7 +77983,7 @@ static int __pyx_pw_4lxml_5etree_16SiblingsIterator_1__cinit__(PyObject *__pyx_v
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2834, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2845, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -77666,20 +77997,20 @@ static int __pyx_pw_4lxml_5etree_16SiblingsIterator_1__cinit__(PyObject *__pyx_v
     __pyx_v_node = ((struct LxmlElement *)values[0]);
     __pyx_v_tag = values[1];
     if (values[2]) {
-      __pyx_v_preceding = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_preceding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2834, __pyx_L3_error)
+      __pyx_v_preceding = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_preceding == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2845, __pyx_L3_error)
     } else {
       __pyx_v_preceding = ((int)0);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2834, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2845, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.SiblingsIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2834, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2845, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(((struct __pyx_obj_4lxml_5etree_SiblingsIterator *)__pyx_v_self), __pyx_v_node, __pyx_v_tag, __pyx_v_preceding);
 
   /* function exit code */
@@ -77699,27 +78030,27 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2835
+  /* "lxml/etree.pyx":2846
  *     """
  *     def __cinit__(self, _Element node not None, tag=None, *, bint preceding=False):
  *         _assertValidNode(node)             # <<<<<<<<<<<<<<
  *         self._initTagMatcher(tag)
  *         if preceding:
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2835, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2846, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2836
+  /* "lxml/etree.pyx":2847
  *     def __cinit__(self, _Element node not None, tag=None, *, bint preceding=False):
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)             # <<<<<<<<<<<<<<
  *         if preceding:
  *             self._next_element = _previousElement
  */
-  __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, 2836, __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, 2847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2837
+  /* "lxml/etree.pyx":2848
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)
  *         if preceding:             # <<<<<<<<<<<<<<
@@ -77729,7 +78060,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
   __pyx_t_3 = (__pyx_v_preceding != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2838
+    /* "lxml/etree.pyx":2849
  *         self._initTagMatcher(tag)
  *         if preceding:
  *             self._next_element = _previousElement             # <<<<<<<<<<<<<<
@@ -77738,7 +78069,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
  */
     __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__previousElement;
 
-    /* "lxml/etree.pyx":2837
+    /* "lxml/etree.pyx":2848
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)
  *         if preceding:             # <<<<<<<<<<<<<<
@@ -77748,7 +78079,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2840
+  /* "lxml/etree.pyx":2851
  *             self._next_element = _previousElement
  *         else:
  *             self._next_element = _nextElement             # <<<<<<<<<<<<<<
@@ -77760,16 +78091,16 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2841
+  /* "lxml/etree.pyx":2852
  *         else:
  *             self._next_element = _nextElement
  *         self._storeNext(node)             # <<<<<<<<<<<<<<
  * 
  * cdef class AncestorsIterator(_ElementMatchIterator):
  */
-  __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, 2841, __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, 2852, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2834
+  /* "lxml/etree.pyx":2845
  *     You can pass the boolean keyword ``preceding`` to specify the direction.
  *     """
  *     def __cinit__(self, _Element node not None, tag=None, *, bint preceding=False):             # <<<<<<<<<<<<<<
@@ -77789,7 +78120,7 @@ static int __pyx_pf_4lxml_5etree_16SiblingsIterator___cinit__(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2847
+/* "lxml/etree.pyx":2858
  *     Iterates over the ancestors of an element (from parent to parent).
  *     """
  *     def __cinit__(self, _Element node not None, tag=None):             # <<<<<<<<<<<<<<
@@ -77833,7 +78164,7 @@ static int __pyx_pw_4lxml_5etree_17AncestorsIterator_1__cinit__(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2847, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2858, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -77849,13 +78180,13 @@ static int __pyx_pw_4lxml_5etree_17AncestorsIterator_1__cinit__(PyObject *__pyx_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2847, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2858, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.AncestorsIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2847, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2858, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(((struct __pyx_obj_4lxml_5etree_AncestorsIterator *)__pyx_v_self), __pyx_v_node, __pyx_v_tag);
 
   /* function exit code */
@@ -77874,27 +78205,27 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2848
+  /* "lxml/etree.pyx":2859
  *     """
  *     def __cinit__(self, _Element node not None, tag=None):
  *         _assertValidNode(node)             # <<<<<<<<<<<<<<
  *         self._initTagMatcher(tag)
  *         self._next_element = _parentElement
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2848, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2859, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2849
+  /* "lxml/etree.pyx":2860
  *     def __cinit__(self, _Element node not None, tag=None):
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)             # <<<<<<<<<<<<<<
  *         self._next_element = _parentElement
  *         self._storeNext(node)
  */
-  __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, 2849, __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, 2860, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":2850
+  /* "lxml/etree.pyx":2861
  *         _assertValidNode(node)
  *         self._initTagMatcher(tag)
  *         self._next_element = _parentElement             # <<<<<<<<<<<<<<
@@ -77903,16 +78234,16 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
  */
   __pyx_v_self->__pyx_base._next_element = __pyx_f_4lxml_5etree__parentElement;
 
-  /* "lxml/etree.pyx":2851
+  /* "lxml/etree.pyx":2862
  *         self._initTagMatcher(tag)
  *         self._next_element = _parentElement
  *         self._storeNext(node)             # <<<<<<<<<<<<<<
  * 
  * cdef class ElementDepthFirstIterator:
  */
-  __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, 2851, __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, 2862, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2847
+  /* "lxml/etree.pyx":2858
  *     Iterates over the ancestors of an element (from parent to parent).
  *     """
  *     def __cinit__(self, _Element node not None, tag=None):             # <<<<<<<<<<<<<<
@@ -77932,7 +78263,7 @@ static int __pyx_pf_4lxml_5etree_17AncestorsIterator___cinit__(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2878
+/* "lxml/etree.pyx":2889
  *     cdef _Element _top_node
  *     cdef _MultiTagMatcher _matcher
  *     def __cinit__(self, _Element node not None, tag=None, *, bint inclusive=True):             # <<<<<<<<<<<<<<
@@ -77982,7 +78313,7 @@ static int __pyx_pw_4lxml_5etree_25ElementDepthFirstIterator_1__cinit__(PyObject
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2878, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2889, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -77996,20 +78327,20 @@ static int __pyx_pw_4lxml_5etree_25ElementDepthFirstIterator_1__cinit__(PyObject
     __pyx_v_node = ((struct LxmlElement *)values[0]);
     __pyx_v_tag = values[1];
     if (values[2]) {
-      __pyx_v_inclusive = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_inclusive == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2878, __pyx_L3_error)
+      __pyx_v_inclusive = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_inclusive == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2889, __pyx_L3_error)
     } else {
       __pyx_v_inclusive = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2878, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2889, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ElementDepthFirstIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2878, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_node), __pyx_ptype_4lxml_5etree__Element, 0, "node", 0))) __PYX_ERR(0, 2889, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(((struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *)__pyx_v_self), __pyx_v_node, __pyx_v_tag, __pyx_v_inclusive);
 
   /* function exit code */
@@ -78031,16 +78362,16 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2879
+  /* "lxml/etree.pyx":2890
  *     cdef _MultiTagMatcher _matcher
  *     def __cinit__(self, _Element node not None, tag=None, *, bint inclusive=True):
  *         _assertValidNode(node)             # <<<<<<<<<<<<<<
  *         self._top_node  = node
  *         self._next_node = node
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2879, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_node); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2890, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2880
+  /* "lxml/etree.pyx":2891
  *     def __cinit__(self, _Element node not None, tag=None, *, bint inclusive=True):
  *         _assertValidNode(node)
  *         self._top_node  = node             # <<<<<<<<<<<<<<
@@ -78053,7 +78384,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_top_node));
   __pyx_v_self->_top_node = __pyx_v_node;
 
-  /* "lxml/etree.pyx":2881
+  /* "lxml/etree.pyx":2892
  *         _assertValidNode(node)
  *         self._top_node  = node
  *         self._next_node = node             # <<<<<<<<<<<<<<
@@ -78066,19 +78397,19 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_next_node));
   __pyx_v_self->_next_node = __pyx_v_node;
 
-  /* "lxml/etree.pyx":2882
+  /* "lxml/etree.pyx":2893
  *         self._top_node  = node
  *         self._next_node = node
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)             # <<<<<<<<<<<<<<
  *         self._matcher.cacheTags(node._doc)
  *         if not inclusive or not self._matcher.matches(node._c_node):
  */
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2882, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 2893, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_tag);
   __Pyx_GIVEREF(__pyx_v_tag);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_tag);
-  __pyx_t_3 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_2, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2882, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_tp_new_4lxml_5etree__MultiTagMatcher(((PyTypeObject *)__pyx_ptype_4lxml_5etree__MultiTagMatcher), __pyx_t_2, NULL)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2893, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_3));
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_GIVEREF(((PyObject *)__pyx_t_3));
@@ -78087,7 +78418,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   __pyx_v_self->_matcher = ((struct __pyx_obj_4lxml_5etree__MultiTagMatcher *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":2883
+  /* "lxml/etree.pyx":2894
  *         self._next_node = node
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  *         self._matcher.cacheTags(node._doc)             # <<<<<<<<<<<<<<
@@ -78096,10 +78427,10 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  */
   __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, 2883, __pyx_L1_error)
+  __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, 2894, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":2884
+  /* "lxml/etree.pyx":2895
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  *         self._matcher.cacheTags(node._doc)
  *         if not inclusive or not self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
@@ -78117,18 +78448,18 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_4) {
 
-    /* "lxml/etree.pyx":2886
+    /* "lxml/etree.pyx":2897
  *         if not inclusive or not self._matcher.matches(node._c_node):
  *             # find start node (this cannot raise StopIteration, self._next_node != None)
  *             next(self)             # <<<<<<<<<<<<<<
  * 
  *     def __iter__(self):
  */
-    __pyx_t_3 = __Pyx_PyIter_Next(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2886, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyIter_Next(((PyObject *)__pyx_v_self)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2897, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":2884
+    /* "lxml/etree.pyx":2895
  *         self._matcher = _MultiTagMatcher.__new__(_MultiTagMatcher, tag)
  *         self._matcher.cacheTags(node._doc)
  *         if not inclusive or not self._matcher.matches(node._c_node):             # <<<<<<<<<<<<<<
@@ -78137,7 +78468,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
  */
   }
 
-  /* "lxml/etree.pyx":2878
+  /* "lxml/etree.pyx":2889
  *     cdef _Element _top_node
  *     cdef _MultiTagMatcher _matcher
  *     def __cinit__(self, _Element node not None, tag=None, *, bint inclusive=True):             # <<<<<<<<<<<<<<
@@ -78158,7 +78489,7 @@ static int __pyx_pf_4lxml_5etree_25ElementDepthFirstIterator___cinit__(struct __
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2888
+/* "lxml/etree.pyx":2899
  *             next(self)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -78184,7 +78515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(str
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2889
+  /* "lxml/etree.pyx":2900
  * 
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -78196,7 +78527,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(str
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2888
+  /* "lxml/etree.pyx":2899
  *             next(self)
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -78211,7 +78542,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_2__iter__(str
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2891
+/* "lxml/etree.pyx":2902
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -78245,7 +78576,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("__next__", 0);
 
-  /* "lxml/etree.pyx":2893
+  /* "lxml/etree.pyx":2904
  *     def __next__(self):
  *         cdef xmlNode* c_node
  *         cdef _Element current_node = self._next_node             # <<<<<<<<<<<<<<
@@ -78257,7 +78588,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_v_current_node = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2894
+  /* "lxml/etree.pyx":2905
  *         cdef xmlNode* c_node
  *         cdef _Element current_node = self._next_node
  *         if current_node is None:             # <<<<<<<<<<<<<<
@@ -78268,7 +78599,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":2895
+    /* "lxml/etree.pyx":2906
  *         cdef _Element current_node = self._next_node
  *         if current_node is None:
  *             raise StopIteration             # <<<<<<<<<<<<<<
@@ -78276,9 +78607,9 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  *         self._matcher.cacheTags(current_node._doc)
  */
     __Pyx_Raise(__pyx_builtin_StopIteration, 0, 0, 0);
-    __PYX_ERR(0, 2895, __pyx_L1_error)
+    __PYX_ERR(0, 2906, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":2894
+    /* "lxml/etree.pyx":2905
  *         cdef xmlNode* c_node
  *         cdef _Element current_node = self._next_node
  *         if current_node is None:             # <<<<<<<<<<<<<<
@@ -78287,7 +78618,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  */
   }
 
-  /* "lxml/etree.pyx":2896
+  /* "lxml/etree.pyx":2907
  *         if current_node is None:
  *             raise StopIteration
  *         c_node = current_node._c_node             # <<<<<<<<<<<<<<
@@ -78297,7 +78628,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_t_4 = __pyx_v_current_node->_c_node;
   __pyx_v_c_node = __pyx_t_4;
 
-  /* "lxml/etree.pyx":2897
+  /* "lxml/etree.pyx":2908
  *             raise StopIteration
  *         c_node = current_node._c_node
  *         self._matcher.cacheTags(current_node._doc)             # <<<<<<<<<<<<<<
@@ -78306,10 +78637,10 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  */
   __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, 2897, __pyx_L1_error)
+  __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, 2908, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":2898
+  /* "lxml/etree.pyx":2909
  *         c_node = current_node._c_node
  *         self._matcher.cacheTags(current_node._doc)
  *         if not self._matcher._tag_count:             # <<<<<<<<<<<<<<
@@ -78319,7 +78650,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_t_3 = ((!(__pyx_v_self->_matcher->_tag_count != 0)) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2901
+    /* "lxml/etree.pyx":2912
  *             # no tag name was found in the dict => not in document either
  *             # try to match by node type
  *             c_node = self._nextNodeAnyTag(c_node)             # <<<<<<<<<<<<<<
@@ -78328,7 +78659,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
  */
     __pyx_v_c_node = __pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag(__pyx_v_self, __pyx_v_c_node);
 
-    /* "lxml/etree.pyx":2898
+    /* "lxml/etree.pyx":2909
  *         c_node = current_node._c_node
  *         self._matcher.cacheTags(current_node._doc)
  *         if not self._matcher._tag_count:             # <<<<<<<<<<<<<<
@@ -78338,7 +78669,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
     goto __pyx_L4;
   }
 
-  /* "lxml/etree.pyx":2903
+  /* "lxml/etree.pyx":2914
  *             c_node = self._nextNodeAnyTag(c_node)
  *         else:
  *             c_node = self._nextNodeMatchTag(c_node)             # <<<<<<<<<<<<<<
@@ -78350,7 +78681,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   }
   __pyx_L4:;
 
-  /* "lxml/etree.pyx":2904
+  /* "lxml/etree.pyx":2915
  *         else:
  *             c_node = self._nextNodeMatchTag(c_node)
  *         if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -78360,7 +78691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_t_3 = ((__pyx_v_c_node == NULL) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/etree.pyx":2905
+    /* "lxml/etree.pyx":2916
  *             c_node = self._nextNodeMatchTag(c_node)
  *         if c_node is NULL:
  *             self._next_node = None             # <<<<<<<<<<<<<<
@@ -78373,7 +78704,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
     __Pyx_DECREF(((PyObject *)__pyx_v_self->_next_node));
     __pyx_v_self->_next_node = ((struct LxmlElement *)Py_None);
 
-    /* "lxml/etree.pyx":2904
+    /* "lxml/etree.pyx":2915
  *         else:
  *             c_node = self._nextNodeMatchTag(c_node)
  *         if c_node is NULL:             # <<<<<<<<<<<<<<
@@ -78383,7 +78714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
     goto __pyx_L5;
   }
 
-  /* "lxml/etree.pyx":2907
+  /* "lxml/etree.pyx":2918
  *             self._next_node = None
  *         else:
  *             self._next_node = _elementFactory(current_node._doc, c_node)             # <<<<<<<<<<<<<<
@@ -78393,7 +78724,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   /*else*/ {
     __pyx_t_1 = ((PyObject *)__pyx_v_current_node->_doc);
     __Pyx_INCREF(__pyx_t_1);
-    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2907, __pyx_L1_error)
+    __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(((struct LxmlDocument *)__pyx_t_1), __pyx_v_c_node)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2918, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_GIVEREF(__pyx_t_6);
@@ -78404,7 +78735,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   }
   __pyx_L5:;
 
-  /* "lxml/etree.pyx":2908
+  /* "lxml/etree.pyx":2919
  *         else:
  *             self._next_node = _elementFactory(current_node._doc, c_node)
  *         return current_node             # <<<<<<<<<<<<<<
@@ -78416,7 +78747,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   __pyx_r = ((PyObject *)__pyx_v_current_node);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2891
+  /* "lxml/etree.pyx":2902
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -78437,7 +78768,7 @@ static PyObject *__pyx_pf_4lxml_5etree_25ElementDepthFirstIterator_4__next__(str
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2911
+/* "lxml/etree.pyx":2922
  * 
  *     @cython.final
  *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -78453,7 +78784,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("_nextNodeAnyTag", 0);
 
-  /* "lxml/etree.pyx":2912
+  /* "lxml/etree.pyx":2923
  *     @cython.final
  *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
  *         cdef int node_types = self._matcher._node_types             # <<<<<<<<<<<<<<
@@ -78463,7 +78794,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   __pyx_t_1 = __pyx_v_self->_matcher->_node_types;
   __pyx_v_node_types = __pyx_t_1;
 
-  /* "lxml/etree.pyx":2913
+  /* "lxml/etree.pyx":2924
  *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
  *         cdef int node_types = self._matcher._node_types
  *         if not node_types:             # <<<<<<<<<<<<<<
@@ -78473,7 +78804,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   __pyx_t_2 = ((!(__pyx_v_node_types != 0)) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2914
+    /* "lxml/etree.pyx":2925
  *         cdef int node_types = self._matcher._node_types
  *         if not node_types:
  *             return NULL             # <<<<<<<<<<<<<<
@@ -78483,7 +78814,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
     __pyx_r = NULL;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2913
+    /* "lxml/etree.pyx":2924
  *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):
  *         cdef int node_types = self._matcher._node_types
  *         if not node_types:             # <<<<<<<<<<<<<<
@@ -78492,7 +78823,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  */
   }
 
-  /* "lxml/etree.pyx":2915
+  /* "lxml/etree.pyx":2926
  *         if not node_types:
  *             return NULL
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)             # <<<<<<<<<<<<<<
@@ -78501,7 +78832,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
 
-  /* "lxml/etree.pyx":2916
+  /* "lxml/etree.pyx":2927
  *             return NULL
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if node_types & (1 << c_node.type):             # <<<<<<<<<<<<<<
@@ -78511,7 +78842,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   __pyx_t_2 = ((__pyx_v_node_types & (1 << __pyx_v_c_node->type)) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2917
+    /* "lxml/etree.pyx":2928
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if node_types & (1 << c_node.type):
  *             return c_node             # <<<<<<<<<<<<<<
@@ -78521,7 +78852,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
     __pyx_r = __pyx_v_c_node;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2916
+    /* "lxml/etree.pyx":2927
  *             return NULL
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if node_types & (1 << c_node.type):             # <<<<<<<<<<<<<<
@@ -78530,7 +78861,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  */
   }
 
-  /* "lxml/etree.pyx":2918
+  /* "lxml/etree.pyx":2929
  *         if node_types & (1 << c_node.type):
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -78539,7 +78870,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "lxml/etree.pyx":2919
+  /* "lxml/etree.pyx":2930
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *         return NULL             # <<<<<<<<<<<<<<
@@ -78549,7 +78880,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   __pyx_r = NULL;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2911
+  /* "lxml/etree.pyx":2922
  * 
  *     @cython.final
  *     cdef xmlNode* _nextNodeAnyTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -78563,7 +78894,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2922
+/* "lxml/etree.pyx":2933
  * 
  *     @cython.final
  *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -78577,7 +78908,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("_nextNodeMatchTag", 0);
 
-  /* "lxml/etree.pyx":2923
+  /* "lxml/etree.pyx":2934
  *     @cython.final
  *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)             # <<<<<<<<<<<<<<
@@ -78586,7 +78917,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_self->_top_node->_c_node, __pyx_v_c_node, 0);
 
-  /* "lxml/etree.pyx":2924
+  /* "lxml/etree.pyx":2935
  *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if self._matcher.matches(c_node):             # <<<<<<<<<<<<<<
@@ -78596,7 +78927,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
   __pyx_t_1 = (__pyx_f_4lxml_5etree_16_MultiTagMatcher_matches(__pyx_v_self->_matcher, __pyx_v_c_node) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":2925
+    /* "lxml/etree.pyx":2936
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if self._matcher.matches(c_node):
  *             return c_node             # <<<<<<<<<<<<<<
@@ -78606,7 +78937,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
     __pyx_r = __pyx_v_c_node;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":2924
+    /* "lxml/etree.pyx":2935
  *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):
  *         tree.BEGIN_FOR_EACH_ELEMENT_FROM(self._top_node._c_node, c_node, 0)
  *         if self._matcher.matches(c_node):             # <<<<<<<<<<<<<<
@@ -78615,7 +78946,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  */
   }
 
-  /* "lxml/etree.pyx":2926
+  /* "lxml/etree.pyx":2937
  *         if self._matcher.matches(c_node):
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -78624,7 +78955,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "lxml/etree.pyx":2927
+  /* "lxml/etree.pyx":2938
  *             return c_node
  *         tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  *         return NULL             # <<<<<<<<<<<<<<
@@ -78634,7 +78965,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
   __pyx_r = NULL;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2922
+  /* "lxml/etree.pyx":2933
  * 
  *     @cython.final
  *     cdef xmlNode* _nextNodeMatchTag(self, xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -78648,7 +78979,7 @@ static xmlNode *__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchT
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2941
+/* "lxml/etree.pyx":2952
  *     cdef object _nextEvent
  *     cdef _Element _start_element
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):             # <<<<<<<<<<<<<<
@@ -78698,7 +79029,7 @@ static int __pyx_pw_4lxml_5etree_19ElementTextIterator_1__cinit__(PyObject *__py
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2941, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 2952, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -78712,20 +79043,20 @@ static int __pyx_pw_4lxml_5etree_19ElementTextIterator_1__cinit__(PyObject *__py
     __pyx_v_element = ((struct LxmlElement *)values[0]);
     __pyx_v_tag = values[1];
     if (values[2]) {
-      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2941, __pyx_L3_error)
+      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 2952, __pyx_L3_error)
     } else {
       __pyx_v_with_tail = ((int)1);
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2941, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2952, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ElementTextIterator.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return -1;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2941, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 0, "element", 0))) __PYX_ERR(0, 2952, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(((struct __pyx_obj_4lxml_5etree_ElementTextIterator *)__pyx_v_self), __pyx_v_element, __pyx_v_tag, __pyx_v_with_tail);
 
   /* function exit code */
@@ -78748,16 +79079,16 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":2942
+  /* "lxml/etree.pyx":2953
  *     cdef _Element _start_element
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):
  *         _assertValidNode(element)             # <<<<<<<<<<<<<<
  *         if with_tail:
  *             events = (u"start", u"end")
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2942, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__assertValidNode(__pyx_v_element); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 2953, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2943
+  /* "lxml/etree.pyx":2954
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):
  *         _assertValidNode(element)
  *         if with_tail:             # <<<<<<<<<<<<<<
@@ -78767,7 +79098,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   __pyx_t_2 = (__pyx_v_with_tail != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":2944
+    /* "lxml/etree.pyx":2955
  *         _assertValidNode(element)
  *         if with_tail:
  *             events = (u"start", u"end")             # <<<<<<<<<<<<<<
@@ -78777,7 +79108,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
     __Pyx_INCREF(__pyx_tuple__42);
     __pyx_v_events = __pyx_tuple__42;
 
-    /* "lxml/etree.pyx":2943
+    /* "lxml/etree.pyx":2954
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):
  *         _assertValidNode(element)
  *         if with_tail:             # <<<<<<<<<<<<<<
@@ -78787,7 +79118,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":2946
+  /* "lxml/etree.pyx":2957
  *             events = (u"start", u"end")
  *         else:
  *             events = (u"start",)             # <<<<<<<<<<<<<<
@@ -78800,7 +79131,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":2947
+  /* "lxml/etree.pyx":2958
  *         else:
  *             events = (u"start",)
  *         self._start_element = element             # <<<<<<<<<<<<<<
@@ -78813,27 +79144,27 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   __Pyx_DECREF(((PyObject *)__pyx_v_self->_start_element));
   __pyx_v_self->_start_element = __pyx_v_element;
 
-  /* "lxml/etree.pyx":2948
+  /* "lxml/etree.pyx":2959
  *             events = (u"start",)
  *         self._start_element = element
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__             # <<<<<<<<<<<<<<
  * 
  *     def __iter__(self):
  */
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2948, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(((PyObject *)__pyx_v_element));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_element));
   PyTuple_SET_ITEM(__pyx_t_3, 0, ((PyObject *)__pyx_v_element));
-  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2948, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_events, __pyx_v_events) < 0) __PYX_ERR(0, 2948, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(0, 2948, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk), __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2948, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_events, __pyx_v_events) < 0) __PYX_ERR(0, 2959, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_tag, __pyx_v_tag) < 0) __PYX_ERR(0, 2959, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_iterwalk), __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_next); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2948, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_t_5, __pyx_n_s_next); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2959, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_GIVEREF(__pyx_t_4);
@@ -78842,7 +79173,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   __pyx_v_self->_nextEvent = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":2941
+  /* "lxml/etree.pyx":2952
  *     cdef object _nextEvent
  *     cdef _Element _start_element
  *     def __cinit__(self, _Element element not None, tag=None, *, bint with_tail=True):             # <<<<<<<<<<<<<<
@@ -78865,7 +79196,7 @@ static int __pyx_pf_4lxml_5etree_19ElementTextIterator___cinit__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2950
+/* "lxml/etree.pyx":2961
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -78891,7 +79222,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__iter__", 0);
 
-  /* "lxml/etree.pyx":2951
+  /* "lxml/etree.pyx":2962
  * 
  *     def __iter__(self):
  *         return self             # <<<<<<<<<<<<<<
@@ -78903,7 +79234,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __
   __pyx_r = ((PyObject *)__pyx_v_self);
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2950
+  /* "lxml/etree.pyx":2961
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  * 
  *     def __iter__(self):             # <<<<<<<<<<<<<<
@@ -78918,7 +79249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_2__iter__(struct __
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2953
+/* "lxml/etree.pyx":2964
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -78954,7 +79285,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   PyObject *(*__pyx_t_7)(PyObject *);
   __Pyx_RefNannySetupContext("__next__", 0);
 
-  /* "lxml/etree.pyx":2955
+  /* "lxml/etree.pyx":2966
  *     def __next__(self):
  *         cdef _Element element
  *         result = None             # <<<<<<<<<<<<<<
@@ -78964,7 +79295,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   __Pyx_INCREF(Py_None);
   __pyx_v_result = Py_None;
 
-  /* "lxml/etree.pyx":2956
+  /* "lxml/etree.pyx":2967
  *         cdef _Element element
  *         result = None
  *         while result is None:             # <<<<<<<<<<<<<<
@@ -78976,7 +79307,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (!__pyx_t_2) break;
 
-    /* "lxml/etree.pyx":2957
+    /* "lxml/etree.pyx":2968
  *         result = None
  *         while result is None:
  *             event, element = self._nextEvent() # raises StopIteration             # <<<<<<<<<<<<<<
@@ -78996,7 +79327,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
     }
     __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2957, __pyx_L1_error)
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2968, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
@@ -79005,7 +79336,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 2957, __pyx_L1_error)
+        __PYX_ERR(0, 2968, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -79018,15 +79349,15 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_5);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2957, __pyx_L1_error)
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 2968, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2957, __pyx_L1_error)
+      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 2968, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       #endif
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2957, __pyx_L1_error)
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 2968, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -79034,7 +79365,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
       __Pyx_GOTREF(__pyx_t_4);
       index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_5);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 2957, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 2968, __pyx_L1_error)
       __pyx_t_7 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L6_unpacking_done;
@@ -79042,38 +79373,38 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 2957, __pyx_L1_error)
+      __PYX_ERR(0, 2968, __pyx_L1_error)
       __pyx_L6_unpacking_done:;
     }
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2957, __pyx_L1_error)
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_5etree__Element))))) __PYX_ERR(0, 2968, __pyx_L1_error)
     __Pyx_XDECREF_SET(__pyx_v_event, __pyx_t_4);
     __pyx_t_4 = 0;
     __Pyx_XDECREF_SET(__pyx_v_element, ((struct LxmlElement *)__pyx_t_5));
     __pyx_t_5 = 0;
 
-    /* "lxml/etree.pyx":2958
+    /* "lxml/etree.pyx":2969
  *         while result is None:
  *             event, element = self._nextEvent() # raises StopIteration
  *             if event == u"start":             # <<<<<<<<<<<<<<
  *                 result = element.text
  *             elif element is not self._start_element:
  */
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_v_event, __pyx_n_u_start, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 2958, __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, 2969, __pyx_L1_error)
     if (__pyx_t_2) {
 
-      /* "lxml/etree.pyx":2959
+      /* "lxml/etree.pyx":2970
  *             event, element = self._nextEvent() # raises StopIteration
  *             if event == u"start":
  *                 result = element.text             # <<<<<<<<<<<<<<
  *             elif element is not self._start_element:
  *                 result = element.tail
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2959, __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, 2970, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":2958
+      /* "lxml/etree.pyx":2969
  *         while result is None:
  *             event, element = self._nextEvent() # raises StopIteration
  *             if event == u"start":             # <<<<<<<<<<<<<<
@@ -79083,7 +79414,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
       goto __pyx_L7;
     }
 
-    /* "lxml/etree.pyx":2960
+    /* "lxml/etree.pyx":2971
  *             if event == u"start":
  *                 result = element.text
  *             elif element is not self._start_element:             # <<<<<<<<<<<<<<
@@ -79094,19 +79425,19 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":2961
+      /* "lxml/etree.pyx":2972
  *                 result = element.text
  *             elif element is not self._start_element:
  *                 result = element.tail             # <<<<<<<<<<<<<<
  *         return result
  * 
  */
-      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tail); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 2961, __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, 2972, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":2960
+      /* "lxml/etree.pyx":2971
  *             if event == u"start":
  *                 result = element.text
  *             elif element is not self._start_element:             # <<<<<<<<<<<<<<
@@ -79117,7 +79448,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
     __pyx_L7:;
   }
 
-  /* "lxml/etree.pyx":2962
+  /* "lxml/etree.pyx":2973
  *             elif element is not self._start_element:
  *                 result = element.tail
  *         return result             # <<<<<<<<<<<<<<
@@ -79129,7 +79460,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   __pyx_r = __pyx_v_result;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2953
+  /* "lxml/etree.pyx":2964
  *         return self
  * 
  *     def __next__(self):             # <<<<<<<<<<<<<<
@@ -79154,7 +79485,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19ElementTextIterator_4__next__(struct __
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2964
+/* "lxml/etree.pyx":2975
  *         return result
  * 
  * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:             # <<<<<<<<<<<<<<
@@ -79168,7 +79499,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createElement", 0);
 
-  /* "lxml/etree.pyx":2966
+  /* "lxml/etree.pyx":2977
  * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocNode(c_doc, NULL, _xcstr(name_utf), NULL)             # <<<<<<<<<<<<<<
@@ -79177,7 +79508,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
  */
   __pyx_v_c_node = xmlNewDocNode(__pyx_v_c_doc, NULL, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf), NULL);
 
-  /* "lxml/etree.pyx":2967
+  /* "lxml/etree.pyx":2978
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocNode(c_doc, NULL, _xcstr(name_utf), NULL)
  *     return c_node             # <<<<<<<<<<<<<<
@@ -79187,7 +79518,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2964
+  /* "lxml/etree.pyx":2975
  *         return result
  * 
  * cdef xmlNode* _createElement(xmlDoc* c_doc, object name_utf) except NULL:             # <<<<<<<<<<<<<<
@@ -79201,7 +79532,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createElement(xmlDoc *__pyx_v_c_doc, PyObj
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2969
+/* "lxml/etree.pyx":2980
  *     return c_node
  * 
  * cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):             # <<<<<<<<<<<<<<
@@ -79215,7 +79546,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createComment", 0);
 
-  /* "lxml/etree.pyx":2971
+  /* "lxml/etree.pyx":2982
  * cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocComment(c_doc, text)             # <<<<<<<<<<<<<<
@@ -79224,7 +79555,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
  */
   __pyx_v_c_node = xmlNewDocComment(__pyx_v_c_doc, __pyx_v_text);
 
-  /* "lxml/etree.pyx":2972
+  /* "lxml/etree.pyx":2983
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocComment(c_doc, text)
  *     return c_node             # <<<<<<<<<<<<<<
@@ -79234,7 +79565,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2969
+  /* "lxml/etree.pyx":2980
  *     return c_node
  * 
  * cdef xmlNode* _createComment(xmlDoc* c_doc, const_xmlChar* text):             # <<<<<<<<<<<<<<
@@ -79248,7 +79579,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createComment(xmlDoc *__pyx_v_c_doc, const
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2974
+/* "lxml/etree.pyx":2985
  *     return c_node
  * 
  * cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):             # <<<<<<<<<<<<<<
@@ -79262,7 +79593,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createPI", 0);
 
-  /* "lxml/etree.pyx":2976
+  /* "lxml/etree.pyx":2987
  * cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocPI(c_doc, target, text)             # <<<<<<<<<<<<<<
@@ -79271,7 +79602,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
  */
   __pyx_v_c_node = xmlNewDocPI(__pyx_v_c_doc, __pyx_v_target, __pyx_v_text);
 
-  /* "lxml/etree.pyx":2977
+  /* "lxml/etree.pyx":2988
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewDocPI(c_doc, target, text)
  *     return c_node             # <<<<<<<<<<<<<<
@@ -79281,7 +79612,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2974
+  /* "lxml/etree.pyx":2985
  *     return c_node
  * 
  * cdef xmlNode* _createPI(xmlDoc* c_doc, const_xmlChar* target, const_xmlChar* text):             # <<<<<<<<<<<<<<
@@ -79295,7 +79626,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createPI(xmlDoc *__pyx_v_c_doc, const xmlC
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2979
+/* "lxml/etree.pyx":2990
  *     return c_node
  * 
  * cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):             # <<<<<<<<<<<<<<
@@ -79309,7 +79640,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("_createEntity", 0);
 
-  /* "lxml/etree.pyx":2981
+  /* "lxml/etree.pyx":2992
  * cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewReference(c_doc, name)             # <<<<<<<<<<<<<<
@@ -79318,7 +79649,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
  */
   __pyx_v_c_node = xmlNewReference(__pyx_v_c_doc, __pyx_v_name);
 
-  /* "lxml/etree.pyx":2982
+  /* "lxml/etree.pyx":2993
  *     cdef xmlNode* c_node
  *     c_node = tree.xmlNewReference(c_doc, name)
  *     return c_node             # <<<<<<<<<<<<<<
@@ -79328,7 +79659,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
   __pyx_r = __pyx_v_c_node;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2979
+  /* "lxml/etree.pyx":2990
  *     return c_node
  * 
  * cdef xmlNode* _createEntity(xmlDoc* c_doc, const_xmlChar* name):             # <<<<<<<<<<<<<<
@@ -79342,7 +79673,7 @@ static xmlNode *__pyx_f_4lxml_5etree__createEntity(xmlDoc *__pyx_v_c_doc, const
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":2986
+/* "lxml/etree.pyx":2997
  * # module-level API for ElementTree
  * 
  * def Element(_tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -79401,7 +79732,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7Element(PyObject *__pyx_self, PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "Element") < 0)) __PYX_ERR(0, 2986, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "Element") < 0)) __PYX_ERR(0, 2997, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -79420,7 +79751,7 @@ static PyObject *__pyx_pw_4lxml_5etree_7Element(PyObject *__pyx_self, PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2986, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 2997, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
   __Pyx_AddTraceback("lxml.etree.Element", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -79441,7 +79772,7 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("Element", 0);
 
-  /* "lxml/etree.pyx":2996
+  /* "lxml/etree.pyx":3007
  *     create an Element within a specific document or parser context.
  *     """
  *     return _makeElement(_tag, NULL, None, None, None, None,             # <<<<<<<<<<<<<<
@@ -79450,20 +79781,20 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
  */
   __Pyx_XDECREF(__pyx_r);
 
-  /* "lxml/etree.pyx":2997
+  /* "lxml/etree.pyx":3008
  *     """
  *     return _makeElement(_tag, NULL, None, None, None, None,
  *                         attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __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, 2996, __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, 3007, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":2986
+  /* "lxml/etree.pyx":2997
  * # module-level API for ElementTree
  * 
  * def Element(_tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -79482,7 +79813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_6Element(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3000
+/* "lxml/etree.pyx":3011
  * 
  * 
  * def Comment(text=None):             # <<<<<<<<<<<<<<
@@ -79521,7 +79852,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9Comment(PyObject *__pyx_self, PyObject *
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Comment") < 0)) __PYX_ERR(0, 3000, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "Comment") < 0)) __PYX_ERR(0, 3011, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -79535,7 +79866,7 @@ static PyObject *__pyx_pw_4lxml_5etree_9Comment(PyObject *__pyx_self, PyObject *
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("Comment", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3000, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("Comment", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3011, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.Comment", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -79564,7 +79895,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   __Pyx_RefNannySetupContext("Comment", 0);
   __Pyx_INCREF(__pyx_v_text);
 
-  /* "lxml/etree.pyx":3010
+  /* "lxml/etree.pyx":3021
  *     cdef xmlDoc*   c_doc
  * 
  *     if text is None:             # <<<<<<<<<<<<<<
@@ -79575,7 +79906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3011
+    /* "lxml/etree.pyx":3022
  * 
  *     if text is None:
  *         text = b''             # <<<<<<<<<<<<<<
@@ -79585,7 +79916,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
     __Pyx_INCREF(__pyx_kp_b__11);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__11);
 
-    /* "lxml/etree.pyx":3010
+    /* "lxml/etree.pyx":3021
  *     cdef xmlDoc*   c_doc
  * 
  *     if text is None:             # <<<<<<<<<<<<<<
@@ -79595,7 +79926,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":3013
+  /* "lxml/etree.pyx":3024
  *         text = b''
  *     else:
  *         text = _utf8(text)             # <<<<<<<<<<<<<<
@@ -79603,26 +79934,26 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  */
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3013, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3024, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":3014
+    /* "lxml/etree.pyx":3025
  *     else:
  *         text = _utf8(text)
  *         if b'--' in text or text.endswith(b'-'):             # <<<<<<<<<<<<<<
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  * 
  */
-    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__44, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3014, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__44, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3025, __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_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_endswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3014, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_text, __pyx_n_s_endswith); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -79636,29 +79967,29 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
     }
     __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_kp_b__2) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_kp_b__2);
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3014, __pyx_L1_error)
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3025, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3014, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3025, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_t_2 = __pyx_t_4;
     __pyx_L5_bool_binop_done:;
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":3015
+      /* "lxml/etree.pyx":3026
  *         text = _utf8(text)
  *         if b'--' in text or text.endswith(b'-'):
  *             raise ValueError("Comment may not contain '--' or end with '-'")             # <<<<<<<<<<<<<<
  * 
  *     c_doc = _newXMLDoc()
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3015, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__45, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3026, __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(0, 3015, __pyx_L1_error)
+      __PYX_ERR(0, 3026, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3014
+      /* "lxml/etree.pyx":3025
  *     else:
  *         text = _utf8(text)
  *         if b'--' in text or text.endswith(b'-'):             # <<<<<<<<<<<<<<
@@ -79669,29 +80000,29 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":3017
+  /* "lxml/etree.pyx":3028
  *             raise ValueError("Comment may not contain '--' or end with '-'")
  * 
  *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createComment(c_doc, _xcstr(text))
  */
-  __pyx_t_7 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3017, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_7 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3028, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_7;
 
-  /* "lxml/etree.pyx":3018
+  /* "lxml/etree.pyx":3029
  * 
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
  *     c_node = _createComment(c_doc, _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
-  __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, 3018, __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, 3029, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":3019
+  /* "lxml/etree.pyx":3030
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createComment(c_doc, _xcstr(text))             # <<<<<<<<<<<<<<
@@ -79700,7 +80031,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  */
   __pyx_v_c_node = __pyx_f_4lxml_5etree__createComment(__pyx_v_c_doc, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_text));
 
-  /* "lxml/etree.pyx":3020
+  /* "lxml/etree.pyx":3031
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createComment(c_doc, _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
@@ -79709,7 +80040,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  */
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
-  /* "lxml/etree.pyx":3021
+  /* "lxml/etree.pyx":3032
  *     c_node = _createComment(c_doc, _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
@@ -79717,13 +80048,13 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
  * 
  */
   __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, 3021, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3032, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3000
+  /* "lxml/etree.pyx":3011
  * 
  * 
  * def Comment(text=None):             # <<<<<<<<<<<<<<
@@ -79746,7 +80077,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8Comment(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3024
+/* "lxml/etree.pyx":3035
  * 
  * 
  * def ProcessingInstruction(target, text=None):             # <<<<<<<<<<<<<<
@@ -79792,7 +80123,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11ProcessingInstruction(PyObject *__pyx_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ProcessingInstruction") < 0)) __PYX_ERR(0, 3024, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ProcessingInstruction") < 0)) __PYX_ERR(0, 3035, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -79808,7 +80139,7 @@ static PyObject *__pyx_pw_4lxml_5etree_11ProcessingInstruction(PyObject *__pyx_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("ProcessingInstruction", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3024, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("ProcessingInstruction", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3035, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ProcessingInstruction", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -79840,35 +80171,35 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   __Pyx_INCREF(__pyx_v_target);
   __Pyx_INCREF(__pyx_v_text);
 
-  /* "lxml/etree.pyx":3034
+  /* "lxml/etree.pyx":3045
  *     cdef xmlDoc*   c_doc
  * 
  *     target = _utf8(target)             # <<<<<<<<<<<<<<
  *     _tagValidOrRaise(target)
  *     if target.lower() == b'xml':
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3034, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_target); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3045, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_target, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3035
+  /* "lxml/etree.pyx":3046
  * 
  *     target = _utf8(target)
  *     _tagValidOrRaise(target)             # <<<<<<<<<<<<<<
  *     if target.lower() == b'xml':
  *         raise ValueError, f"Invalid PI name '{target}'"
  */
-  __pyx_t_2 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3035, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_5etree__tagValidOrRaise(__pyx_v_target); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 3046, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3036
+  /* "lxml/etree.pyx":3047
  *     target = _utf8(target)
  *     _tagValidOrRaise(target)
  *     if target.lower() == b'xml':             # <<<<<<<<<<<<<<
  *         raise ValueError, f"Invalid PI name '{target}'"
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3036, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_target, __pyx_n_s_lower); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3047, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -79882,21 +80213,21 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   }
   __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3036, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3047, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_5 = (__Pyx_PyBytes_Equals(__pyx_t_1, __pyx_n_b_xml, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3036, __pyx_L1_error)
+  __pyx_t_5 = (__Pyx_PyBytes_Equals(__pyx_t_1, __pyx_n_b_xml, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 3047, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (unlikely(__pyx_t_5)) {
 
-    /* "lxml/etree.pyx":3037
+    /* "lxml/etree.pyx":3048
  *     _tagValidOrRaise(target)
  *     if target.lower() == b'xml':
  *         raise ValueError, f"Invalid PI name '{target}'"             # <<<<<<<<<<<<<<
  * 
  *     if text is None:
  */
-    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3037, __pyx_L1_error)
+    __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3048, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_6 = 0;
     __pyx_t_7 = 127;
@@ -79904,7 +80235,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
     __pyx_t_6 += 17;
     __Pyx_GIVEREF(__pyx_kp_u_Invalid_PI_name);
     PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Invalid_PI_name);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3037, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimple(__pyx_v_target, __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3048, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_7 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_7) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_7;
     __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
@@ -79915,14 +80246,14 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
     __pyx_t_6 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__21);
     PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__21);
-    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3037, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3048, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_3, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 3037, __pyx_L1_error)
+    __PYX_ERR(0, 3048, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3036
+    /* "lxml/etree.pyx":3047
  *     target = _utf8(target)
  *     _tagValidOrRaise(target)
  *     if target.lower() == b'xml':             # <<<<<<<<<<<<<<
@@ -79931,7 +80262,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  */
   }
 
-  /* "lxml/etree.pyx":3039
+  /* "lxml/etree.pyx":3050
  *         raise ValueError, f"Invalid PI name '{target}'"
  * 
  *     if text is None:             # <<<<<<<<<<<<<<
@@ -79942,7 +80273,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   __pyx_t_8 = (__pyx_t_5 != 0);
   if (__pyx_t_8) {
 
-    /* "lxml/etree.pyx":3040
+    /* "lxml/etree.pyx":3051
  * 
  *     if text is None:
  *         text = b''             # <<<<<<<<<<<<<<
@@ -79952,7 +80283,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
     __Pyx_INCREF(__pyx_kp_b__11);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_kp_b__11);
 
-    /* "lxml/etree.pyx":3039
+    /* "lxml/etree.pyx":3050
  *         raise ValueError, f"Invalid PI name '{target}'"
  * 
  *     if text is None:             # <<<<<<<<<<<<<<
@@ -79962,7 +80293,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
     goto __pyx_L4;
   }
 
-  /* "lxml/etree.pyx":3042
+  /* "lxml/etree.pyx":3053
  *         text = b''
  *     else:
  *         text = _utf8(text)             # <<<<<<<<<<<<<<
@@ -79970,23 +80301,23 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *             raise ValueError, "PI text must not contain '?>'"
  */
   /*else*/ {
-    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3042, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_5etree__utf8(__pyx_v_text); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3053, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":3043
+    /* "lxml/etree.pyx":3054
  *     else:
  *         text = _utf8(text)
  *         if b'?>' in text:             # <<<<<<<<<<<<<<
  *             raise ValueError, "PI text must not contain '?>'"
  * 
  */
-    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__46, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3043, __pyx_L1_error)
+    __pyx_t_8 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__46, __pyx_v_text, Py_EQ)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 3054, __pyx_L1_error)
     __pyx_t_5 = (__pyx_t_8 != 0);
     if (unlikely(__pyx_t_5)) {
 
-      /* "lxml/etree.pyx":3044
+      /* "lxml/etree.pyx":3055
  *         text = _utf8(text)
  *         if b'?>' in text:
  *             raise ValueError, "PI text must not contain '?>'"             # <<<<<<<<<<<<<<
@@ -79994,9 +80325,9 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  *     c_doc = _newXMLDoc()
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_PI_text_must_not_contain, 0, 0);
-      __PYX_ERR(0, 3044, __pyx_L1_error)
+      __PYX_ERR(0, 3055, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3043
+      /* "lxml/etree.pyx":3054
  *     else:
  *         text = _utf8(text)
  *         if b'?>' in text:             # <<<<<<<<<<<<<<
@@ -80007,29 +80338,29 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   }
   __pyx_L4:;
 
-  /* "lxml/etree.pyx":3046
+  /* "lxml/etree.pyx":3057
  *             raise ValueError, "PI text must not contain '?>'"
  * 
  *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  */
-  __pyx_t_9 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_9 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3046, __pyx_L1_error)
+  __pyx_t_9 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_9 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3057, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_9;
 
-  /* "lxml/etree.pyx":3047
+  /* "lxml/etree.pyx":3058
  * 
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
-  __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, 3047, __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, 3058, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/etree.pyx":3048
+  /* "lxml/etree.pyx":3059
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))             # <<<<<<<<<<<<<<
@@ -80038,7 +80369,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  */
   __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":3049
+  /* "lxml/etree.pyx":3060
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
@@ -80047,7 +80378,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  */
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
-  /* "lxml/etree.pyx":3050
+  /* "lxml/etree.pyx":3061
  *     c_node = _createPI(c_doc, _xcstr(target), _xcstr(text))
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
@@ -80055,13 +80386,13 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
  * PI = ProcessingInstruction
  */
   __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, 3050, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3024
+  /* "lxml/etree.pyx":3035
  * 
  * 
  * def ProcessingInstruction(target, text=None):             # <<<<<<<<<<<<<<
@@ -80085,7 +80416,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10ProcessingInstruction(CYTHON_UNUSED PyO
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3070
+/* "lxml/etree.pyx":3081
  *     """
  *     cdef bytes _utf8_data
  *     def __cinit__(self, data):             # <<<<<<<<<<<<<<
@@ -80119,7 +80450,7 @@ static int __pyx_pw_4lxml_5etree_5CDATA_1__cinit__(PyObject *__pyx_v_self, PyObj
         else goto __pyx_L5_argtuple_error;
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 3070, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__cinit__") < 0)) __PYX_ERR(0, 3081, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -80130,7 +80461,7 @@ static int __pyx_pw_4lxml_5etree_5CDATA_1__cinit__(PyObject *__pyx_v_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3070, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__cinit__", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3081, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.CDATA.__cinit__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -80152,30 +80483,30 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":3071
+  /* "lxml/etree.pyx":3082
  *     cdef bytes _utf8_data
  *     def __cinit__(self, data):
  *         _utf8_data = _utf8(data)             # <<<<<<<<<<<<<<
  *         if b']]>' in _utf8_data:
  *             raise ValueError, "']]>' not allowed inside CDATA"
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3071, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_data); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3082, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v__utf8_data = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3072
+  /* "lxml/etree.pyx":3083
  *     def __cinit__(self, data):
  *         _utf8_data = _utf8(data)
  *         if b']]>' in _utf8_data:             # <<<<<<<<<<<<<<
  *             raise ValueError, "']]>' not allowed inside CDATA"
  *         self._utf8_data = _utf8_data
  */
-  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__47, __pyx_v__utf8_data, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3072, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__47, __pyx_v__utf8_data, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3083, __pyx_L1_error)
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (unlikely(__pyx_t_3)) {
 
-    /* "lxml/etree.pyx":3073
+    /* "lxml/etree.pyx":3084
  *         _utf8_data = _utf8(data)
  *         if b']]>' in _utf8_data:
  *             raise ValueError, "']]>' not allowed inside CDATA"             # <<<<<<<<<<<<<<
@@ -80183,9 +80514,9 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  * 
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_s_not_allowed_inside_CDATA, 0, 0);
-    __PYX_ERR(0, 3073, __pyx_L1_error)
+    __PYX_ERR(0, 3084, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3072
+    /* "lxml/etree.pyx":3083
  *     def __cinit__(self, data):
  *         _utf8_data = _utf8(data)
  *         if b']]>' in _utf8_data:             # <<<<<<<<<<<<<<
@@ -80194,7 +80525,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
  */
   }
 
-  /* "lxml/etree.pyx":3074
+  /* "lxml/etree.pyx":3085
  *         if b']]>' in _utf8_data:
  *             raise ValueError, "']]>' not allowed inside CDATA"
  *         self._utf8_data = _utf8_data             # <<<<<<<<<<<<<<
@@ -80207,7 +80538,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
   __Pyx_DECREF(__pyx_v_self->_utf8_data);
   __pyx_v_self->_utf8_data = __pyx_v__utf8_data;
 
-  /* "lxml/etree.pyx":3070
+  /* "lxml/etree.pyx":3081
  *     """
  *     cdef bytes _utf8_data
  *     def __cinit__(self, data):             # <<<<<<<<<<<<<<
@@ -80228,7 +80559,7 @@ static int __pyx_pf_4lxml_5etree_5CDATA___cinit__(struct __pyx_obj_4lxml_5etree_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3077
+/* "lxml/etree.pyx":3088
  * 
  * 
  * def Entity(name):             # <<<<<<<<<<<<<<
@@ -80267,19 +80598,19 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   xmlDoc *__pyx_t_6;
   __Pyx_RefNannySetupContext("Entity", 0);
 
-  /* "lxml/etree.pyx":3089
+  /* "lxml/etree.pyx":3100
  *     cdef xmlNode*  c_node
  *     cdef xmlDoc*   c_doc
  *     name_utf = _utf8(name)             # <<<<<<<<<<<<<<
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':
  */
-  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3089, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree__utf8(__pyx_v_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3100, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_name_utf = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3090
+  /* "lxml/etree.pyx":3101
  *     cdef xmlDoc*   c_doc
  *     name_utf = _utf8(name)
  *     c_name = _xcstr(name_utf)             # <<<<<<<<<<<<<<
@@ -80288,7 +80619,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  */
   __pyx_v_c_name = (const xmlChar*)PyBytes_AS_STRING(__pyx_v_name_utf);
 
-  /* "lxml/etree.pyx":3091
+  /* "lxml/etree.pyx":3102
  *     name_utf = _utf8(name)
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':             # <<<<<<<<<<<<<<
@@ -80298,7 +80629,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   __pyx_t_2 = (((__pyx_v_c_name[0]) == '#') != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3092
+    /* "lxml/etree.pyx":3103
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':
  *         if not _characterReferenceIsValid(c_name + 1):             # <<<<<<<<<<<<<<
@@ -80308,14 +80639,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
     __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__characterReferenceIsValid((__pyx_v_c_name + 1)) != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":3093
+      /* "lxml/etree.pyx":3104
  *     if c_name[0] == c'#':
  *         if not _characterReferenceIsValid(c_name + 1):
  *             raise ValueError, f"Invalid character reference: '{name}'"             # <<<<<<<<<<<<<<
  *     elif not _xmlNameIsValid(c_name):
  *         raise ValueError, f"Invalid entity reference: '{name}'"
  */
-      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3093, __pyx_L1_error)
+      __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3104, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_3 = 0;
       __pyx_t_4 = 127;
@@ -80323,7 +80654,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
       __pyx_t_3 += 30;
       __Pyx_GIVEREF(__pyx_kp_u_Invalid_character_reference);
       PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_kp_u_Invalid_character_reference);
-      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3093, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3104, __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;
       __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
@@ -80334,14 +80665,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
       __pyx_t_3 += 1;
       __Pyx_GIVEREF(__pyx_kp_u__21);
       PyTuple_SET_ITEM(__pyx_t_1, 2, __pyx_kp_u__21);
-      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3093, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyUnicode_Join(__pyx_t_1, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3104, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_5, 0, 0);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-      __PYX_ERR(0, 3093, __pyx_L1_error)
+      __PYX_ERR(0, 3104, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3092
+      /* "lxml/etree.pyx":3103
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':
  *         if not _characterReferenceIsValid(c_name + 1):             # <<<<<<<<<<<<<<
@@ -80350,7 +80681,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  */
     }
 
-    /* "lxml/etree.pyx":3091
+    /* "lxml/etree.pyx":3102
  *     name_utf = _utf8(name)
  *     c_name = _xcstr(name_utf)
  *     if c_name[0] == c'#':             # <<<<<<<<<<<<<<
@@ -80360,7 +80691,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":3094
+  /* "lxml/etree.pyx":3105
  *         if not _characterReferenceIsValid(c_name + 1):
  *             raise ValueError, f"Invalid character reference: '{name}'"
  *     elif not _xmlNameIsValid(c_name):             # <<<<<<<<<<<<<<
@@ -80370,14 +80701,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   __pyx_t_2 = ((!(__pyx_f_4lxml_5etree__xmlNameIsValid(__pyx_v_c_name) != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":3095
+    /* "lxml/etree.pyx":3106
  *             raise ValueError, f"Invalid character reference: '{name}'"
  *     elif not _xmlNameIsValid(c_name):
  *         raise ValueError, f"Invalid entity reference: '{name}'"             # <<<<<<<<<<<<<<
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)
  */
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3095, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_3 = 0;
     __pyx_t_4 = 127;
@@ -80385,7 +80716,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
     __pyx_t_3 += 27;
     __Pyx_GIVEREF(__pyx_kp_u_Invalid_entity_reference);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Invalid_entity_reference);
-    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3095, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) > __pyx_t_4) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_1) : __pyx_t_4;
     __pyx_t_3 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
@@ -80396,14 +80727,14 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
     __pyx_t_3 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__21);
     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u__21);
-    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3095, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3106, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_1, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 3095, __pyx_L1_error)
+    __PYX_ERR(0, 3106, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3094
+    /* "lxml/etree.pyx":3105
  *         if not _characterReferenceIsValid(c_name + 1):
  *             raise ValueError, f"Invalid character reference: '{name}'"
  *     elif not _xmlNameIsValid(c_name):             # <<<<<<<<<<<<<<
@@ -80413,29 +80744,29 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":3096
+  /* "lxml/etree.pyx":3107
  *     elif not _xmlNameIsValid(c_name):
  *         raise ValueError, f"Invalid entity reference: '{name}'"
  *     c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createEntity(c_doc, c_name)
  */
-  __pyx_t_6 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3096, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_6 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3107, __pyx_L1_error)
   __pyx_v_c_doc = __pyx_t_6;
 
-  /* "lxml/etree.pyx":3097
+  /* "lxml/etree.pyx":3108
  *         raise ValueError, f"Invalid entity reference: '{name}'"
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)             # <<<<<<<<<<<<<<
  *     c_node = _createEntity(c_doc, c_name)
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  */
-  __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, 3097, __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, 3108, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3098
+  /* "lxml/etree.pyx":3109
  *     c_doc = _newXMLDoc()
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createEntity(c_doc, c_name)             # <<<<<<<<<<<<<<
@@ -80444,7 +80775,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  */
   __pyx_v_c_node = __pyx_f_4lxml_5etree__createEntity(__pyx_v_c_doc, __pyx_v_c_name);
 
-  /* "lxml/etree.pyx":3099
+  /* "lxml/etree.pyx":3110
  *     doc = _documentFactory(c_doc, None)
  *     c_node = _createEntity(c_doc, c_name)
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)             # <<<<<<<<<<<<<<
@@ -80453,7 +80784,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  */
   (void)(xmlAddChild(((xmlNode *)__pyx_v_c_doc), __pyx_v_c_node));
 
-  /* "lxml/etree.pyx":3100
+  /* "lxml/etree.pyx":3111
  *     c_node = _createEntity(c_doc, c_name)
  *     tree.xmlAddChild(<xmlNode*>c_doc, c_node)
  *     return _elementFactory(doc, c_node)             # <<<<<<<<<<<<<<
@@ -80461,13 +80792,13 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
  * 
  */
   __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, 3100, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)__pyx_f_4lxml_5etree__elementFactory(__pyx_v_doc, __pyx_v_c_node)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3111, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3077
+  /* "lxml/etree.pyx":3088
  * 
  * 
  * def Entity(name):             # <<<<<<<<<<<<<<
@@ -80489,7 +80820,7 @@ static PyObject *__pyx_pf_4lxml_5etree_12Entity(CYTHON_UNUSED PyObject *__pyx_se
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3103
+/* "lxml/etree.pyx":3114
  * 
  * 
  * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
@@ -80516,7 +80847,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15SubElement(PyObject *__pyx_self, PyObje
     static PyObject **__pyx_pyargnames[] = {&__pyx_n_s_parent,&__pyx_n_s_tag_2,&__pyx_n_s_attrib,&__pyx_n_s_nsmap,0};
     PyObject* values[4] = {0,0,0,0};
 
-    /* "lxml/etree.pyx":3104
+    /* "lxml/etree.pyx":3115
  * 
  * def SubElement(_Element _parent not None, _tag,
  *                attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
@@ -80549,7 +80880,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15SubElement(PyObject *__pyx_self, PyObje
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_tag_2)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, 1); __PYX_ERR(0, 3103, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, 1); __PYX_ERR(0, 3114, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
@@ -80565,7 +80896,7 @@ static PyObject *__pyx_pw_4lxml_5etree_15SubElement(PyObject *__pyx_self, PyObje
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "SubElement") < 0)) __PYX_ERR(0, 3103, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__extra, values, pos_args, "SubElement") < 0)) __PYX_ERR(0, 3114, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -80586,17 +80917,17 @@ static PyObject *__pyx_pw_4lxml_5etree_15SubElement(PyObject *__pyx_self, PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3103, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("SubElement", 0, 2, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3114, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__extra); __pyx_v__extra = 0;
   __Pyx_AddTraceback("lxml.etree.SubElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__parent), __pyx_ptype_4lxml_5etree__Element, 0, "_parent", 0))) __PYX_ERR(0, 3103, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v__parent), __pyx_ptype_4lxml_5etree__Element, 0, "_parent", 0))) __PYX_ERR(0, 3114, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_14SubElement(__pyx_self, __pyx_v__parent, __pyx_v__tag, __pyx_v_attrib, __pyx_v_nsmap, __pyx_v__extra);
 
-  /* "lxml/etree.pyx":3103
+  /* "lxml/etree.pyx":3114
  * 
  * 
  * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
@@ -80620,7 +80951,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__py
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("SubElement", 0);
 
-  /* "lxml/etree.pyx":3110
+  /* "lxml/etree.pyx":3121
  *     appends it to an existing element.
  *     """
  *     return _makeSubElement(_parent, _tag, None, None, attrib, nsmap, _extra)             # <<<<<<<<<<<<<<
@@ -80628,13 +80959,13 @@ static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__py
  * 
  */
   __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, 3110, __pyx_L1_error)
+  __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, 3121, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3103
+  /* "lxml/etree.pyx":3114
  * 
  * 
  * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
@@ -80653,7 +80984,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14SubElement(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3113
+/* "lxml/etree.pyx":3124
  * 
  * 
  * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -80703,7 +81034,7 @@ static PyObject *__pyx_pw_4lxml_5etree_17ElementTree(PyObject *__pyx_self, PyObj
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ElementTree") < 0)) __PYX_ERR(0, 3113, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "ElementTree") < 0)) __PYX_ERR(0, 3124, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -80719,14 +81050,14 @@ static PyObject *__pyx_pw_4lxml_5etree_17ElementTree(PyObject *__pyx_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("ElementTree", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3113, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("ElementTree", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3124, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.ElementTree", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) __PYX_ERR(0, 3113, __pyx_L1_error)
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3113, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_5etree__Element, 1, "element", 0))) __PYX_ERR(0, 3124, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3124, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_16ElementTree(__pyx_self, __pyx_v_element, __pyx_v_file, __pyx_v_parser);
 
   /* function exit code */
@@ -80757,7 +81088,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   xmlDoc *__pyx_t_11;
   __Pyx_RefNannySetupContext("ElementTree", 0);
 
-  /* "lxml/etree.pyx":3125
+  /* "lxml/etree.pyx":3136
  *     cdef _Document doc
  * 
  *     if element is not None:             # <<<<<<<<<<<<<<
@@ -80768,7 +81099,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3126
+    /* "lxml/etree.pyx":3137
  * 
  *     if element is not None:
  *         doc  = element._doc             # <<<<<<<<<<<<<<
@@ -80780,7 +81111,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":3125
+    /* "lxml/etree.pyx":3136
  *     cdef _Document doc
  * 
  *     if element is not None:             # <<<<<<<<<<<<<<
@@ -80790,7 +81121,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":3127
+  /* "lxml/etree.pyx":3138
  *     if element is not None:
  *         doc  = element._doc
  *     elif file is not None:             # <<<<<<<<<<<<<<
@@ -80801,7 +81132,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3128
+    /* "lxml/etree.pyx":3139
  *         doc  = element._doc
  *     elif file is not None:
  *         try:             # <<<<<<<<<<<<<<
@@ -80817,19 +81148,19 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
       __Pyx_XGOTREF(__pyx_t_6);
       /*try:*/ {
 
-        /* "lxml/etree.pyx":3129
+        /* "lxml/etree.pyx":3140
  *     elif file is not None:
  *         try:
  *             doc = _parseDocument(file, parser, None)             # <<<<<<<<<<<<<<
  *         except _TargetParserResult as result_container:
  *             return result_container.result
  */
-        __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, 3129, __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, 3140, __pyx_L4_error)
         __Pyx_GOTREF(__pyx_t_3);
         __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
         __pyx_t_3 = 0;
 
-        /* "lxml/etree.pyx":3128
+        /* "lxml/etree.pyx":3139
  *         doc  = element._doc
  *     elif file is not None:
  *         try:             # <<<<<<<<<<<<<<
@@ -80844,7 +81175,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
       __pyx_L4_error:;
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":3130
+      /* "lxml/etree.pyx":3141
  *         try:
  *             doc = _parseDocument(file, parser, None)
  *         except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -80852,7 +81183,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *     else:
  */
       __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
-      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3130, __pyx_L6_except_error)
+      __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3141, __pyx_L6_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_9);
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -80860,14 +81191,14 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
       __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
       if (__pyx_t_10) {
         __Pyx_AddTraceback("lxml.etree.ElementTree", __pyx_clineno, __pyx_lineno, __pyx_filename);
-        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3130, __pyx_L6_except_error)
+        if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3141, __pyx_L6_except_error)
         __Pyx_GOTREF(__pyx_t_8);
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_GOTREF(__pyx_t_3);
         __Pyx_INCREF(__pyx_t_7);
         __pyx_v_result_container = __pyx_t_7;
 
-        /* "lxml/etree.pyx":3131
+        /* "lxml/etree.pyx":3142
  *             doc = _parseDocument(file, parser, None)
  *         except _TargetParserResult as result_container:
  *             return result_container.result             # <<<<<<<<<<<<<<
@@ -80875,7 +81206,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  *         c_doc = _newXMLDoc()
  */
         __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, 3131, __pyx_L6_except_error)
+        __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3142, __pyx_L6_except_error)
         __Pyx_GOTREF(__pyx_t_9);
         __pyx_r = __pyx_t_9;
         __pyx_t_9 = 0;
@@ -80887,7 +81218,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
       goto __pyx_L6_except_error;
       __pyx_L6_except_error:;
 
-      /* "lxml/etree.pyx":3128
+      /* "lxml/etree.pyx":3139
  *         doc  = element._doc
  *     elif file is not None:
  *         try:             # <<<<<<<<<<<<<<
@@ -80908,7 +81239,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
       __pyx_L9_try_end:;
     }
 
-    /* "lxml/etree.pyx":3127
+    /* "lxml/etree.pyx":3138
  *     if element is not None:
  *         doc  = element._doc
  *     elif file is not None:             # <<<<<<<<<<<<<<
@@ -80918,7 +81249,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
     goto __pyx_L3;
   }
 
-  /* "lxml/etree.pyx":3133
+  /* "lxml/etree.pyx":3144
  *             return result_container.result
  *     else:
  *         c_doc = _newXMLDoc()             # <<<<<<<<<<<<<<
@@ -80926,24 +81257,24 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  * 
  */
   /*else*/ {
-    __pyx_t_11 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_11 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3133, __pyx_L1_error)
+    __pyx_t_11 = __pyx_f_4lxml_5etree__newXMLDoc(); if (unlikely(__pyx_t_11 == ((xmlDoc *)NULL))) __PYX_ERR(0, 3144, __pyx_L1_error)
     __pyx_v_c_doc = __pyx_t_11;
 
-    /* "lxml/etree.pyx":3134
+    /* "lxml/etree.pyx":3145
  *     else:
  *         c_doc = _newXMLDoc()
  *         doc = _documentFactory(c_doc, parser)             # <<<<<<<<<<<<<<
  * 
  *     return _elementTreeFactory(doc, element)
  */
-    __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__documentFactory(__pyx_v_c_doc, __pyx_v_parser)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3134, __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, 3145, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
     __pyx_t_3 = 0;
   }
   __pyx_L3:;
 
-  /* "lxml/etree.pyx":3136
+  /* "lxml/etree.pyx":3147
  *         doc = _documentFactory(c_doc, parser)
  * 
  *     return _elementTreeFactory(doc, element)             # <<<<<<<<<<<<<<
@@ -80951,13 +81282,13 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
  * 
  */
   __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, 3136, __pyx_L1_error)
+  __pyx_t_3 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, __pyx_v_element)); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3147, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3113
+  /* "lxml/etree.pyx":3124
  * 
  * 
  * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -80981,7 +81312,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16ElementTree(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3139
+/* "lxml/etree.pyx":3150
  * 
  * 
  * def HTML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81034,7 +81365,7 @@ static PyObject *__pyx_pw_4lxml_5etree_19HTML(PyObject *__pyx_self, PyObject *__
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "HTML") < 0)) __PYX_ERR(0, 3139, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "HTML") < 0)) __PYX_ERR(0, 3150, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -81051,13 +81382,13 @@ static PyObject *__pyx_pw_4lxml_5etree_19HTML(PyObject *__pyx_self, PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("HTML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3139, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("HTML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3150, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.HTML", __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(0, 3139, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3150, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_18HTML(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
 
   /* function exit code */
@@ -81087,7 +81418,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   __Pyx_RefNannySetupContext("HTML", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "lxml/etree.pyx":3154
+  /* "lxml/etree.pyx":3165
  *     """
  *     cdef _Document doc
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -81098,19 +81429,19 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3155
+    /* "lxml/etree.pyx":3166
  *     cdef _Document doc
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER
  */
-    __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, 3155, __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, 3166, __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;
 
-    /* "lxml/etree.pyx":3156
+    /* "lxml/etree.pyx":3167
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, HTMLParser):             # <<<<<<<<<<<<<<
@@ -81121,7 +81452,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":3157
+      /* "lxml/etree.pyx":3168
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER             # <<<<<<<<<<<<<<
@@ -81131,7 +81462,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
       __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));
 
-      /* "lxml/etree.pyx":3156
+      /* "lxml/etree.pyx":3167
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, HTMLParser):             # <<<<<<<<<<<<<<
@@ -81140,7 +81471,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  */
     }
 
-    /* "lxml/etree.pyx":3154
+    /* "lxml/etree.pyx":3165
  *     """
  *     cdef _Document doc
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -81149,7 +81480,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  */
   }
 
-  /* "lxml/etree.pyx":3158
+  /* "lxml/etree.pyx":3169
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81165,19 +81496,19 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":3159
+      /* "lxml/etree.pyx":3170
  *             parser = __DEFAULT_HTML_PARSER
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
-      __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, 3159, __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, 3170, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":3160
+      /* "lxml/etree.pyx":3171
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()             # <<<<<<<<<<<<<<
@@ -81185,13 +81516,13 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  *         return result_container.result
  */
       __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, 3160, __pyx_L5_error)
+      __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3171, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_r = __pyx_t_3;
       __pyx_t_3 = 0;
       goto __pyx_L9_try_return;
 
-      /* "lxml/etree.pyx":3158
+      /* "lxml/etree.pyx":3169
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81202,7 +81533,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     __pyx_L5_error:;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":3161
+    /* "lxml/etree.pyx":3172
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -81210,7 +81541,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  * 
  */
     __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
-    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3161, __pyx_L7_except_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3172, __pyx_L7_except_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_9);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -81218,14 +81549,14 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
     if (__pyx_t_10) {
       __Pyx_AddTraceback("lxml.etree.HTML", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3161, __pyx_L7_except_error)
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3172, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_7);
       __pyx_v_result_container = __pyx_t_7;
 
-      /* "lxml/etree.pyx":3162
+      /* "lxml/etree.pyx":3173
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  *         return result_container.result             # <<<<<<<<<<<<<<
@@ -81233,7 +81564,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
  * 
  */
       __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, 3162, __pyx_L7_except_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3173, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_r = __pyx_t_9;
       __pyx_t_9 = 0;
@@ -81245,7 +81576,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     goto __pyx_L7_except_error;
     __pyx_L7_except_error:;
 
-    /* "lxml/etree.pyx":3158
+    /* "lxml/etree.pyx":3169
  *         if not isinstance(parser, HTMLParser):
  *             parser = __DEFAULT_HTML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81271,7 +81602,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":3139
+  /* "lxml/etree.pyx":3150
  * 
  * 
  * def HTML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81296,7 +81627,7 @@ static PyObject *__pyx_pf_4lxml_5etree_18HTML(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3165
+/* "lxml/etree.pyx":3176
  * 
  * 
  * def XML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81349,7 +81680,7 @@ static PyObject *__pyx_pw_4lxml_5etree_21XML(PyObject *__pyx_self, PyObject *__p
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 3165, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 3176, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -81366,13 +81697,13 @@ static PyObject *__pyx_pw_4lxml_5etree_21XML(PyObject *__pyx_self, PyObject *__p
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3165, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3176, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.XML", __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(0, 3165, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3176, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_20XML(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
 
   /* function exit code */
@@ -81402,7 +81733,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   __Pyx_RefNannySetupContext("XML", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "lxml/etree.pyx":3185
+  /* "lxml/etree.pyx":3196
  *     """
  *     cdef _Document doc
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -81413,19 +81744,19 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3186
+    /* "lxml/etree.pyx":3197
  *     cdef _Document doc
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER
  */
-    __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, 3186, __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, 3197, __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;
 
-    /* "lxml/etree.pyx":3187
+    /* "lxml/etree.pyx":3198
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, XMLParser):             # <<<<<<<<<<<<<<
@@ -81436,7 +81767,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/etree.pyx":3188
+      /* "lxml/etree.pyx":3199
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER             # <<<<<<<<<<<<<<
@@ -81446,7 +81777,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
       __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));
 
-      /* "lxml/etree.pyx":3187
+      /* "lxml/etree.pyx":3198
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *         if not isinstance(parser, XMLParser):             # <<<<<<<<<<<<<<
@@ -81455,7 +81786,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  */
     }
 
-    /* "lxml/etree.pyx":3185
+    /* "lxml/etree.pyx":3196
  *     """
  *     cdef _Document doc
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -81464,7 +81795,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  */
   }
 
-  /* "lxml/etree.pyx":3189
+  /* "lxml/etree.pyx":3200
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81480,19 +81811,19 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":3190
+      /* "lxml/etree.pyx":3201
  *             parser = __DEFAULT_XML_PARSER
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
-      __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, 3190, __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, 3201, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/etree.pyx":3191
+      /* "lxml/etree.pyx":3202
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()             # <<<<<<<<<<<<<<
@@ -81500,13 +81831,13 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  *         return result_container.result
  */
       __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, 3191, __pyx_L5_error)
+      __pyx_t_3 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3202, __pyx_L5_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_r = __pyx_t_3;
       __pyx_t_3 = 0;
       goto __pyx_L9_try_return;
 
-      /* "lxml/etree.pyx":3189
+      /* "lxml/etree.pyx":3200
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81517,7 +81848,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     __pyx_L5_error:;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/etree.pyx":3192
+    /* "lxml/etree.pyx":3203
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -81525,7 +81856,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  * 
  */
     __Pyx_ErrFetch(&__pyx_t_3, &__pyx_t_7, &__pyx_t_8);
-    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3192, __pyx_L7_except_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_9, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3203, __pyx_L7_except_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_10 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_3, __pyx_t_9);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
@@ -81533,14 +81864,14 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     __pyx_t_3 = 0; __pyx_t_7 = 0; __pyx_t_8 = 0;
     if (__pyx_t_10) {
       __Pyx_AddTraceback("lxml.etree.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3192, __pyx_L7_except_error)
+      if (__Pyx_GetException(&__pyx_t_8, &__pyx_t_7, &__pyx_t_3) < 0) __PYX_ERR(0, 3203, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_INCREF(__pyx_t_7);
       __pyx_v_result_container = __pyx_t_7;
 
-      /* "lxml/etree.pyx":3193
+      /* "lxml/etree.pyx":3204
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  *         return result_container.result             # <<<<<<<<<<<<<<
@@ -81548,7 +81879,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
  * 
  */
       __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, 3193, __pyx_L7_except_error)
+      __pyx_t_9 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 3204, __pyx_L7_except_error)
       __Pyx_GOTREF(__pyx_t_9);
       __pyx_r = __pyx_t_9;
       __pyx_t_9 = 0;
@@ -81560,7 +81891,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     goto __pyx_L7_except_error;
     __pyx_L7_except_error:;
 
-    /* "lxml/etree.pyx":3189
+    /* "lxml/etree.pyx":3200
  *         if not isinstance(parser, XMLParser):
  *             parser = __DEFAULT_XML_PARSER
  *     try:             # <<<<<<<<<<<<<<
@@ -81586,7 +81917,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":3165
+  /* "lxml/etree.pyx":3176
  * 
  * 
  * def XML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81611,7 +81942,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20XML(CYTHON_UNUSED PyObject *__pyx_self,
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3196
+/* "lxml/etree.pyx":3207
  * 
  * 
  * def fromstring(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81664,7 +81995,7 @@ static PyObject *__pyx_pw_4lxml_5etree_23fromstring(PyObject *__pyx_self, PyObje
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 3196, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 3207, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -81681,13 +82012,13 @@ static PyObject *__pyx_pw_4lxml_5etree_23fromstring(PyObject *__pyx_self, PyObje
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3196, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3207, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.fromstring", __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(0, 3196, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3207, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_22fromstring(__pyx_self, __pyx_v_text, __pyx_v_parser, __pyx_v_base_url);
 
   /* function exit code */
@@ -81714,7 +82045,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("fromstring", 0);
 
-  /* "lxml/etree.pyx":3210
+  /* "lxml/etree.pyx":3221
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -81730,19 +82061,19 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":3211
+      /* "lxml/etree.pyx":3222
  *     cdef _Document doc
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)             # <<<<<<<<<<<<<<
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  */
-      __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, 3211, __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, 3222, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/etree.pyx":3212
+      /* "lxml/etree.pyx":3223
  *     try:
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()             # <<<<<<<<<<<<<<
@@ -81750,13 +82081,13 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  *         return result_container.result
  */
       __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, 3212, __pyx_L3_error)
+      __pyx_t_4 = __pyx_f_4lxml_5etree_9_Document_getroot(__pyx_v_doc); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3223, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_r = __pyx_t_4;
       __pyx_t_4 = 0;
       goto __pyx_L7_try_return;
 
-      /* "lxml/etree.pyx":3210
+      /* "lxml/etree.pyx":3221
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -81767,7 +82098,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":3213
+    /* "lxml/etree.pyx":3224
  *         doc = _parseMemoryDocument(text, base_url, parser)
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -81775,7 +82106,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  * 
  */
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3213, __pyx_L5_except_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3224, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -81783,14 +82114,14 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
     __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
     if (__pyx_t_8) {
       __Pyx_AddTraceback("lxml.etree.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 3213, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 3224, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_v_result_container = __pyx_t_5;
 
-      /* "lxml/etree.pyx":3214
+      /* "lxml/etree.pyx":3225
  *         return doc.getroot()
  *     except _TargetParserResult as result_container:
  *         return result_container.result             # <<<<<<<<<<<<<<
@@ -81798,7 +82129,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
  * 
  */
       __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, 3214, __pyx_L5_except_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3225, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_r = __pyx_t_7;
       __pyx_t_7 = 0;
@@ -81810,7 +82141,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
 
-    /* "lxml/etree.pyx":3210
+    /* "lxml/etree.pyx":3221
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -81836,7 +82167,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":3196
+  /* "lxml/etree.pyx":3207
  * 
  * 
  * def fromstring(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -81860,7 +82191,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22fromstring(CYTHON_UNUSED PyObject *__py
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3217
+/* "lxml/etree.pyx":3228
  * 
  * 
  * def fromstringlist(strings, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -81906,7 +82237,7 @@ static PyObject *__pyx_pw_4lxml_5etree_25fromstringlist(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstringlist") < 0)) __PYX_ERR(0, 3217, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstringlist") < 0)) __PYX_ERR(0, 3228, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -81922,13 +82253,13 @@ static PyObject *__pyx_pw_4lxml_5etree_25fromstringlist(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("fromstringlist", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3217, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("fromstringlist", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3228, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.fromstringlist", __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(0, 3217, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3228, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_24fromstringlist(__pyx_self, __pyx_v_strings, __pyx_v_parser);
 
   /* function exit code */
@@ -81957,7 +82288,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   __Pyx_RefNannySetupContext("fromstringlist", 0);
   __Pyx_INCREF((PyObject *)__pyx_v_parser);
 
-  /* "lxml/etree.pyx":3227
+  /* "lxml/etree.pyx":3238
  *     """
  *     cdef _Document doc
  *     if isinstance(strings, (bytes, unicode)):             # <<<<<<<<<<<<<<
@@ -81978,20 +82309,20 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":3228
+    /* "lxml/etree.pyx":3239
  *     cdef _Document doc
  *     if isinstance(strings, (bytes, unicode)):
  *         raise ValueError("passing a single string into fromstringlist() is not"             # <<<<<<<<<<<<<<
  *                          " efficient, use fromstring() instead")
  *     if parser is None:
  */
-    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3228, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__48, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3239, __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;
-    __PYX_ERR(0, 3228, __pyx_L1_error)
+    __PYX_ERR(0, 3239, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3227
+    /* "lxml/etree.pyx":3238
  *     """
  *     cdef _Document doc
  *     if isinstance(strings, (bytes, unicode)):             # <<<<<<<<<<<<<<
@@ -82000,7 +82331,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/etree.pyx":3230
+  /* "lxml/etree.pyx":3241
  *         raise ValueError("passing a single string into fromstringlist() is not"
  *                          " efficient, use fromstring() instead")
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -82011,19 +82342,19 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3231
+    /* "lxml/etree.pyx":3242
  *                          " efficient, use fromstring() instead")
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()             # <<<<<<<<<<<<<<
  *     feed = parser.feed
  *     for data in strings:
  */
-    __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, 3231, __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, 3242, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_parser, ((struct __pyx_obj_4lxml_5etree__BaseParser *)__pyx_t_4));
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":3230
+    /* "lxml/etree.pyx":3241
  *         raise ValueError("passing a single string into fromstringlist() is not"
  *                          " efficient, use fromstring() instead")
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -82032,19 +82363,19 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/etree.pyx":3232
+  /* "lxml/etree.pyx":3243
  *     if parser is None:
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     feed = parser.feed             # <<<<<<<<<<<<<<
  *     for data in strings:
  *         feed(data)
  */
-  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_feed); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3232, __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, 3243, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_v_feed = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":3233
+  /* "lxml/etree.pyx":3244
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     feed = parser.feed
  *     for data in strings:             # <<<<<<<<<<<<<<
@@ -82055,26 +82386,26 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
     __pyx_t_4 = __pyx_v_strings; __Pyx_INCREF(__pyx_t_4); __pyx_t_5 = 0;
     __pyx_t_6 = NULL;
   } else {
-    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_strings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3233, __pyx_L1_error)
+    __pyx_t_5 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_v_strings); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3244, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
-    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3233, __pyx_L1_error)
+    __pyx_t_6 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3244, __pyx_L1_error)
   }
   for (;;) {
     if (likely(!__pyx_t_6)) {
       if (likely(PyList_CheckExact(__pyx_t_4))) {
         if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3233, __pyx_L1_error)
+        __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3244, __pyx_L1_error)
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3233, __pyx_L1_error)
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3244, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         #endif
       } else {
         if (__pyx_t_5 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3233, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_5); __Pyx_INCREF(__pyx_t_7); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 3244, __pyx_L1_error)
         #else
-        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3233, __pyx_L1_error)
+        __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3244, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         #endif
       }
@@ -82084,7 +82415,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 3233, __pyx_L1_error)
+          else __PYX_ERR(0, 3244, __pyx_L1_error)
         }
         break;
       }
@@ -82093,7 +82424,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
     __Pyx_XDECREF_SET(__pyx_v_data, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "lxml/etree.pyx":3234
+    /* "lxml/etree.pyx":3245
  *     feed = parser.feed
  *     for data in strings:
  *         feed(data)             # <<<<<<<<<<<<<<
@@ -82113,12 +82444,12 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
     }
     __pyx_t_7 = (__pyx_t_9) ? __Pyx_PyObject_Call2Args(__pyx_t_8, __pyx_t_9, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_8, __pyx_v_data);
     __Pyx_XDECREF(__pyx_t_9); __pyx_t_9 = 0;
-    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3234, __pyx_L1_error)
+    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3245, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-    /* "lxml/etree.pyx":3233
+    /* "lxml/etree.pyx":3244
  *         parser = __GLOBAL_PARSER_CONTEXT.getDefaultParser()
  *     feed = parser.feed
  *     for data in strings:             # <<<<<<<<<<<<<<
@@ -82128,7 +82459,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   }
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":3235
+  /* "lxml/etree.pyx":3246
  *     for data in strings:
  *         feed(data)
  *     return parser.close()             # <<<<<<<<<<<<<<
@@ -82136,7 +82467,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
  * 
  */
   __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, 3235, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_parser), __pyx_n_s_close); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3246, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __pyx_t_8 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_7))) {
@@ -82150,14 +82481,14 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   }
   __pyx_t_4 = (__pyx_t_8) ? __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_t_8) : __Pyx_PyObject_CallNoArg(__pyx_t_7);
   __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3235, __pyx_L1_error)
+  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3246, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __pyx_r = __pyx_t_4;
   __pyx_t_4 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3217
+  /* "lxml/etree.pyx":3228
  * 
  * 
  * def fromstringlist(strings, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -82182,7 +82513,7 @@ static PyObject *__pyx_pf_4lxml_5etree_24fromstringlist(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3238
+/* "lxml/etree.pyx":3249
  * 
  * 
  * def iselement(element):             # <<<<<<<<<<<<<<
@@ -82213,7 +82544,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("iselement", 0);
 
-  /* "lxml/etree.pyx":3243
+  /* "lxml/etree.pyx":3254
  *     Checks if an object appears to be a valid element object.
  *     """
  *     return isinstance(element, _Element) and (<_Element>element)._c_node is not NULL             # <<<<<<<<<<<<<<
@@ -82224,14 +82555,14 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_2 = __Pyx_TypeCheck(__pyx_v_element, __pyx_ptype_4lxml_5etree__Element); 
   if (__pyx_t_2) {
   } else {
-    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3243, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3254, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_1 = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L3_bool_binop_done;
   }
   __pyx_t_2 = (((struct LxmlElement *)__pyx_v_element)->_c_node != NULL);
-  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3243, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3254, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = __pyx_t_3;
   __pyx_t_3 = 0;
@@ -82240,7 +82571,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3238
+  /* "lxml/etree.pyx":3249
  * 
  * 
  * def iselement(element):             # <<<<<<<<<<<<<<
@@ -82260,7 +82591,7 @@ static PyObject *__pyx_pf_4lxml_5etree_26iselement(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3246
+/* "lxml/etree.pyx":3257
  * 
  * 
  * def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
@@ -82306,7 +82637,7 @@ static PyObject *__pyx_pw_4lxml_5etree_29dump(PyObject *__pyx_self, PyObject *__
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dump") < 0)) __PYX_ERR(0, 3246, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "dump") < 0)) __PYX_ERR(0, 3257, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -82315,7 +82646,7 @@ static PyObject *__pyx_pw_4lxml_5etree_29dump(PyObject *__pyx_self, PyObject *__
     }
     __pyx_v_elem = ((struct LxmlElement *)values[0]);
     if (values[1]) {
-      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3246, __pyx_L3_error)
+      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3257, __pyx_L3_error)
     } else {
       __pyx_v_pretty_print = ((int)((int)1));
     }
@@ -82323,13 +82654,13 @@ static PyObject *__pyx_pw_4lxml_5etree_29dump(PyObject *__pyx_self, PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("dump", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3246, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("dump", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3257, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.dump", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
   return NULL;
   __pyx_L4_argument_unpacking_done:;
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_elem), __pyx_ptype_4lxml_5etree__Element, 0, "elem", 0))) __PYX_ERR(0, 3246, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_elem), __pyx_ptype_4lxml_5etree__Element, 0, "elem", 0))) __PYX_ERR(0, 3257, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_28dump(__pyx_self, __pyx_v_elem, __pyx_v_pretty_print, __pyx_v_with_tail);
 
   /* function exit code */
@@ -82352,29 +82683,29 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("dump", 0);
 
-  /* "lxml/etree.pyx":3252
+  /* "lxml/etree.pyx":3263
  *     should be used for debugging only.
  *     """
  *     xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,             # <<<<<<<<<<<<<<
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3252, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3252, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(((PyObject *)__pyx_v_elem));
   __Pyx_GIVEREF(((PyObject *)__pyx_v_elem));
   PyTuple_SET_ITEM(__pyx_t_2, 0, ((PyObject *)__pyx_v_elem));
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3252, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
-  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_pretty_print); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3252, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyBool_FromLong(__pyx_v_pretty_print); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_pretty_print, __pyx_t_4) < 0) __PYX_ERR(0, 3252, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_pretty_print, __pyx_t_4) < 0) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_with_tail, __pyx_v_with_tail) < 0) __PYX_ERR(0, 3252, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_with_tail, __pyx_v_with_tail) < 0) __PYX_ERR(0, 3263, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3253
+  /* "lxml/etree.pyx":3264
  *     """
  *     xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')             # <<<<<<<<<<<<<<
@@ -82388,17 +82719,17 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
     __Pyx_INCREF(__pyx_n_s_unicode);
     __pyx_t_4 = __pyx_n_s_unicode;
   }
-  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_t_4) < 0) __PYX_ERR(0, 3252, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_3, __pyx_n_s_encoding, __pyx_t_4) < 0) __PYX_ERR(0, 3263, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":3252
+  /* "lxml/etree.pyx":3263
  *     should be used for debugging only.
  *     """
  *     xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,             # <<<<<<<<<<<<<<
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:
  */
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_2, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3252, __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, 3263, __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;
@@ -82406,7 +82737,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_v_xml = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":3254
+  /* "lxml/etree.pyx":3265
  *     xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:             # <<<<<<<<<<<<<<
@@ -82416,19 +82747,19 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   __pyx_t_5 = ((!(__pyx_v_pretty_print != 0)) != 0);
   if (__pyx_t_5) {
 
-    /* "lxml/etree.pyx":3255
+    /* "lxml/etree.pyx":3266
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:
  *         xml += '\n'             # <<<<<<<<<<<<<<
  *     sys.stdout.write(xml)
  * 
  */
-    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, __pyx_kp_s__18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3255, __pyx_L1_error)
+    __pyx_t_4 = PyNumber_InPlaceAdd(__pyx_v_xml, __pyx_kp_s__18); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3266, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF_SET(__pyx_v_xml, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":3254
+    /* "lxml/etree.pyx":3265
  *     xml = tostring(elem, pretty_print=pretty_print, with_tail=with_tail,
  *                    encoding=None if python.IS_PYTHON2 else 'unicode')
  *     if not pretty_print:             # <<<<<<<<<<<<<<
@@ -82437,16 +82768,16 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
  */
   }
 
-  /* "lxml/etree.pyx":3256
+  /* "lxml/etree.pyx":3267
  *     if not pretty_print:
  *         xml += '\n'
  *     sys.stdout.write(xml)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_sys, __pyx_n_s_stdout); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3256, __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, 3267, __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, 3256, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_t_3, __pyx_n_s_write); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_3 = NULL;
@@ -82461,12 +82792,12 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   }
   __pyx_t_4 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_xml) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_xml);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3256, __pyx_L1_error)
+  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/etree.pyx":3246
+  /* "lxml/etree.pyx":3257
  * 
  * 
  * def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
@@ -82491,7 +82822,7 @@ static PyObject *__pyx_pf_4lxml_5etree_28dump(CYTHON_UNUSED PyObject *__pyx_self
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3259
+/* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
@@ -82524,7 +82855,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
     values[1] = ((PyObject *)((PyObject *)Py_None));
     values[2] = ((PyObject *)((PyObject*)__pyx_n_s_xml));
 
-    /* "lxml/etree.pyx":3260
+    /* "lxml/etree.pyx":3271
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,             # <<<<<<<<<<<<<<
@@ -82533,7 +82864,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
  */
     values[3] = ((PyObject *)((PyObject *)Py_None));
 
-    /* "lxml/etree.pyx":3261
+    /* "lxml/etree.pyx":3272
  * def tostring(element_or_tree, *, encoding=None, method="xml",
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,             # <<<<<<<<<<<<<<
@@ -82543,7 +82874,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
     values[6] = ((PyObject *)((PyObject *)Py_None));
     values[7] = ((PyObject *)((PyObject *)Py_None));
 
-    /* "lxml/etree.pyx":3262
+    /* "lxml/etree.pyx":3273
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  *              bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None):             # <<<<<<<<<<<<<<
@@ -82574,7 +82905,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tostring") < 0)) __PYX_ERR(0, 3259, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tostring") < 0)) __PYX_ERR(0, 3270, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -82586,10 +82917,10 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
     __pyx_v_method = values[2];
     __pyx_v_xml_declaration = values[3];
     if (values[4]) {
-      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3260, __pyx_L3_error)
+      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3271, __pyx_L3_error)
     } else {
 
-      /* "lxml/etree.pyx":3260
+      /* "lxml/etree.pyx":3271
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,             # <<<<<<<<<<<<<<
@@ -82599,17 +82930,17 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
       __pyx_v_pretty_print = ((int)((int)0));
     }
     if (values[5]) {
-      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3260, __pyx_L3_error)
+      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[5]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3271, __pyx_L3_error)
     } else {
       __pyx_v_with_tail = ((int)((int)1));
     }
     __pyx_v_standalone = values[6];
     __pyx_v_doctype = values[7];
     if (values[8]) {
-      __pyx_v_exclusive = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_exclusive == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3262, __pyx_L3_error)
+      __pyx_v_exclusive = __Pyx_PyObject_IsTrue(values[8]); if (unlikely((__pyx_v_exclusive == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3273, __pyx_L3_error)
     } else {
 
-      /* "lxml/etree.pyx":3262
+      /* "lxml/etree.pyx":3273
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  *              bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None):             # <<<<<<<<<<<<<<
@@ -82619,7 +82950,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
       __pyx_v_exclusive = ((int)((int)0));
     }
     if (values[9]) {
-      __pyx_v_with_comments = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_with_comments == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3262, __pyx_L3_error)
+      __pyx_v_with_comments = __Pyx_PyObject_IsTrue(values[9]); if (unlikely((__pyx_v_with_comments == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3273, __pyx_L3_error)
     } else {
       __pyx_v_with_comments = ((int)((int)1));
     }
@@ -82627,7 +82958,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("tostring", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3259, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("tostring", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3270, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.tostring", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -82635,7 +82966,7 @@ static PyObject *__pyx_pw_4lxml_5etree_31tostring(PyObject *__pyx_self, PyObject
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_30tostring(__pyx_self, __pyx_v_element_or_tree, __pyx_v_encoding, __pyx_v_method, __pyx_v_xml_declaration, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_standalone, __pyx_v_doctype, __pyx_v_exclusive, __pyx_v_with_comments, __pyx_v_inclusive_ns_prefixes);
 
-  /* "lxml/etree.pyx":3259
+  /* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
@@ -82665,17 +82996,17 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __Pyx_RefNannySetupContext("tostring", 0);
   __Pyx_INCREF(__pyx_v_encoding);
 
-  /* "lxml/etree.pyx":3308
+  /* "lxml/etree.pyx":3319
  *     cdef int is_standalone
  *     # C14N serialisation
  *     if method == 'c14n':             # <<<<<<<<<<<<<<
  *         if encoding is not None:
  *             raise ValueError("Cannot specify encoding with C14N")
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_method, __pyx_n_s_c14n, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3308, __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, 3319, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3309
+    /* "lxml/etree.pyx":3320
  *     # C14N serialisation
  *     if method == 'c14n':
  *         if encoding is not None:             # <<<<<<<<<<<<<<
@@ -82686,20 +83017,20 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":3310
+      /* "lxml/etree.pyx":3321
  *     if method == 'c14n':
  *         if encoding is not None:
  *             raise ValueError("Cannot specify encoding with C14N")             # <<<<<<<<<<<<<<
  *         if xml_declaration:
  *             raise ValueError("Cannot enable XML declaration in C14N")
  */
-      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3310, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__32, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3321, __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(0, 3310, __pyx_L1_error)
+      __PYX_ERR(0, 3321, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3309
+      /* "lxml/etree.pyx":3320
  *     # C14N serialisation
  *     if method == 'c14n':
  *         if encoding is not None:             # <<<<<<<<<<<<<<
@@ -82708,30 +83039,30 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     }
 
-    /* "lxml/etree.pyx":3311
+    /* "lxml/etree.pyx":3322
  *         if encoding is not None:
  *             raise ValueError("Cannot specify encoding with C14N")
  *         if xml_declaration:             # <<<<<<<<<<<<<<
  *             raise ValueError("Cannot enable XML declaration in C14N")
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3311, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3322, __pyx_L1_error)
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":3312
+      /* "lxml/etree.pyx":3323
  *             raise ValueError("Cannot specify encoding with C14N")
  *         if xml_declaration:
  *             raise ValueError("Cannot enable XML declaration in C14N")             # <<<<<<<<<<<<<<
  *         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__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3312, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__33, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3323, __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(0, 3312, __pyx_L1_error)
+      __PYX_ERR(0, 3323, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3311
+      /* "lxml/etree.pyx":3322
  *         if encoding is not None:
  *             raise ValueError("Cannot specify encoding with C14N")
  *         if xml_declaration:             # <<<<<<<<<<<<<<
@@ -82740,7 +83071,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     }
 
-    /* "lxml/etree.pyx":3313
+    /* "lxml/etree.pyx":3324
  *         if xml_declaration:
  *             raise ValueError("Cannot enable XML declaration in C14N")
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)             # <<<<<<<<<<<<<<
@@ -82748,13 +83079,13 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         raise ValueError("Can only discard comments in C14N serialisation")
  */
     __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, 3313, __pyx_L1_error)
+    __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, 3324, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":3308
+    /* "lxml/etree.pyx":3319
  *     cdef int is_standalone
  *     # C14N serialisation
  *     if method == 'c14n':             # <<<<<<<<<<<<<<
@@ -82763,7 +83094,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
   }
 
-  /* "lxml/etree.pyx":3314
+  /* "lxml/etree.pyx":3325
  *             raise ValueError("Cannot enable XML declaration in C14N")
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  *     if not with_comments:             # <<<<<<<<<<<<<<
@@ -82773,20 +83104,20 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_2 = ((!(__pyx_v_with_comments != 0)) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/etree.pyx":3315
+    /* "lxml/etree.pyx":3326
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  *     if not with_comments:
  *         raise ValueError("Can only discard comments in C14N serialisation")             # <<<<<<<<<<<<<<
  *     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__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3315, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_Call(__pyx_builtin_ValueError, __pyx_tuple__34, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3326, __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(0, 3315, __pyx_L1_error)
+    __PYX_ERR(0, 3326, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3314
+    /* "lxml/etree.pyx":3325
  *             raise ValueError("Cannot enable XML declaration in C14N")
  *         return _tostringC14N(element_or_tree, exclusive, with_comments, inclusive_ns_prefixes)
  *     if not with_comments:             # <<<<<<<<<<<<<<
@@ -82795,7 +83126,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
   }
 
-  /* "lxml/etree.pyx":3316
+  /* "lxml/etree.pyx":3327
  *     if not with_comments:
  *         raise ValueError("Can only discard comments in C14N serialisation")
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):             # <<<<<<<<<<<<<<
@@ -82816,7 +83147,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L8_bool_binop_done;
   }
-  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3316, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_lower); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -82830,26 +83161,26 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   }
   __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
   __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3316, __pyx_L1_error)
+  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_unicode, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3316, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_t_3, __pyx_n_s_unicode, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3327, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_2 = __pyx_t_1;
   __pyx_L8_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3317
+    /* "lxml/etree.pyx":3328
  *         raise ValueError("Can only discard comments in C14N serialisation")
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  *         if xml_declaration:             # <<<<<<<<<<<<<<
  *             raise ValueError, \
  *                 u"Serialisation to unicode must not request an XML declaration"
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3317, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3328, __pyx_L1_error)
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/etree.pyx":3318
+      /* "lxml/etree.pyx":3329
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  *         if xml_declaration:
  *             raise ValueError, \             # <<<<<<<<<<<<<<
@@ -82857,9 +83188,9 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         write_declaration = 0
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Serialisation_to_unicode_must_no, 0, 0);
-      __PYX_ERR(0, 3318, __pyx_L1_error)
+      __PYX_ERR(0, 3329, __pyx_L1_error)
 
-      /* "lxml/etree.pyx":3317
+      /* "lxml/etree.pyx":3328
  *         raise ValueError("Can only discard comments in C14N serialisation")
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):
  *         if xml_declaration:             # <<<<<<<<<<<<<<
@@ -82868,7 +83199,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     }
 
-    /* "lxml/etree.pyx":3320
+    /* "lxml/etree.pyx":3331
  *             raise ValueError, \
  *                 u"Serialisation to unicode must not request an XML declaration"
  *         write_declaration = 0             # <<<<<<<<<<<<<<
@@ -82877,7 +83208,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     __pyx_v_write_declaration = 0;
 
-    /* "lxml/etree.pyx":3321
+    /* "lxml/etree.pyx":3332
  *                 u"Serialisation to unicode must not request an XML declaration"
  *         write_declaration = 0
  *         encoding = unicode             # <<<<<<<<<<<<<<
@@ -82887,7 +83218,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
     __Pyx_DECREF_SET(__pyx_v_encoding, ((PyObject *)(&PyUnicode_Type)));
 
-    /* "lxml/etree.pyx":3316
+    /* "lxml/etree.pyx":3327
  *     if not with_comments:
  *         raise ValueError("Can only discard comments in C14N serialisation")
  *     if encoding is unicode or (encoding is not None and encoding.lower() == 'unicode'):             # <<<<<<<<<<<<<<
@@ -82897,7 +83228,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     goto __pyx_L7;
   }
 
-  /* "lxml/etree.pyx":3322
+  /* "lxml/etree.pyx":3333
  *         write_declaration = 0
  *         encoding = unicode
  *     elif xml_declaration is None:             # <<<<<<<<<<<<<<
@@ -82908,7 +83239,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3324
+    /* "lxml/etree.pyx":3335
  *     elif xml_declaration is None:
  *         # by default, write an XML declaration only for non-standard encodings
  *         write_declaration = encoding is not None and encoding.upper() not in \             # <<<<<<<<<<<<<<
@@ -82922,7 +83253,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
       __pyx_t_1 = __pyx_t_4;
       goto __pyx_L12_bool_binop_done;
     }
-    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_encoding, __pyx_n_s_upper); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3335, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_6 = NULL;
     if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -82936,28 +83267,28 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     }
     __pyx_t_3 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3335, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_ASCII, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_ASCII, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3335, __pyx_L1_error)
     if (__pyx_t_2) {
     } else {
       __pyx_t_4 = __pyx_t_2;
       goto __pyx_L14_bool_binop_done;
     }
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_UTF_8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_UTF_8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3335, __pyx_L1_error)
     if (__pyx_t_2) {
     } else {
       __pyx_t_4 = __pyx_t_2;
       goto __pyx_L14_bool_binop_done;
     }
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_UTF8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_n_u_UTF8, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3335, __pyx_L1_error)
     if (__pyx_t_2) {
     } else {
       __pyx_t_4 = __pyx_t_2;
       goto __pyx_L14_bool_binop_done;
     }
-    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_US_ASCII, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3324, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_t_3, __pyx_kp_u_US_ASCII, Py_NE)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 3335, __pyx_L1_error)
     __pyx_t_4 = __pyx_t_2;
     __pyx_L14_bool_binop_done:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -82966,7 +83297,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __pyx_L12_bool_binop_done:;
     __pyx_v_write_declaration = __pyx_t_1;
 
-    /* "lxml/etree.pyx":3322
+    /* "lxml/etree.pyx":3333
  *         write_declaration = 0
  *         encoding = unicode
  *     elif xml_declaration is None:             # <<<<<<<<<<<<<<
@@ -82976,7 +83307,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     goto __pyx_L7;
   }
 
-  /* "lxml/etree.pyx":3327
+  /* "lxml/etree.pyx":3338
  *                             (u'ASCII', u'UTF-8', u'UTF8', u'US-ASCII')
  *     else:
  *         write_declaration = xml_declaration             # <<<<<<<<<<<<<<
@@ -82984,12 +83315,12 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  *         encoding = u'ASCII'
  */
   /*else*/ {
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3327, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_xml_declaration); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3338, __pyx_L1_error)
     __pyx_v_write_declaration = __pyx_t_1;
   }
   __pyx_L7:;
 
-  /* "lxml/etree.pyx":3328
+  /* "lxml/etree.pyx":3339
  *     else:
  *         write_declaration = xml_declaration
  *     if encoding is None:             # <<<<<<<<<<<<<<
@@ -83000,7 +83331,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3329
+    /* "lxml/etree.pyx":3340
  *         write_declaration = xml_declaration
  *     if encoding is None:
  *         encoding = u'ASCII'             # <<<<<<<<<<<<<<
@@ -83010,7 +83341,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __Pyx_INCREF(__pyx_n_u_ASCII);
     __Pyx_DECREF_SET(__pyx_v_encoding, __pyx_n_u_ASCII);
 
-    /* "lxml/etree.pyx":3328
+    /* "lxml/etree.pyx":3339
  *     else:
  *         write_declaration = xml_declaration
  *     if encoding is None:             # <<<<<<<<<<<<<<
@@ -83019,7 +83350,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
   }
 
-  /* "lxml/etree.pyx":3330
+  /* "lxml/etree.pyx":3341
  *     if encoding is None:
  *         encoding = u'ASCII'
  *     if standalone is None:             # <<<<<<<<<<<<<<
@@ -83030,7 +83361,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3331
+    /* "lxml/etree.pyx":3342
  *         encoding = u'ASCII'
  *     if standalone is None:
  *         is_standalone = -1             # <<<<<<<<<<<<<<
@@ -83039,7 +83370,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     __pyx_v_is_standalone = -1;
 
-    /* "lxml/etree.pyx":3330
+    /* "lxml/etree.pyx":3341
  *     if encoding is None:
  *         encoding = u'ASCII'
  *     if standalone is None:             # <<<<<<<<<<<<<<
@@ -83049,17 +83380,17 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     goto __pyx_L19;
   }
 
-  /* "lxml/etree.pyx":3332
+  /* "lxml/etree.pyx":3343
  *     if standalone is None:
  *         is_standalone = -1
  *     elif standalone:             # <<<<<<<<<<<<<<
  *         write_declaration = 1
  *         is_standalone = 1
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3332, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_standalone); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 3343, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/etree.pyx":3333
+    /* "lxml/etree.pyx":3344
  *         is_standalone = -1
  *     elif standalone:
  *         write_declaration = 1             # <<<<<<<<<<<<<<
@@ -83068,7 +83399,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     __pyx_v_write_declaration = 1;
 
-    /* "lxml/etree.pyx":3334
+    /* "lxml/etree.pyx":3345
  *     elif standalone:
  *         write_declaration = 1
  *         is_standalone = 1             # <<<<<<<<<<<<<<
@@ -83077,7 +83408,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     __pyx_v_is_standalone = 1;
 
-    /* "lxml/etree.pyx":3332
+    /* "lxml/etree.pyx":3343
  *     if standalone is None:
  *         is_standalone = -1
  *     elif standalone:             # <<<<<<<<<<<<<<
@@ -83087,7 +83418,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     goto __pyx_L19;
   }
 
-  /* "lxml/etree.pyx":3336
+  /* "lxml/etree.pyx":3347
  *         is_standalone = 1
  *     else:
  *         write_declaration = 1             # <<<<<<<<<<<<<<
@@ -83097,7 +83428,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   /*else*/ {
     __pyx_v_write_declaration = 1;
 
-    /* "lxml/etree.pyx":3337
+    /* "lxml/etree.pyx":3348
  *     else:
  *         write_declaration = 1
  *         is_standalone = 0             # <<<<<<<<<<<<<<
@@ -83108,7 +83439,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   }
   __pyx_L19:;
 
-  /* "lxml/etree.pyx":3339
+  /* "lxml/etree.pyx":3350
  *         is_standalone = 0
  * 
  *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
@@ -83119,7 +83450,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3340
+    /* "lxml/etree.pyx":3351
  * 
  *     if isinstance(element_or_tree, _Element):
  *         return _tostring(<_Element>element_or_tree, encoding, doctype, method,             # <<<<<<<<<<<<<<
@@ -83128,20 +83459,20 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
     __Pyx_XDECREF(__pyx_r);
 
-    /* "lxml/etree.pyx":3342
+    /* "lxml/etree.pyx":3353
  *         return _tostring(<_Element>element_or_tree, encoding, doctype, method,
  *                          write_declaration, 0, pretty_print, with_tail,
  *                          is_standalone)             # <<<<<<<<<<<<<<
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  */
-    __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, 3340, __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, 3351, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":3339
+    /* "lxml/etree.pyx":3350
  *         is_standalone = 0
  * 
  *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
@@ -83150,7 +83481,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
   }
 
-  /* "lxml/etree.pyx":3343
+  /* "lxml/etree.pyx":3354
  *                          write_declaration, 0, pretty_print, with_tail,
  *                          is_standalone)
  *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
@@ -83161,7 +83492,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
 
-    /* "lxml/etree.pyx":3344
+    /* "lxml/etree.pyx":3355
  *                          is_standalone)
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,             # <<<<<<<<<<<<<<
@@ -83172,21 +83503,21 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
     __Pyx_INCREF(__pyx_t_3);
 
-    /* "lxml/etree.pyx":3346
+    /* "lxml/etree.pyx":3357
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  *                          encoding, doctype, method, write_declaration, 1,
  *                          pretty_print, with_tail, is_standalone)             # <<<<<<<<<<<<<<
  *     else:
  *         raise TypeError, f"Type '{python._fqtypename(element_or_tree).decode('utf8')}' cannot be serialized."
  */
-    __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, 3344, __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, 3355, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_r = __pyx_t_5;
     __pyx_t_5 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":3343
+    /* "lxml/etree.pyx":3354
  *                          write_declaration, 0, pretty_print, with_tail,
  *                          is_standalone)
  *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
@@ -83195,7 +83526,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  */
   }
 
-  /* "lxml/etree.pyx":3348
+  /* "lxml/etree.pyx":3359
  *                          pretty_print, with_tail, is_standalone)
  *     else:
  *         raise TypeError, f"Type '{python._fqtypename(element_or_tree).decode('utf8')}' cannot be serialized."             # <<<<<<<<<<<<<<
@@ -83203,7 +83534,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
  * 
  */
   /*else*/ {
-    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3348, __pyx_L1_error)
+    __pyx_t_5 = PyTuple_New(3); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __pyx_t_7 = 0;
     __pyx_t_8 = 127;
@@ -83212,7 +83543,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __Pyx_GIVEREF(__pyx_kp_u_Type);
     PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_kp_u_Type);
     __pyx_t_9 = _fqtypename(__pyx_v_element_or_tree);
-    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3348, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_decode_c_string(__pyx_t_9, 0, strlen(__pyx_t_9), NULL, NULL, PyUnicode_DecodeUTF8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_8 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_8) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_8;
@@ -83224,15 +83555,15 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
     __pyx_t_7 += 23;
     __Pyx_GIVEREF(__pyx_kp_u_cannot_be_serialized);
     PyTuple_SET_ITEM(__pyx_t_5, 2, __pyx_kp_u_cannot_be_serialized);
-    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3348, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_5, 3, __pyx_t_7, __pyx_t_8); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 3348, __pyx_L1_error)
+    __PYX_ERR(0, 3359, __pyx_L1_error)
   }
 
-  /* "lxml/etree.pyx":3259
+  /* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
@@ -83254,7 +83585,7 @@ static PyObject *__pyx_pf_4lxml_5etree_30tostring(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3352
+/* "lxml/etree.pyx":3363
  * 
  * 
  * def tostringlist(element_or_tree, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -83306,7 +83637,7 @@ static PyObject *__pyx_pw_4lxml_5etree_33tostringlist(PyObject *__pyx_self, PyOb
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "tostringlist") < 0)) __PYX_ERR(0, 3352, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "tostringlist") < 0)) __PYX_ERR(0, 3363, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
       goto __pyx_L5_argtuple_error;
@@ -83317,7 +83648,7 @@ static PyObject *__pyx_pw_4lxml_5etree_33tostringlist(PyObject *__pyx_self, PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("tostringlist", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3352, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("tostringlist", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3363, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
@@ -83342,7 +83673,7 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("tostringlist", 0);
 
-  /* "lxml/etree.pyx":3361
+  /* "lxml/etree.pyx":3372
  *     single string wrapped in a list.
  *     """
  *     return [tostring(element_or_tree, *args, **kwargs)]             # <<<<<<<<<<<<<<
@@ -83350,21 +83681,21 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3361, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_tostring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3372, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3361, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3372, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_element_or_tree);
   __Pyx_GIVEREF(__pyx_v_element_or_tree);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_v_element_or_tree);
-  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3361, __pyx_L1_error)
+  __pyx_t_3 = PyNumber_Add(__pyx_t_2, __pyx_v_args); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3372, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3361, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_3, __pyx_v_kwargs); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3372, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3361, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3372, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_2);
   PyList_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
@@ -83373,7 +83704,7 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3352
+  /* "lxml/etree.pyx":3363
  * 
  * 
  * def tostringlist(element_or_tree, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -83394,7 +83725,7 @@ static PyObject *__pyx_pf_4lxml_5etree_32tostringlist(CYTHON_UNUSED PyObject *__
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3364
+/* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
@@ -83420,7 +83751,7 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
     PyObject* values[5] = {0,0,0,0,0};
     values[1] = ((PyObject *)((PyObject*)__pyx_n_u_xml));
 
-    /* "lxml/etree.pyx":3365
+    /* "lxml/etree.pyx":3376
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
  *               bint with_tail=True, doctype=None):             # <<<<<<<<<<<<<<
@@ -83451,7 +83782,7 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tounicode") < 0)) __PYX_ERR(0, 3364, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "tounicode") < 0)) __PYX_ERR(0, 3375, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -83461,10 +83792,10 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
     __pyx_v_element_or_tree = values[0];
     __pyx_v_method = values[1];
     if (values[2]) {
-      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3364, __pyx_L3_error)
+      __pyx_v_pretty_print = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_pretty_print == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3375, __pyx_L3_error)
     } else {
 
-      /* "lxml/etree.pyx":3364
+      /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
@@ -83474,10 +83805,10 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
       __pyx_v_pretty_print = ((int)((int)0));
     }
     if (values[3]) {
-      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3365, __pyx_L3_error)
+      __pyx_v_with_tail = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_with_tail == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3376, __pyx_L3_error)
     } else {
 
-      /* "lxml/etree.pyx":3365
+      /* "lxml/etree.pyx":3376
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
  *               bint with_tail=True, doctype=None):             # <<<<<<<<<<<<<<
@@ -83490,7 +83821,7 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("tounicode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3364, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("tounicode", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3375, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.tounicode", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -83498,7 +83829,7 @@ static PyObject *__pyx_pw_4lxml_5etree_35tounicode(PyObject *__pyx_self, PyObjec
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_5etree_34tounicode(__pyx_self, __pyx_v_element_or_tree, __pyx_v_method, __pyx_v_pretty_print, __pyx_v_with_tail, __pyx_v_doctype);
 
-  /* "lxml/etree.pyx":3364
+  /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
@@ -83522,7 +83853,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   Py_UCS4 __pyx_t_6;
   __Pyx_RefNannySetupContext("tounicode", 0);
 
-  /* "lxml/etree.pyx":3387
+  /* "lxml/etree.pyx":3398
  *     on the tail text of children, which will always be serialised.
  *     """
  *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
@@ -83533,7 +83864,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/etree.pyx":3388
+    /* "lxml/etree.pyx":3399
  *     """
  *     if isinstance(element_or_tree, _Element):
  *         return _tostring(<_Element>element_or_tree, unicode, doctype, method,             # <<<<<<<<<<<<<<
@@ -83542,20 +83873,20 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  */
     __Pyx_XDECREF(__pyx_r);
 
-    /* "lxml/etree.pyx":3389
+    /* "lxml/etree.pyx":3400
  *     if isinstance(element_or_tree, _Element):
  *         return _tostring(<_Element>element_or_tree, unicode, doctype, method,
  *                           0, 0, pretty_print, with_tail, -1)             # <<<<<<<<<<<<<<
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  */
-    __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, 3388, __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, 3399, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":3387
+    /* "lxml/etree.pyx":3398
  *     on the tail text of children, which will always be serialised.
  *     """
  *     if isinstance(element_or_tree, _Element):             # <<<<<<<<<<<<<<
@@ -83564,7 +83895,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  */
   }
 
-  /* "lxml/etree.pyx":3390
+  /* "lxml/etree.pyx":3401
  *         return _tostring(<_Element>element_or_tree, unicode, doctype, method,
  *                           0, 0, pretty_print, with_tail, -1)
  *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
@@ -83575,7 +83906,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
 
-    /* "lxml/etree.pyx":3391
+    /* "lxml/etree.pyx":3402
  *                           0, 0, pretty_print, with_tail, -1)
  *     elif isinstance(element_or_tree, _ElementTree):
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,             # <<<<<<<<<<<<<<
@@ -83586,21 +83917,21 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
     __pyx_t_3 = ((PyObject *)((struct LxmlElementTree *)__pyx_v_element_or_tree)->_context_node);
     __Pyx_INCREF(__pyx_t_3);
 
-    /* "lxml/etree.pyx":3393
+    /* "lxml/etree.pyx":3404
  *         return _tostring((<_ElementTree>element_or_tree)._context_node,
  *                          unicode, doctype, method, 0, 1, pretty_print,
  *                          with_tail, -1)             # <<<<<<<<<<<<<<
  *     else:
  *         raise TypeError, f"Type '{type(element_or_tree)}' cannot be serialized."
  */
-    __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, 3391, __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, 3402, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __pyx_r = __pyx_t_4;
     __pyx_t_4 = 0;
     goto __pyx_L0;
 
-    /* "lxml/etree.pyx":3390
+    /* "lxml/etree.pyx":3401
  *         return _tostring(<_Element>element_or_tree, unicode, doctype, method,
  *                           0, 0, pretty_print, with_tail, -1)
  *     elif isinstance(element_or_tree, _ElementTree):             # <<<<<<<<<<<<<<
@@ -83609,7 +83940,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  */
   }
 
-  /* "lxml/etree.pyx":3395
+  /* "lxml/etree.pyx":3406
  *                          with_tail, -1)
  *     else:
  *         raise TypeError, f"Type '{type(element_or_tree)}' cannot be serialized."             # <<<<<<<<<<<<<<
@@ -83617,7 +83948,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
  * 
  */
   /*else*/ {
-    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3395, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3406, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = 0;
     __pyx_t_6 = 127;
@@ -83625,7 +83956,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
     __pyx_t_5 += 6;
     __Pyx_GIVEREF(__pyx_kp_u_Type);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Type);
-    __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_element_or_tree)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3395, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_element_or_tree)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3406, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_6 = (__Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) > __pyx_t_6) ? __Pyx_PyUnicode_MAX_CHAR_VALUE(__pyx_t_3) : __pyx_t_6;
     __pyx_t_5 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_3);
@@ -83636,15 +83967,15 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
     __pyx_t_5 += 23;
     __Pyx_GIVEREF(__pyx_kp_u_cannot_be_serialized);
     PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u_cannot_be_serialized);
-    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3395, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3406, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_t_3, 0, 0);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-    __PYX_ERR(0, 3395, __pyx_L1_error)
+    __PYX_ERR(0, 3406, __pyx_L1_error)
   }
 
-  /* "lxml/etree.pyx":3364
+  /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
@@ -83664,7 +83995,7 @@ static PyObject *__pyx_pf_4lxml_5etree_34tounicode(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3398
+/* "lxml/etree.pyx":3409
  * 
  * 
  * def parse(source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -83717,7 +84048,7 @@ static PyObject *__pyx_pw_4lxml_5etree_37parse(PyObject *__pyx_self, PyObject *_
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 3398, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 3409, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -83734,13 +84065,13 @@ static PyObject *__pyx_pw_4lxml_5etree_37parse(PyObject *__pyx_self, PyObject *_
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3398, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3409, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.parse", __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(0, 3398, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3409, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_36parse(__pyx_self, __pyx_v_source, __pyx_v_parser, __pyx_v_base_url);
 
   /* function exit code */
@@ -83767,7 +84098,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
   int __pyx_t_8;
   __Pyx_RefNannySetupContext("parse", 0);
 
-  /* "lxml/etree.pyx":3423
+  /* "lxml/etree.pyx":3434
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -83783,19 +84114,19 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
     __Pyx_XGOTREF(__pyx_t_3);
     /*try:*/ {
 
-      /* "lxml/etree.pyx":3424
+      /* "lxml/etree.pyx":3435
  *     cdef _Document doc
  *     try:
  *         doc = _parseDocument(source, parser, base_url)             # <<<<<<<<<<<<<<
  *         return _elementTreeFactory(doc, None)
  *     except _TargetParserResult as result_container:
  */
-      __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, 3424, __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, 3435, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/etree.pyx":3425
+      /* "lxml/etree.pyx":3436
  *     try:
  *         doc = _parseDocument(source, parser, base_url)
  *         return _elementTreeFactory(doc, None)             # <<<<<<<<<<<<<<
@@ -83803,13 +84134,13 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  *         return result_container.result
  */
       __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, 3425, __pyx_L3_error)
+      __pyx_t_4 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3436, __pyx_L3_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_r = __pyx_t_4;
       __pyx_t_4 = 0;
       goto __pyx_L7_try_return;
 
-      /* "lxml/etree.pyx":3423
+      /* "lxml/etree.pyx":3434
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -83820,7 +84151,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
     __pyx_L3_error:;
     __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "lxml/etree.pyx":3426
+    /* "lxml/etree.pyx":3437
  *         doc = _parseDocument(source, parser, base_url)
  *         return _elementTreeFactory(doc, None)
  *     except _TargetParserResult as result_container:             # <<<<<<<<<<<<<<
@@ -83828,7 +84159,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  */
     __Pyx_ErrFetch(&__pyx_t_4, &__pyx_t_5, &__pyx_t_6);
-    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3426, __pyx_L5_except_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_7, __pyx_n_s_TargetParserResult); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3437, __pyx_L5_except_error)
     __Pyx_GOTREF(__pyx_t_7);
     __pyx_t_8 = __Pyx_PyErr_GivenExceptionMatches(__pyx_t_4, __pyx_t_7);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
@@ -83836,14 +84167,14 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
     __pyx_t_4 = 0; __pyx_t_5 = 0; __pyx_t_6 = 0;
     if (__pyx_t_8) {
       __Pyx_AddTraceback("lxml.etree.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
-      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 3426, __pyx_L5_except_error)
+      if (__Pyx_GetException(&__pyx_t_6, &__pyx_t_5, &__pyx_t_4) < 0) __PYX_ERR(0, 3437, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_5);
       __pyx_v_result_container = __pyx_t_5;
 
-      /* "lxml/etree.pyx":3427
+      /* "lxml/etree.pyx":3438
  *         return _elementTreeFactory(doc, None)
  *     except _TargetParserResult as result_container:
  *         return result_container.result             # <<<<<<<<<<<<<<
@@ -83851,7 +84182,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
  * 
  */
       __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, 3427, __pyx_L5_except_error)
+      __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_result_container, __pyx_n_s_result); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 3438, __pyx_L5_except_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_r = __pyx_t_7;
       __pyx_t_7 = 0;
@@ -83863,7 +84194,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
     goto __pyx_L5_except_error;
     __pyx_L5_except_error:;
 
-    /* "lxml/etree.pyx":3423
+    /* "lxml/etree.pyx":3434
  *     """
  *     cdef _Document doc
  *     try:             # <<<<<<<<<<<<<<
@@ -83889,7 +84220,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
     goto __pyx_L0;
   }
 
-  /* "lxml/etree.pyx":3398
+  /* "lxml/etree.pyx":3409
  * 
  * 
  * def parse(source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -83913,7 +84244,7 @@ static PyObject *__pyx_pf_4lxml_5etree_36parse(CYTHON_UNUSED PyObject *__pyx_sel
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3430
+/* "lxml/etree.pyx":3441
  * 
  * 
  * def adopt_external_document(capsule, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -83959,7 +84290,7 @@ static PyObject *__pyx_pw_4lxml_5etree_39adopt_external_document(PyObject *__pyx
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adopt_external_document") < 0)) __PYX_ERR(0, 3430, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "adopt_external_document") < 0)) __PYX_ERR(0, 3441, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -83975,13 +84306,13 @@ static PyObject *__pyx_pw_4lxml_5etree_39adopt_external_document(PyObject *__pyx
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("adopt_external_document", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3430, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("adopt_external_document", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3441, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree.adopt_external_document", __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(0, 3430, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_parser), __pyx_ptype_4lxml_5etree__BaseParser, 1, "parser", 0))) __PYX_ERR(0, 3441, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_5etree_38adopt_external_document(__pyx_self, __pyx_v_capsule, __pyx_v_parser);
 
   /* function exit code */
@@ -84004,7 +84335,7 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
   struct __pyx_opt_args_4lxml_5etree__adoptForeignDoc __pyx_t_3;
   __Pyx_RefNannySetupContext("adopt_external_document", 0);
 
-  /* "lxml/etree.pyx":3462
+  /* "lxml/etree.pyx":3473
  *     """
  *     cdef xmlDoc* c_doc
  *     cdef bint is_owned = False             # <<<<<<<<<<<<<<
@@ -84013,17 +84344,17 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  */
   __pyx_v_is_owned = 0;
 
-  /* "lxml/etree.pyx":3463
+  /* "lxml/etree.pyx":3474
  *     cdef xmlDoc* c_doc
  *     cdef bint is_owned = False
  *     c_doc = <xmlDoc*> python.lxml_unpack_xmldoc_capsule(capsule, &is_owned)             # <<<<<<<<<<<<<<
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  *     return _elementTreeFactory(doc, None)
  */
-  __pyx_t_1 = lxml_unpack_xmldoc_capsule(__pyx_v_capsule, (&__pyx_v_is_owned)); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3463, __pyx_L1_error)
+  __pyx_t_1 = lxml_unpack_xmldoc_capsule(__pyx_v_capsule, (&__pyx_v_is_owned)); if (unlikely(__pyx_t_1 == ((void *)NULL) && PyErr_Occurred())) __PYX_ERR(0, 3474, __pyx_L1_error)
   __pyx_v_c_doc = ((xmlDoc *)__pyx_t_1);
 
-  /* "lxml/etree.pyx":3464
+  /* "lxml/etree.pyx":3475
  *     cdef bint is_owned = False
  *     c_doc = <xmlDoc*> python.lxml_unpack_xmldoc_capsule(capsule, &is_owned)
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)             # <<<<<<<<<<<<<<
@@ -84033,12 +84364,12 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
   __pyx_t_3.__pyx_n = 2;
   __pyx_t_3.parser = __pyx_v_parser;
   __pyx_t_3.is_owned = __pyx_v_is_owned;
-  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__adoptForeignDoc(__pyx_v_c_doc, &__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3464, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__adoptForeignDoc(__pyx_v_c_doc, &__pyx_t_3)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3475, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3465
+  /* "lxml/etree.pyx":3476
  *     c_doc = <xmlDoc*> python.lxml_unpack_xmldoc_capsule(capsule, &is_owned)
  *     doc = _adoptForeignDoc(c_doc, parser, is_owned)
  *     return _elementTreeFactory(doc, None)             # <<<<<<<<<<<<<<
@@ -84046,13 +84377,13 @@ static PyObject *__pyx_pf_4lxml_5etree_38adopt_external_document(CYTHON_UNUSED P
  * 
  */
   __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, 3465, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)__pyx_f_4lxml_5etree__elementTreeFactory(__pyx_v_doc, ((struct LxmlElement *)Py_None))); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3476, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3430
+  /* "lxml/etree.pyx":3441
  * 
  * 
  * def adopt_external_document(capsule, _BaseParser parser=None):             # <<<<<<<<<<<<<<
@@ -84277,7 +84608,7 @@ static void __pyx_f_4lxml_5etree_14_ReadOnlyProxy_free_after_use(struct __pyx_ob
  *         """
  *         self._free_after_use = 1             # <<<<<<<<<<<<<<
  * 
- *     property tag:
+ *     @property
  */
   __pyx_v_self->_free_after_use = 1;
 
@@ -84293,12 +84624,12 @@ static void __pyx_f_4lxml_5etree_14_ReadOnlyProxy_free_after_use(struct __pyx_ob
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/readonlytree.pxi":32
- *         u"""Element tag
+/* "src/lxml/readonlytree.pxi":30
+ * 
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         """Element tag
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  */
 
 /* Python wrapper */
@@ -84322,30 +84653,30 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":33
+ *         """Element tag
  *         """
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _namespacedName(self._c_node)
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _namespacedName(self._c_node)
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
- *                 return _namespacedName(self._c_node)
- *             elif self._c_node.type == tree.XML_PI_NODE:
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *             return _namespacedName(self._c_node)
+ *         elif self._c_node.type == tree.XML_PI_NODE:
  */
   switch (__pyx_v_self->_c_node->type) {
     case XML_ELEMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":35
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _namespacedName(self._c_node)             # <<<<<<<<<<<<<<
- *             elif self._c_node.type == tree.XML_PI_NODE:
- *                 return ProcessingInstruction
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _namespacedName(self._c_node)             # <<<<<<<<<<<<<<
+ *         elif self._c_node.type == tree.XML_PI_NODE:
+ *             return ProcessingInstruction
  */
     __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)
@@ -84355,21 +84686,21 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":34
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
- *                 return _namespacedName(self._c_node)
- *             elif self._c_node.type == tree.XML_PI_NODE:
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *             return _namespacedName(self._c_node)
+ *         elif self._c_node.type == tree.XML_PI_NODE:
  */
     break;
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":37
- *                 return _namespacedName(self._c_node)
- *             elif self._c_node.type == tree.XML_PI_NODE:
- *                 return ProcessingInstruction             # <<<<<<<<<<<<<<
- *             elif self._c_node.type == tree.XML_COMMENT_NODE:
- *                 return Comment
+ *             return _namespacedName(self._c_node)
+ *         elif self._c_node.type == tree.XML_PI_NODE:
+ *             return ProcessingInstruction             # <<<<<<<<<<<<<<
+ *         elif self._c_node.type == tree.XML_COMMENT_NODE:
+ *             return Comment
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 37, __pyx_L1_error)
@@ -84379,21 +84710,21 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":36
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _namespacedName(self._c_node)
- *             elif self._c_node.type == tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
- *                 return ProcessingInstruction
- *             elif self._c_node.type == tree.XML_COMMENT_NODE:
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _namespacedName(self._c_node)
+ *         elif self._c_node.type == tree.XML_PI_NODE:             # <<<<<<<<<<<<<<
+ *             return ProcessingInstruction
+ *         elif self._c_node.type == tree.XML_COMMENT_NODE:
  */
     break;
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":39
- *                 return ProcessingInstruction
- *             elif self._c_node.type == tree.XML_COMMENT_NODE:
- *                 return Comment             # <<<<<<<<<<<<<<
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
- *                 return Entity
+ *             return ProcessingInstruction
+ *         elif self._c_node.type == tree.XML_COMMENT_NODE:
+ *             return Comment             # <<<<<<<<<<<<<<
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+ *             return Entity
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Comment); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 39, __pyx_L1_error)
@@ -84403,21 +84734,21 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":38
- *             elif self._c_node.type == tree.XML_PI_NODE:
- *                 return ProcessingInstruction
- *             elif self._c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
- *                 return Comment
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+ *         elif self._c_node.type == tree.XML_PI_NODE:
+ *             return ProcessingInstruction
+ *         elif self._c_node.type == tree.XML_COMMENT_NODE:             # <<<<<<<<<<<<<<
+ *             return Comment
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
  */
     break;
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/readonlytree.pxi":41
- *                 return Comment
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
- *                 return Entity             # <<<<<<<<<<<<<<
- *             else:
- *                 self._raise_unsupported_type()
+ *             return Comment
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+ *             return Entity             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._raise_unsupported_type()
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_Entity); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 41, __pyx_L1_error)
@@ -84427,32 +84758,32 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":40
- *             elif self._c_node.type == tree.XML_COMMENT_NODE:
- *                 return Comment
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
- *                 return Entity
- *             else:
+ *         elif self._c_node.type == tree.XML_COMMENT_NODE:
+ *             return Comment
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
+ *             return Entity
+ *         else:
  */
     break;
     default:
 
     /* "src/lxml/readonlytree.pxi":43
- *                 return Entity
- *             else:
- *                 self._raise_unsupported_type()             # <<<<<<<<<<<<<<
+ *             return Entity
+ *         else:
+ *             self._raise_unsupported_type()             # <<<<<<<<<<<<<<
  * 
- *     property text:
+ *     @property
  */
     __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;
   }
 
-  /* "src/lxml/readonlytree.pxi":32
- *         u"""Element tag
+  /* "src/lxml/readonlytree.pxi":30
+ * 
+ *     @property
+ *     def tag(self):             # <<<<<<<<<<<<<<
+ *         """Element tag
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  */
 
   /* function exit code */
@@ -84468,12 +84799,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_3tag___get__(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/readonlytree.pxi":49
+/* "src/lxml/readonlytree.pxi":46
+ * 
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         """Text before the first subelement. This is either a string or
  *         the value None, if there was no text.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  */
 
 /* Python wrapper */
@@ -84502,30 +84833,30 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":50
+ *         the value None, if there was no text.
  *         """
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _collectText(self._c_node.children)
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _collectText(self._c_node.children)
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
- *                 return _collectText(self._c_node.children)
- *             elif self._c_node.type in (tree.XML_PI_NODE,
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *             return _collectText(self._c_node.children)
+ *         elif self._c_node.type in (tree.XML_PI_NODE,
  */
   switch (__pyx_v_self->_c_node->type) {
     case XML_ELEMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":52
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _collectText(self._c_node.children)             # <<<<<<<<<<<<<<
- *             elif self._c_node.type in (tree.XML_PI_NODE,
- *                                        tree.XML_COMMENT_NODE):
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _collectText(self._c_node.children)             # <<<<<<<<<<<<<<
+ *         elif self._c_node.type in (tree.XML_PI_NODE,
+ *                                    tree.XML_COMMENT_NODE):
  */
     __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)
@@ -84535,40 +84866,40 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":51
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
- *                 return _collectText(self._c_node.children)
- *             elif self._c_node.type in (tree.XML_PI_NODE,
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
+ *             return _collectText(self._c_node.children)
+ *         elif self._c_node.type in (tree.XML_PI_NODE,
  */
     break;
     case XML_PI_NODE:
 
     /* "src/lxml/readonlytree.pxi":53
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _collectText(self._c_node.children)
- *             elif self._c_node.type in (tree.XML_PI_NODE,             # <<<<<<<<<<<<<<
- *                                        tree.XML_COMMENT_NODE):
- *                 if self._c_node.content is NULL:
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _collectText(self._c_node.children)
+ *         elif self._c_node.type in (tree.XML_PI_NODE,             # <<<<<<<<<<<<<<
+ *                                    tree.XML_COMMENT_NODE):
+ *             if self._c_node.content is NULL:
  */
     case XML_COMMENT_NODE:
 
     /* "src/lxml/readonlytree.pxi":55
- *             elif self._c_node.type in (tree.XML_PI_NODE,
- *                                        tree.XML_COMMENT_NODE):
- *                 if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
- *                     return ''
- *                 else:
+ *         elif self._c_node.type in (tree.XML_PI_NODE,
+ *                                    tree.XML_COMMENT_NODE):
+ *             if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
+ *                 return ''
+ *             else:
  */
     __pyx_t_3 = ((__pyx_v_self->_c_node->content == NULL) != 0);
     if (__pyx_t_3) {
 
       /* "src/lxml/readonlytree.pxi":56
- *                                        tree.XML_COMMENT_NODE):
- *                 if self._c_node.content is NULL:
- *                     return ''             # <<<<<<<<<<<<<<
- *                 else:
- *                     return funicode(self._c_node.content)
+ *                                    tree.XML_COMMENT_NODE):
+ *             if self._c_node.content is NULL:
+ *                 return ''             # <<<<<<<<<<<<<<
+ *             else:
+ *                 return funicode(self._c_node.content)
  */
       __Pyx_XDECREF(__pyx_r);
       __Pyx_INCREF(__pyx_kp_s__11);
@@ -84576,20 +84907,20 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
       goto __pyx_L0;
 
       /* "src/lxml/readonlytree.pxi":55
- *             elif self._c_node.type in (tree.XML_PI_NODE,
- *                                        tree.XML_COMMENT_NODE):
- *                 if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
- *                     return ''
- *                 else:
+ *         elif self._c_node.type in (tree.XML_PI_NODE,
+ *                                    tree.XML_COMMENT_NODE):
+ *             if self._c_node.content is NULL:             # <<<<<<<<<<<<<<
+ *                 return ''
+ *             else:
  */
     }
 
     /* "src/lxml/readonlytree.pxi":58
- *                     return ''
- *                 else:
- *                     return funicode(self._c_node.content)             # <<<<<<<<<<<<<<
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
- *                 return f'&{funicode(self._c_node.name)};'
+ *                 return ''
+ *             else:
+ *                 return funicode(self._c_node.content)             # <<<<<<<<<<<<<<
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+ *             return f'&{funicode(self._c_node.name)};'
  */
     /*else*/ {
       __Pyx_XDECREF(__pyx_r);
@@ -84601,21 +84932,21 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
     }
 
     /* "src/lxml/readonlytree.pxi":53
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
- *                 return _collectText(self._c_node.children)
- *             elif self._c_node.type in (tree.XML_PI_NODE,             # <<<<<<<<<<<<<<
- *                                        tree.XML_COMMENT_NODE):
- *                 if self._c_node.content is NULL:
+ *         if self._c_node.type == tree.XML_ELEMENT_NODE:
+ *             return _collectText(self._c_node.children)
+ *         elif self._c_node.type in (tree.XML_PI_NODE,             # <<<<<<<<<<<<<<
+ *                                    tree.XML_COMMENT_NODE):
+ *             if self._c_node.content is NULL:
  */
     break;
     case XML_ENTITY_REF_NODE:
 
     /* "src/lxml/readonlytree.pxi":60
- *                     return funicode(self._c_node.content)
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
- *                 return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
- *             else:
- *                 self._raise_unsupported_type()
+ *                 return funicode(self._c_node.content)
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+ *             return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
+ *         else:
+ *             self._raise_unsupported_type()
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(6, 60, __pyx_L1_error)
@@ -84648,32 +84979,32 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":59
- *                 else:
- *                     return funicode(self._c_node.content)
- *             elif self._c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
- *                 return f'&{funicode(self._c_node.name)};'
  *             else:
+ *                 return funicode(self._c_node.content)
+ *         elif self._c_node.type == tree.XML_ENTITY_REF_NODE:             # <<<<<<<<<<<<<<
+ *             return f'&{funicode(self._c_node.name)};'
+ *         else:
  */
     break;
     default:
 
     /* "src/lxml/readonlytree.pxi":62
- *                 return f'&{funicode(self._c_node.name)};'
- *             else:
- *                 self._raise_unsupported_type()             # <<<<<<<<<<<<<<
+ *             return f'&{funicode(self._c_node.name)};'
+ *         else:
+ *             self._raise_unsupported_type()             # <<<<<<<<<<<<<<
  * 
- *     property tail:
+ *     @property
  */
     __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;
   }
 
-  /* "src/lxml/readonlytree.pxi":49
+  /* "src/lxml/readonlytree.pxi":46
+ * 
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         """Text before the first subelement. This is either a string or
  *         the value None, if there was no text.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.type == tree.XML_ELEMENT_NODE:
  */
 
   /* function exit code */
@@ -84691,12 +85022,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4text___get__(struct __p
   return __pyx_r;
 }
 
-/* "src/lxml/readonlytree.pxi":69
- *         there was no text.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return _collectText(self._c_node.next)
+/* "src/lxml/readonlytree.pxi":65
+ * 
+ *     @property
+ *     def tail(self):             # <<<<<<<<<<<<<<
+ *         """Text after this element's end tag, but before the next sibling
+ *         element's start tag. This is either a string or the value None, if
  */
 
 /* Python wrapper */
@@ -84720,20 +85051,20 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":70
+ *         there was no text.
  *         """
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             return _collectText(self._c_node.next)
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         return _collectText(self._c_node.next)
  * 
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             return _collectText(self._c_node.next)             # <<<<<<<<<<<<<<
+ *         """
+ *         self._assertNode()
+ *         return _collectText(self._c_node.next)             # <<<<<<<<<<<<<<
  * 
- *     property sourceline:
+ *     @property
  */
   __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)
@@ -84742,12 +85073,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/readonlytree.pxi":69
- *         there was no text.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return _collectText(self._c_node.next)
+  /* "src/lxml/readonlytree.pxi":65
+ * 
+ *     @property
+ *     def tail(self):             # <<<<<<<<<<<<<<
+ *         """Text after this element's end tag, but before the next sibling
+ *         element's start tag. This is either a string or the value None, if
  */
 
   /* function exit code */
@@ -84761,12 +85092,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_4tail___get__(struct __p
   return __pyx_r;
 }
 
-/* "src/lxml/readonlytree.pxi":76
- *         u"""Original line number as found by the parser or None if unknown.
+/* "src/lxml/readonlytree.pxi":74
+ * 
+ *     @property
+ *     def sourceline(self):             # <<<<<<<<<<<<<<
+ *         """Original line number as found by the parser or None if unknown.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef long line
- *             self._assertNode()
  */
 
 /* Python wrapper */
@@ -84792,39 +85123,39 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":78
- *         def __get__(self):
- *             cdef long line
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             line = tree.xmlGetLineNo(self._c_node)
- *             if line > 0:
+ *         """
+ *         cdef long line
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         line = tree.xmlGetLineNo(self._c_node)
+ *         if line > 0:
  */
   __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
- *             cdef long line
- *             self._assertNode()
- *             line = tree.xmlGetLineNo(self._c_node)             # <<<<<<<<<<<<<<
- *             if line > 0:
- *                 return line
+ *         cdef long line
+ *         self._assertNode()
+ *         line = tree.xmlGetLineNo(self._c_node)             # <<<<<<<<<<<<<<
+ *         if line > 0:
+ *             return line
  */
   __pyx_v_line = xmlGetLineNo(__pyx_v_self->_c_node);
 
   /* "src/lxml/readonlytree.pxi":80
- *             self._assertNode()
- *             line = tree.xmlGetLineNo(self._c_node)
- *             if line > 0:             # <<<<<<<<<<<<<<
- *                 return line
- *             else:
+ *         self._assertNode()
+ *         line = tree.xmlGetLineNo(self._c_node)
+ *         if line > 0:             # <<<<<<<<<<<<<<
+ *             return line
+ *         else:
  */
   __pyx_t_2 = ((__pyx_v_line > 0) != 0);
   if (__pyx_t_2) {
 
     /* "src/lxml/readonlytree.pxi":81
- *             line = tree.xmlGetLineNo(self._c_node)
- *             if line > 0:
- *                 return line             # <<<<<<<<<<<<<<
- *             else:
- *                 return None
+ *         line = tree.xmlGetLineNo(self._c_node)
+ *         if line > 0:
+ *             return line             # <<<<<<<<<<<<<<
+ *         else:
+ *             return None
  */
     __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)
@@ -84834,18 +85165,18 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
     goto __pyx_L0;
 
     /* "src/lxml/readonlytree.pxi":80
- *             self._assertNode()
- *             line = tree.xmlGetLineNo(self._c_node)
- *             if line > 0:             # <<<<<<<<<<<<<<
- *                 return line
- *             else:
+ *         self._assertNode()
+ *         line = tree.xmlGetLineNo(self._c_node)
+ *         if line > 0:             # <<<<<<<<<<<<<<
+ *             return line
+ *         else:
  */
   }
 
   /* "src/lxml/readonlytree.pxi":83
- *                 return line
- *             else:
- *                 return None             # <<<<<<<<<<<<<<
+ *             return line
+ *         else:
+ *             return None             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
@@ -84855,12 +85186,12 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
     goto __pyx_L0;
   }
 
-  /* "src/lxml/readonlytree.pxi":76
- *         u"""Original line number as found by the parser or None if unknown.
+  /* "src/lxml/readonlytree.pxi":74
+ * 
+ *     @property
+ *     def sourceline(self):             # <<<<<<<<<<<<<<
+ *         """Original line number as found by the parser or None if unknown.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef long line
- *             self._assertNode()
  */
 
   /* function exit code */
@@ -84875,7 +85206,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_10sourceline___get__(str
 }
 
 /* "src/lxml/readonlytree.pxi":85
- *                 return None
+ *             return None
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         self._assertNode()
@@ -85128,7 +85459,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_2__repr__(struct __pyx_o
   }
 
   /* "src/lxml/readonlytree.pxi":85
- *                 return None
+ *             return None
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         self._assertNode()
@@ -85866,7 +86197,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
@@ -85896,7 +86227,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -85904,7 +86235,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy___copy__(struct __pyx_obj
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
@@ -86507,7 +86838,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
@@ -86537,7 +86868,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -86545,7 +86876,7 @@ static PyObject *__pyx_f_4lxml_5etree_14_ReadOnlyProxy_getchildren(struct __pyx_
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
@@ -87078,11 +87409,11 @@ static PyObject *__pyx_pf_4lxml_5etree_14_ReadOnlyProxy_24getprevious(struct __p
 }
 
 /* "src/lxml/readonlytree.pxi":251
- *     u"A read-only proxy for processing instructions (for internal use only!)"
- *     property target:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return funicode(self._c_node.name)
+ *     """A read-only proxy for processing instructions (for internal use only!)"""
+ *     @property
+ *     def target(self):             # <<<<<<<<<<<<<<
+ *         self._assertNode()
+ *         return funicode(self._c_node.name)
  */
 
 /* Python wrapper */
@@ -87106,18 +87437,18 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":252
- *     property target:
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             return funicode(self._c_node.name)
+ *     @property
+ *     def target(self):
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_node.name)
  * 
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
+ *     def target(self):
+ *         self._assertNode()
+ *         return funicode(self._c_node.name)             # <<<<<<<<<<<<<<
  * 
  * @cython.final
  */
@@ -87129,11 +87460,11 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
   goto __pyx_L0;
 
   /* "src/lxml/readonlytree.pxi":251
- *     u"A read-only proxy for processing instructions (for internal use only!)"
- *     property target:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return funicode(self._c_node.name)
+ *     """A read-only proxy for processing instructions (for internal use only!)"""
+ *     @property
+ *     def target(self):             # <<<<<<<<<<<<<<
+ *         self._assertNode()
+ *         return funicode(self._c_node.name)
  */
 
   /* function exit code */
@@ -87148,7 +87479,7 @@ static PyObject *__pyx_pf_4lxml_5etree_16_ReadOnlyPIProxy_6target___get__(struct
 }
 
 /* "src/lxml/readonlytree.pxi":260
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     """A read-only proxy for entity references (for internal use only!)"""
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
@@ -87189,7 +87520,7 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name___get__(stru
   goto __pyx_L0;
 
   /* "src/lxml/readonlytree.pxi":260
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     """A read-only proxy for entity references (for internal use only!)"""
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
@@ -87323,7 +87654,7 @@ 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))             # <<<<<<<<<<<<<<
  * 
- *     property text:
+ *     @property
  */
   xmlNodeSetName(__pyx_v_self->__pyx_base._c_node, (const xmlChar*)PyBytes_AS_STRING(__pyx_v_value_utf));
 
@@ -87351,9 +87682,9 @@ static int __pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4name_2__set__(struct __
 
 /* "src/lxml/readonlytree.pxi":270
  * 
- *     property text:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return f'&{funicode(self._c_node.name)};'
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         return f'&{funicode(self._c_node.name)};'
  * 
  */
 
@@ -87381,9 +87712,9 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":271
- *     property text:
- *         def __get__(self):
- *             return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
+ *     @property
+ *     def text(self):
+ *         return f'&{funicode(self._c_node.name)};'             # <<<<<<<<<<<<<<
  * 
  * 
  */
@@ -87419,9 +87750,9 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
 
   /* "src/lxml/readonlytree.pxi":270
  * 
- *     property text:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return f'&{funicode(self._c_node.name)};'
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         return f'&{funicode(self._c_node.name)};'
  * 
  */
 
@@ -87440,10 +87771,10 @@ static PyObject *__pyx_pf_4lxml_5etree_20_ReadOnlyEntityProxy_4text___get__(stru
 
 /* "src/lxml/readonlytree.pxi":279
  * 
- *     property attrib:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return dict(_collectAttributes(self._c_node, 3))
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         self._assertNode()
+ *         return dict(_collectAttributes(self._c_node, 3))
  */
 
 /* Python wrapper */
@@ -87468,20 +87799,20 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":280
- *     property attrib:
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             return dict(_collectAttributes(self._c_node, 3))
+ *     @property
+ *     def attrib(self):
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         return dict(_collectAttributes(self._c_node, 3))
  * 
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             return dict(_collectAttributes(self._c_node, 3))             # <<<<<<<<<<<<<<
+ *     def attrib(self):
+ *         self._assertNode()
+ *         return dict(_collectAttributes(self._c_node, 3))             # <<<<<<<<<<<<<<
  * 
- *     property prefix:
+ *     @property
  */
   __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)
@@ -87495,10 +87826,10 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
 
   /* "src/lxml/readonlytree.pxi":279
  * 
- *     property attrib:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             return dict(_collectAttributes(self._c_node, 3))
+ *     @property
+ *     def attrib(self):             # <<<<<<<<<<<<<<
+ *         self._assertNode()
+ *         return dict(_collectAttributes(self._c_node, 3))
  */
 
   /* function exit code */
@@ -87513,12 +87844,12 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6attrib___get__(s
   return __pyx_r;
 }
 
-/* "src/lxml/readonlytree.pxi":286
- *         u"""Namespace prefix or None.
+/* "src/lxml/readonlytree.pxi":284
+ * 
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:
  */
 
 /* Python wrapper */
@@ -87543,39 +87874,39 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/readonlytree.pxi":287
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):
- *             self._assertNode()             # <<<<<<<<<<<<<<
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:
+ *         self._assertNode()             # <<<<<<<<<<<<<<
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:
  */
   __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
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
  */
   __pyx_t_2 = ((__pyx_v_self->__pyx_base._c_node->ns != NULL) != 0);
   if (__pyx_t_2) {
 
     /* "src/lxml/readonlytree.pxi":289
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
- *                     return funicode(self._c_node.ns.prefix)
- *             return None
+ *         self._assertNode()
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None
  */
     __pyx_t_2 = ((__pyx_v_self->__pyx_base._c_node->ns->prefix != NULL) != 0);
     if (__pyx_t_2) {
 
       /* "src/lxml/readonlytree.pxi":290
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
- *             return None
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)             # <<<<<<<<<<<<<<
+ *         return None
  * 
  */
       __Pyx_XDECREF(__pyx_r);
@@ -87586,27 +87917,27 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
       goto __pyx_L0;
 
       /* "src/lxml/readonlytree.pxi":289
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:
- *                 if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
- *                     return funicode(self._c_node.ns.prefix)
- *             return None
+ *         self._assertNode()
+ *         if self._c_node.ns is not NULL:
+ *             if self._c_node.ns.prefix is not NULL:             # <<<<<<<<<<<<<<
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None
  */
     }
 
     /* "src/lxml/readonlytree.pxi":288
- *         def __get__(self):
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
+ *         """
+ *         self._assertNode()
+ *         if self._c_node.ns is not NULL:             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
  */
   }
 
   /* "src/lxml/readonlytree.pxi":291
- *                 if self._c_node.ns.prefix is not NULL:
- *                     return funicode(self._c_node.ns.prefix)
- *             return None             # <<<<<<<<<<<<<<
+ *             if self._c_node.ns.prefix is not NULL:
+ *                 return funicode(self._c_node.ns.prefix)
+ *         return None             # <<<<<<<<<<<<<<
  * 
  *     def get(self, key, default=None):
  */
@@ -87614,12 +87945,12 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "src/lxml/readonlytree.pxi":286
- *         u"""Namespace prefix or None.
+  /* "src/lxml/readonlytree.pxi":284
+ * 
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *         """Namespace prefix or None.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             self._assertNode()
- *             if self._c_node.ns is not NULL:
  */
 
   /* function exit code */
@@ -87634,7 +87965,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_6prefix___get__(s
 }
 
 /* "src/lxml/readonlytree.pxi":293
- *             return None
+ *         return None
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"""Gets an element attribute.
@@ -87739,7 +88070,7 @@ static PyObject *__pyx_pf_4lxml_5etree_21_ReadOnlyElementProxy_get(struct __pyx_
   goto __pyx_L0;
 
   /* "src/lxml/readonlytree.pxi":293
- *             return None
+ *         return None
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"""Gets an element attribute.
@@ -89443,7 +89774,7 @@ static int __pyx_pf_4lxml_5etree_25_ModifyContentOnlyPIProxy_6target_2__set__(st
 }
 
 /* "src/lxml/readonlytree.pxi":459
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     "A read-only proxy for entity references (for internal use only!)"
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
@@ -89484,7 +89815,7 @@ static PyObject *__pyx_pf_4lxml_5etree_29_ModifyContentOnlyEntityProxy_4name___g
   goto __pyx_L0;
 
   /* "src/lxml/readonlytree.pxi":459
- *     u"A read-only proxy for entity references (for internal use only!)"
+ *     "A read-only proxy for entity references (for internal use only!)"
  *     property name:
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             return funicode(self._c_node.name)
@@ -108342,7 +108673,7 @@ static void __pyx_f_4lxml_5etree__receiveParserError(void *__pyx_v_c_context, xm
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \
  */
 
@@ -108376,7 +108707,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
 
   /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
@@ -108390,7 +108721,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   }
 
   /* "src/lxml/parser.pxi":625
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:             # <<<<<<<<<<<<<<
  *         if isinstance(filename, bytes):
@@ -108402,7 +108733,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
 
   /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
@@ -108684,7 +109015,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
 
     /* "src/lxml/parser.pxi":624
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \             # <<<<<<<<<<<<<<
  *            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
  *         if isinstance(filename, bytes):
@@ -109034,7 +109365,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
  *             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
  * 
  * cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,             # <<<<<<<<<<<<<<
- *                           _ErrorLog error_log) except 0:
+ *                           _ErrorLog error_log) except -1:
  *     if filename is not None and \
  */
 
@@ -109048,7 +109379,7 @@ static int __pyx_f_4lxml_5etree__raiseParseError(xmlParserCtxt *__pyx_v_ctxt, Py
   __Pyx_XDECREF(__pyx_t_17);
   __Pyx_XDECREF(__pyx_t_18);
   __Pyx_AddTraceback("lxml.etree._raiseParseError", __pyx_clineno, __pyx_lineno, __pyx_filename);
-  __pyx_r = 0;
+  __pyx_r = -1;
   __Pyx_XDECREF(__pyx_v_message);
   __Pyx_XDECREF(__pyx_v_filename);
   __Pyx_RefNannyFinishContext();
@@ -109879,7 +110210,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  */
       __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, 711, __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)-1))) __PYX_ERR(2, 711, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
       /* "src/lxml/parser.pxi":710
@@ -109900,7 +110231,7 @@ static xmlDoc *__pyx_f_4lxml_5etree__handleParseResult(struct __pyx_obj_4lxml_5e
  *         if result.URL is NULL and filename is not None:
  */
     /*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, 713, __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)-1))) __PYX_ERR(2, 713, __pyx_L1_error)
     }
     __pyx_L37:;
 
@@ -112505,7 +112836,7 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
  *         c_ctxt.sax.startDocument = _initSaxDocument
  *         return c_ctxt             # <<<<<<<<<<<<<<
  * 
- *     property error_log:
+ *     @property
  */
   __pyx_r = __pyx_v_c_ctxt;
   goto __pyx_L0;
@@ -112528,12 +112859,12 @@ static xmlParserCtxt *__pyx_f_4lxml_5etree_11_BaseParser__newPushParserCtxt(stru
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":946
- *         u"""The error log of the last parser run.
+/* "src/lxml/parser.pxi":944
+ * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last parser run.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef _ParserContext context
- *             context = self._getParserContext()
  */
 
 /* Python wrapper */
@@ -112557,10 +112888,10 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/parser.pxi":948
- *         def __get__(self):
- *             cdef _ParserContext context
- *             context = self._getParserContext()             # <<<<<<<<<<<<<<
- *             return context._error_log.copy()
+ *         """
+ *         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, 948, __pyx_L1_error)
@@ -112569,11 +112900,11 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   __pyx_t_1 = 0;
 
   /* "src/lxml/parser.pxi":949
- *             cdef _ParserContext context
- *             context = self._getParserContext()
- *             return context._error_log.copy()             # <<<<<<<<<<<<<<
+ *         cdef _ParserContext context
+ *         context = self._getParserContext()
+ *         return context._error_log.copy()             # <<<<<<<<<<<<<<
  * 
- *     property resolvers:
+ *     @property
  */
   __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, 949, __pyx_L1_error)
@@ -112582,12 +112913,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":946
- *         u"""The error log of the last parser run.
+  /* "src/lxml/parser.pxi":944
+ * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last parser run.
  *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef _ParserContext context
- *             context = self._getParserContext()
  */
 
   /* function exit code */
@@ -112602,12 +112933,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9error_log___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":953
- *     property resolvers:
- *         u"The custom resolver registry of this parser."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._resolvers
+/* "src/lxml/parser.pxi":952
  * 
+ *     @property
+ *     def resolvers(self):             # <<<<<<<<<<<<<<
+ *         """The custom resolver registry of this parser."""
+ *         return self._resolvers
  */
 
 /* Python wrapper */
@@ -112629,23 +112960,23 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/parser.pxi":954
- *         u"The custom resolver registry of this parser."
- *         def __get__(self):
- *             return self._resolvers             # <<<<<<<<<<<<<<
+ *     def resolvers(self):
+ *         """The custom resolver registry of this parser."""
+ *         return self._resolvers             # <<<<<<<<<<<<<<
  * 
- *     property version:
+ *     @property
  */
   __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":953
- *     property resolvers:
- *         u"The custom resolver registry of this parser."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._resolvers
+  /* "src/lxml/parser.pxi":952
  * 
+ *     @property
+ *     def resolvers(self):             # <<<<<<<<<<<<<<
+ *         """The custom resolver registry of this parser."""
+ *         return self._resolvers
  */
 
   /* function exit code */
@@ -112655,12 +112986,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_9resolvers___get__(struct _
   return __pyx_r;
 }
 
-/* "src/lxml/parser.pxi":958
- *     property version:
- *         u"The version of the underlying XML parser."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+/* "src/lxml/parser.pxi":957
  * 
+ *     @property
+ *     def version(self):             # <<<<<<<<<<<<<<
+ *         """The version of the underlying XML parser."""
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  */
 
 /* Python wrapper */
@@ -112684,9 +113015,9 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "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 version(self):
+ *         """The version of the underlying XML parser."""
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION             # <<<<<<<<<<<<<<
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):
  */
@@ -112700,12 +113031,12 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":958
- *     property version:
- *         u"The version of the underlying XML parser."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+  /* "src/lxml/parser.pxi":957
  * 
+ *     @property
+ *     def version(self):             # <<<<<<<<<<<<<<
+ *         """The version of the underlying XML parser."""
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  */
 
   /* function exit code */
@@ -112721,7 +113052,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_7version___get__(CYTHON_UNU
 }
 
 /* "src/lxml/parser.pxi":961
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
@@ -112826,7 +113157,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_BaseParser_2setElementClassLookup(stru
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "src/lxml/parser.pxi":961
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
@@ -115657,11 +115988,11 @@ static void __pyx_f_4lxml_5etree__initSaxDocument(void *__pyx_v_ctxt) {
   #endif
 }
 
-/* "src/lxml/parser.pxi":1239
- *         different from what the ``error_log`` property returns.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._getPushParserContext()._error_log.copy()
+/* "src/lxml/parser.pxi":1234
+ * 
+ *     @property
+ *     def feed_error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last (or current) run of the feed parser.
  * 
  */
 
@@ -115686,9 +116017,9 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/parser.pxi":1240
+ *         different from what the ``error_log`` property returns.
  *         """
- *         def __get__(self):
- *             return self._getPushParserContext()._error_log.copy()             # <<<<<<<<<<<<<<
+ *         return self._getPushParserContext()._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     cpdef feed(self, data):
  */
@@ -115702,11 +116033,11 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/parser.pxi":1239
- *         different from what the ``error_log`` property returns.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._getPushParserContext()._error_log.copy()
+  /* "src/lxml/parser.pxi":1234
+ * 
+ *     @property
+ *     def feed_error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last (or current) run of the feed parser.
  * 
  */
 
@@ -115723,7 +116054,7 @@ static PyObject *__pyx_pf_4lxml_5etree_11_FeedParser_14feed_error_log___get__(st
 }
 
 /* "src/lxml/parser.pxi":1242
- *             return self._getPushParserContext()._error_log.copy()
+ *         return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
@@ -115775,7 +116106,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
@@ -115805,7 +116136,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -115813,7 +116144,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
@@ -116968,7 +117299,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_feed(struct __pyx_obj_4lxml_
   }
 
   /* "src/lxml/parser.pxi":1242
- *             return self._getPushParserContext()._error_log.copy()
+ *         return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
@@ -117070,7 +117401,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
@@ -117100,7 +117431,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -117108,7 +117439,7 @@ static PyObject *__pyx_f_4lxml_5etree_11_FeedParser_close(struct __pyx_obj_4lxml
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
@@ -133296,7 +133627,7 @@ static PyObject *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResult(
  */
         __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(13, 138, __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)-1))) __PYX_ERR(13, 138, __pyx_L3_error)
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
         /* "src/lxml/parsertarget.pxi":137
@@ -133714,7 +134045,7 @@ static xmlDoc *__pyx_f_4lxml_5etree_20_TargetParserContext__handleParseResultDoc
  */
         __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(13, 162, __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)-1))) __PYX_ERR(13, 162, __pyx_L6_error)
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
         /* "src/lxml/parsertarget.pxi":161
@@ -154225,7 +154556,7 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
  *         self._parser = parser
  *         self._source = source             # <<<<<<<<<<<<<<
  * 
- *     property error_log:
+ *     @property
  */
   __Pyx_INCREF(__pyx_v_source);
   __Pyx_GIVEREF(__pyx_v_source);
@@ -154260,12 +154591,12 @@ static int __pyx_pf_4lxml_5etree_9iterparse___init__(struct __pyx_obj_4lxml_5etr
   return __pyx_r;
 }
 
-/* "src/lxml/iterparse.pxi":134
- *         u"""The error log of the last (or current) parser run.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.feed_error_log
+/* "src/lxml/iterparse.pxi":132
  * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last (or current) parser run.
+ *         """
  */
 
 /* Python wrapper */
@@ -154288,11 +154619,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/iterparse.pxi":135
+ *         """The error log of the last (or current) parser run.
  *         """
- *         def __get__(self):
- *             return self._parser.feed_error_log             # <<<<<<<<<<<<<<
+ *         return self._parser.feed_error_log             # <<<<<<<<<<<<<<
  * 
- *     property resolvers:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_feed_error_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 135, __pyx_L1_error)
@@ -154301,12 +154632,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/iterparse.pxi":134
- *         u"""The error log of the last (or current) parser run.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.feed_error_log
+  /* "src/lxml/iterparse.pxi":132
  * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The error log of the last (or current) parser run.
+ *         """
  */
 
   /* function exit code */
@@ -154320,12 +154651,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9error_log___get__(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/iterparse.pxi":140
- *         u"""The custom resolver registry of the last (or current) parser run.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.resolvers
+/* "src/lxml/iterparse.pxi":138
  * 
+ *     @property
+ *     def resolvers(self):             # <<<<<<<<<<<<<<
+ *         """The custom resolver registry of the last (or current) parser run.
+ *         """
  */
 
 /* Python wrapper */
@@ -154348,11 +154679,11 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/iterparse.pxi":141
+ *         """The custom resolver registry of the last (or current) parser run.
  *         """
- *         def __get__(self):
- *             return self._parser.resolvers             # <<<<<<<<<<<<<<
+ *         return self._parser.resolvers             # <<<<<<<<<<<<<<
  * 
- *     property version:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self->_parser), __pyx_n_s_resolvers); if (unlikely(!__pyx_t_1)) __PYX_ERR(14, 141, __pyx_L1_error)
@@ -154361,12 +154692,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/iterparse.pxi":140
- *         u"""The custom resolver registry of the last (or current) parser run.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.resolvers
+  /* "src/lxml/iterparse.pxi":138
  * 
+ *     @property
+ *     def resolvers(self):             # <<<<<<<<<<<<<<
+ *         """The custom resolver registry of the last (or current) parser run.
+ *         """
  */
 
   /* function exit code */
@@ -154380,12 +154711,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_9resolvers___get__(struct __py
   return __pyx_r;
 }
 
-/* "src/lxml/iterparse.pxi":145
- *     property version:
- *         u"""The version of the underlying XML parser."""
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.version
+/* "src/lxml/iterparse.pxi":144
  * 
+ *     @property
+ *     def version(self):             # <<<<<<<<<<<<<<
+ *         """The version of the underlying XML parser."""
+ *         return self._parser.version
  */
 
 /* Python wrapper */
@@ -154408,9 +154739,9 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/iterparse.pxi":146
- *         u"""The version of the underlying XML parser."""
- *         def __get__(self):
- *             return self._parser.version             # <<<<<<<<<<<<<<
+ *     def version(self):
+ *         """The version of the underlying XML parser."""
+ *         return self._parser.version             # <<<<<<<<<<<<<<
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):
  */
@@ -154421,12 +154752,12 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/iterparse.pxi":145
- *     property version:
- *         u"""The version of the underlying XML parser."""
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._parser.version
+  /* "src/lxml/iterparse.pxi":144
  * 
+ *     @property
+ *     def version(self):             # <<<<<<<<<<<<<<
+ *         """The version of the underlying XML parser."""
+ *         return self._parser.version
  */
 
   /* function exit code */
@@ -154441,7 +154772,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_7version___get__(struct __pyx_
 }
 
 /* "src/lxml/iterparse.pxi":148
- *             return self._parser.version
+ *         return self._parser.version
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
@@ -154546,7 +154877,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_2set_element_class_lookup(stru
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "src/lxml/iterparse.pxi":148
- *             return self._parser.version
+ *         return self._parser.version
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
@@ -155697,7 +156028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_9iterparse_8__next__(struct __pyx_obj_4lx
  *                              context._error_log)
  *         # no errors => all done
  */
-    __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(14, 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)-1))) __PYX_ERR(14, 212, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
@@ -160632,7 +160963,7 @@ static int __pyx_pf_4lxml_5etree_8XInclude___init__(struct __pyx_obj_4lxml_5etre
  *     def __init__(self):
  *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
  * 
- *     property error_log:
+ *     @property
  */
   __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(16, 20, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -160664,10 +160995,10 @@ static int __pyx_pf_4lxml_5etree_8XInclude___init__(struct __pyx_obj_4lxml_5etre
 
 /* "src/lxml/xinclude.pxi":23
  * 
- *     property error_log:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XInclude instance not initialised"
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         assert self._error_log is not None, "XInclude instance not initialised"
+ *         return self._error_log.copy()
  */
 
 /* Python wrapper */
@@ -160691,10 +161022,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xinclude.pxi":24
- *     property error_log:
- *         def __get__(self):
- *             assert self._error_log is not None, "XInclude instance not initialised"             # <<<<<<<<<<<<<<
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):
+ *         assert self._error_log is not None, "XInclude instance not initialised"             # <<<<<<<<<<<<<<
+ *         return self._error_log.copy()
  * 
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
@@ -160708,9 +161039,9 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
   #endif
 
   /* "src/lxml/xinclude.pxi":25
- *         def __get__(self):
- *             assert self._error_log is not None, "XInclude instance not initialised"
- *             return self._error_log.copy()             # <<<<<<<<<<<<<<
+ *     def error_log(self):
+ *         assert self._error_log is not None, "XInclude instance not initialised"
+ *         return self._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     def __call__(self, _Element node not None):
  */
@@ -160723,10 +161054,10 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
 
   /* "src/lxml/xinclude.pxi":23
  * 
- *     property error_log:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XInclude instance not initialised"
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         assert self._error_log is not None, "XInclude instance not initialised"
+ *         return self._error_log.copy()
  */
 
   /* function exit code */
@@ -160741,7 +161072,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_9error_log___get__(struct __pyx
 }
 
 /* "src/lxml/xinclude.pxi":27
- *             return self._error_log.copy()
+ *         return self._error_log.copy()
  * 
  *     def __call__(self, _Element node not None):             # <<<<<<<<<<<<<<
  *         u"__call__(self, node)"
@@ -161148,7 +161479,7 @@ static PyObject *__pyx_pf_4lxml_5etree_8XInclude_2__call__(struct __pyx_obj_4lxm
   }
 
   /* "src/lxml/xinclude.pxi":27
- *             return self._error_log.copy()
+ *         return self._error_log.copy()
  * 
  *     def __call__(self, _Element node not None):             # <<<<<<<<<<<<<<
  *         u"__call__(self, node)"
@@ -167106,10 +167437,10 @@ static PyObject *__pyx_f_4lxml_5etree_12_BaseContext__find_cached_function(struc
 
 /* "src/lxml/extensions.pxi":299
  * 
- *     property context_node:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef xmlNode* c_node
- *             if self._xpathCtxt is NULL:
+ *     @property
+ *     def context_node(self):             # <<<<<<<<<<<<<<
+ *         cdef xmlNode* c_node
+ *         if self._xpathCtxt is NULL:
  */
 
 /* Python wrapper */
@@ -167137,138 +167468,138 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/extensions.pxi":301
- *         def __get__(self):
- *             cdef xmlNode* c_node
- *             if self._xpathCtxt is NULL:             # <<<<<<<<<<<<<<
- *                 raise XPathError, \
- *                     u"XPath context is only usable during the evaluation"
+ *     def context_node(self):
+ *         cdef xmlNode* c_node
+ *         if self._xpathCtxt is NULL:             # <<<<<<<<<<<<<<
+ *             raise XPathError, \
+ *                 u"XPath context is only usable during the evaluation"
  */
   __pyx_t_1 = ((__pyx_v_self->_xpathCtxt == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
     /* "src/lxml/extensions.pxi":302
- *             cdef xmlNode* c_node
- *             if self._xpathCtxt is NULL:
- *                 raise XPathError, \             # <<<<<<<<<<<<<<
- *                     u"XPath context is only usable during the evaluation"
- *             c_node = self._xpathCtxt.node
+ *         cdef xmlNode* c_node
+ *         if self._xpathCtxt is NULL:
+ *             raise XPathError, \             # <<<<<<<<<<<<<<
+ *                 u"XPath context is only usable during the evaluation"
+ *         c_node = self._xpathCtxt.node
  */
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_XPath_context_is_only_usable_dur, 0, 0);
     __PYX_ERR(9, 302, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":301
- *         def __get__(self):
- *             cdef xmlNode* c_node
- *             if self._xpathCtxt is NULL:             # <<<<<<<<<<<<<<
- *                 raise XPathError, \
- *                     u"XPath context is only usable during the evaluation"
+ *     def context_node(self):
+ *         cdef xmlNode* c_node
+ *         if self._xpathCtxt is NULL:             # <<<<<<<<<<<<<<
+ *             raise XPathError, \
+ *                 u"XPath context is only usable during the evaluation"
  */
   }
 
   /* "src/lxml/extensions.pxi":304
- *                 raise XPathError, \
- *                     u"XPath context is only usable during the evaluation"
- *             c_node = self._xpathCtxt.node             # <<<<<<<<<<<<<<
- *             if c_node is NULL:
- *                 raise XPathError, u"no context node"
+ *             raise XPathError, \
+ *                 u"XPath context is only usable during the evaluation"
+ *         c_node = self._xpathCtxt.node             # <<<<<<<<<<<<<<
+ *         if c_node is NULL:
+ *             raise XPathError, u"no context node"
  */
   __pyx_t_2 = __pyx_v_self->_xpathCtxt->node;
   __pyx_v_c_node = __pyx_t_2;
 
   /* "src/lxml/extensions.pxi":305
- *                     u"XPath context is only usable during the evaluation"
- *             c_node = self._xpathCtxt.node
- *             if c_node is NULL:             # <<<<<<<<<<<<<<
- *                 raise XPathError, u"no context node"
- *             if c_node.doc != self._xpathCtxt.doc:
+ *                 u"XPath context is only usable during the evaluation"
+ *         c_node = self._xpathCtxt.node
+ *         if c_node is NULL:             # <<<<<<<<<<<<<<
+ *             raise XPathError, u"no context node"
+ *         if c_node.doc != self._xpathCtxt.doc:
  */
   __pyx_t_1 = ((__pyx_v_c_node == NULL) != 0);
   if (unlikely(__pyx_t_1)) {
 
     /* "src/lxml/extensions.pxi":306
- *             c_node = self._xpathCtxt.node
- *             if c_node is NULL:
- *                 raise XPathError, u"no context node"             # <<<<<<<<<<<<<<
- *             if c_node.doc != self._xpathCtxt.doc:
- *                 raise XPathError, \
+ *         c_node = self._xpathCtxt.node
+ *         if c_node is NULL:
+ *             raise XPathError, u"no context node"             # <<<<<<<<<<<<<<
+ *         if c_node.doc != self._xpathCtxt.doc:
+ *             raise XPathError, \
  */
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_no_context_node, 0, 0);
     __PYX_ERR(9, 306, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":305
- *                     u"XPath context is only usable during the evaluation"
- *             c_node = self._xpathCtxt.node
- *             if c_node is NULL:             # <<<<<<<<<<<<<<
- *                 raise XPathError, u"no context node"
- *             if c_node.doc != self._xpathCtxt.doc:
+ *                 u"XPath context is only usable during the evaluation"
+ *         c_node = self._xpathCtxt.node
+ *         if c_node is NULL:             # <<<<<<<<<<<<<<
+ *             raise XPathError, u"no context node"
+ *         if c_node.doc != self._xpathCtxt.doc:
  */
   }
 
   /* "src/lxml/extensions.pxi":307
- *             if c_node is NULL:
- *                 raise XPathError, u"no context node"
- *             if c_node.doc != self._xpathCtxt.doc:             # <<<<<<<<<<<<<<
- *                 raise XPathError, \
- *                     u"document-external context nodes are not supported"
+ *         if c_node is NULL:
+ *             raise XPathError, u"no context node"
+ *         if c_node.doc != self._xpathCtxt.doc:             # <<<<<<<<<<<<<<
+ *             raise XPathError, \
+ *                 u"document-external context nodes are not supported"
  */
   __pyx_t_1 = ((__pyx_v_c_node->doc != __pyx_v_self->_xpathCtxt->doc) != 0);
   if (unlikely(__pyx_t_1)) {
 
     /* "src/lxml/extensions.pxi":308
- *                 raise XPathError, u"no context node"
- *             if c_node.doc != self._xpathCtxt.doc:
- *                 raise XPathError, \             # <<<<<<<<<<<<<<
- *                     u"document-external context nodes are not supported"
- *             if self._doc is None:
+ *             raise XPathError, u"no context node"
+ *         if c_node.doc != self._xpathCtxt.doc:
+ *             raise XPathError, \             # <<<<<<<<<<<<<<
+ *                 u"document-external context nodes are not supported"
+ *         if self._doc is None:
  */
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_document_external_context_nodes, 0, 0);
     __PYX_ERR(9, 308, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":307
- *             if c_node is NULL:
- *                 raise XPathError, u"no context node"
- *             if c_node.doc != self._xpathCtxt.doc:             # <<<<<<<<<<<<<<
- *                 raise XPathError, \
- *                     u"document-external context nodes are not supported"
+ *         if c_node is NULL:
+ *             raise XPathError, u"no context node"
+ *         if c_node.doc != self._xpathCtxt.doc:             # <<<<<<<<<<<<<<
+ *             raise XPathError, \
+ *                 u"document-external context nodes are not supported"
  */
   }
 
   /* "src/lxml/extensions.pxi":310
- *                 raise XPathError, \
- *                     u"document-external context nodes are not supported"
- *             if self._doc is None:             # <<<<<<<<<<<<<<
- *                 raise XPathError, u"document context is missing"
- *             return _elementFactory(self._doc, c_node)
+ *             raise XPathError, \
+ *                 u"document-external context nodes are not supported"
+ *         if self._doc is None:             # <<<<<<<<<<<<<<
+ *             raise XPathError, u"document context is missing"
+ *         return _elementFactory(self._doc, c_node)
  */
   __pyx_t_1 = (((PyObject *)__pyx_v_self->_doc) == Py_None);
   __pyx_t_3 = (__pyx_t_1 != 0);
   if (unlikely(__pyx_t_3)) {
 
     /* "src/lxml/extensions.pxi":311
- *                     u"document-external context nodes are not supported"
- *             if self._doc is None:
- *                 raise XPathError, u"document context is missing"             # <<<<<<<<<<<<<<
- *             return _elementFactory(self._doc, c_node)
+ *                 u"document-external context nodes are not supported"
+ *         if self._doc is None:
+ *             raise XPathError, u"document context is missing"             # <<<<<<<<<<<<<<
+ *         return _elementFactory(self._doc, c_node)
  * 
  */
     __Pyx_Raise(((PyObject *)__pyx_ptype_4lxml_5etree_XPathError), __pyx_kp_u_document_context_is_missing, 0, 0);
     __PYX_ERR(9, 311, __pyx_L1_error)
 
     /* "src/lxml/extensions.pxi":310
- *                 raise XPathError, \
- *                     u"document-external context nodes are not supported"
- *             if self._doc is None:             # <<<<<<<<<<<<<<
- *                 raise XPathError, u"document context is missing"
- *             return _elementFactory(self._doc, c_node)
+ *             raise XPathError, \
+ *                 u"document-external context nodes are not supported"
+ *         if self._doc is None:             # <<<<<<<<<<<<<<
+ *             raise XPathError, u"document context is missing"
+ *         return _elementFactory(self._doc, c_node)
  */
   }
 
   /* "src/lxml/extensions.pxi":312
- *             if self._doc is None:
- *                 raise XPathError, u"document context is missing"
- *             return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
+ *         if self._doc is None:
+ *             raise XPathError, u"document context is missing"
+ *         return _elementFactory(self._doc, c_node)             # <<<<<<<<<<<<<<
  * 
- *     property eval_context:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_t_4 = ((PyObject *)__pyx_v_self->_doc);
@@ -167282,10 +167613,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
 
   /* "src/lxml/extensions.pxi":299
  * 
- *     property context_node:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef xmlNode* c_node
- *             if self._xpathCtxt is NULL:
+ *     @property
+ *     def context_node(self):             # <<<<<<<<<<<<<<
+ *         cdef xmlNode* c_node
+ *         if self._xpathCtxt is NULL:
  */
 
   /* function exit code */
@@ -167302,10 +167633,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12context_node___get__(str
 
 /* "src/lxml/extensions.pxi":315
  * 
- *     property eval_context:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._eval_context_dict is None:
- *                 self._eval_context_dict = {}
+ *     @property
+ *     def eval_context(self):             # <<<<<<<<<<<<<<
+ *         if self._eval_context_dict is None:
+ *             self._eval_context_dict = {}
  */
 
 /* Python wrapper */
@@ -167330,21 +167661,21 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/extensions.pxi":316
- *     property eval_context:
- *         def __get__(self):
- *             if self._eval_context_dict is None:             # <<<<<<<<<<<<<<
- *                 self._eval_context_dict = {}
- *             return self._eval_context_dict
+ *     @property
+ *     def eval_context(self):
+ *         if self._eval_context_dict is None:             # <<<<<<<<<<<<<<
+ *             self._eval_context_dict = {}
+ *         return self._eval_context_dict
  */
   __pyx_t_1 = (__pyx_v_self->_eval_context_dict == ((PyObject*)Py_None));
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
     /* "src/lxml/extensions.pxi":317
- *         def __get__(self):
- *             if self._eval_context_dict is None:
- *                 self._eval_context_dict = {}             # <<<<<<<<<<<<<<
- *             return self._eval_context_dict
+ *     def eval_context(self):
+ *         if self._eval_context_dict is None:
+ *             self._eval_context_dict = {}             # <<<<<<<<<<<<<<
+ *         return self._eval_context_dict
  * 
  */
     __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(9, 317, __pyx_L1_error)
@@ -167356,18 +167687,18 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
     __pyx_t_3 = 0;
 
     /* "src/lxml/extensions.pxi":316
- *     property eval_context:
- *         def __get__(self):
- *             if self._eval_context_dict is None:             # <<<<<<<<<<<<<<
- *                 self._eval_context_dict = {}
- *             return self._eval_context_dict
+ *     @property
+ *     def eval_context(self):
+ *         if self._eval_context_dict is None:             # <<<<<<<<<<<<<<
+ *             self._eval_context_dict = {}
+ *         return self._eval_context_dict
  */
   }
 
   /* "src/lxml/extensions.pxi":318
- *             if self._eval_context_dict is None:
- *                 self._eval_context_dict = {}
- *             return self._eval_context_dict             # <<<<<<<<<<<<<<
+ *         if self._eval_context_dict is None:
+ *             self._eval_context_dict = {}
+ *         return self._eval_context_dict             # <<<<<<<<<<<<<<
  * 
  *     # Python reference keeping during XPath function evaluation
  */
@@ -167378,10 +167709,10 @@ static PyObject *__pyx_pf_4lxml_5etree_12_BaseContext_12eval_context___get__(str
 
   /* "src/lxml/extensions.pxi":315
  * 
- *     property eval_context:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             if self._eval_context_dict is None:
- *                 self._eval_context_dict = {}
+ *     @property
+ *     def eval_context(self):             # <<<<<<<<<<<<<<
+ *         if self._eval_context_dict is None:
+ *             self._eval_context_dict = {}
  */
 
   /* function exit code */
@@ -175687,10 +176018,10 @@ static int __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_2__init__(struct __pyx_ob
 
 /* "src/lxml/xpath.pxi":137
  * 
- *     property error_log:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
+ *         return self._error_log.copy()
  */
 
 /* Python wrapper */
@@ -175714,10 +176045,10 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xpath.pxi":138
- *     property error_log:
- *         def __get__(self):
- *             assert self._error_log is not None, "XPath evaluator not initialised"             # <<<<<<<<<<<<<<
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):
+ *         assert self._error_log is not None, "XPath evaluator not initialised"             # <<<<<<<<<<<<<<
+ *         return self._error_log.copy()
  * 
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
@@ -175731,9 +176062,9 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
   #endif
 
   /* "src/lxml/xpath.pxi":139
- *         def __get__(self):
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()             # <<<<<<<<<<<<<<
+ *     def error_log(self):
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
+ *         return self._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     def __dealloc__(self):
  */
@@ -175746,10 +176077,10 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
 
   /* "src/lxml/xpath.pxi":137
  * 
- *     property error_log:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
+ *         return self._error_log.copy()
  */
 
   /* function exit code */
@@ -175764,7 +176095,7 @@ static PyObject *__pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_9error_log___get__(
 }
 
 /* "src/lxml/xpath.pxi":141
- *             return self._error_log.copy()
+ *         return self._error_log.copy()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
  *         if self._xpathCtxt is not NULL:
@@ -175863,7 +176194,7 @@ static void __pyx_pf_4lxml_5etree_19_XPathEvaluatorBase_4__dealloc__(struct __py
   }
 
   /* "src/lxml/xpath.pxi":141
- *             return self._error_log.copy()
+ *         return self._error_log.copy()
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
  *         if self._xpathCtxt is not NULL:
@@ -179751,7 +180082,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
  *             self._unlock()
  *         return result             # <<<<<<<<<<<<<<
  * 
- *     property path:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_INCREF(__pyx_v_result);
@@ -179780,12 +180111,12 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4__call__(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "src/lxml/xpath.pxi":454
- *         u"""The literal XPath expression.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._path.decode(u'UTF-8')
+/* "src/lxml/xpath.pxi":452
  * 
+ *     @property
+ *     def path(self):             # <<<<<<<<<<<<<<
+ *         """The literal XPath expression.
+ *         """
  */
 
 /* Python wrapper */
@@ -179808,9 +180139,9 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lx
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xpath.pxi":455
+ *         """The literal XPath expression.
  *         """
- *         def __get__(self):
- *             return self._path.decode(u'UTF-8')             # <<<<<<<<<<<<<<
+ *         return self._path.decode(u'UTF-8')             # <<<<<<<<<<<<<<
  * 
  *     def __dealloc__(self):
  */
@@ -179825,12 +180156,12 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lx
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xpath.pxi":454
- *         u"""The literal XPath expression.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._path.decode(u'UTF-8')
+  /* "src/lxml/xpath.pxi":452
  * 
+ *     @property
+ *     def path(self):             # <<<<<<<<<<<<<<
+ *         """The literal XPath expression.
+ *         """
  */
 
   /* function exit code */
@@ -179845,7 +180176,7 @@ static PyObject *__pyx_pf_4lxml_5etree_5XPath_4path___get__(struct __pyx_obj_4lx
 }
 
 /* "src/lxml/xpath.pxi":457
- *             return self._path.decode(u'UTF-8')
+ *         return self._path.decode(u'UTF-8')
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
  *         if self._xpath is not NULL:
@@ -179897,7 +180228,7 @@ static void __pyx_pf_4lxml_5etree_5XPath_6__dealloc__(struct __pyx_obj_4lxml_5et
   }
 
   /* "src/lxml/xpath.pxi":457
- *             return self._path.decode(u'UTF-8')
+ *         return self._path.decode(u'UTF-8')
  * 
  *     def __dealloc__(self):             # <<<<<<<<<<<<<<
  *         if self._xpath is not NULL:
@@ -182373,7 +182704,7 @@ static void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct
  *     cdef void _register_in_context(self, xslt.xsltTransformContext* ctxt):
  *         xslt.xsltSetCtxtSecurityPrefs(self._prefs, ctxt)             # <<<<<<<<<<<<<<
  * 
- *     property options:
+ *     @property
  */
   (void)(xsltSetCtxtSecurityPrefs(__pyx_v_self->_prefs, __pyx_v_ctxt));
 
@@ -182389,12 +182720,12 @@ static void __pyx_f_4lxml_5etree_17XSLTAccessControl__register_in_context(struct
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/xslt.pxi":231
- *     property options:
- *         u"The access control configuration as a map of options."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return {
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+/* "src/lxml/xslt.pxi":230
+ * 
+ *     @property
+ *     def options(self):             # <<<<<<<<<<<<<<
+ *         """The access control configuration as a map of options."""
+ *         return {
  */
 
 /* Python wrapper */
@@ -182418,20 +182749,20 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xslt.pxi":232
- *         u"The access control configuration as a map of options."
- *         def __get__(self):
- *             return {             # <<<<<<<<<<<<<<
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
- *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
+ *     def options(self):
+ *         """The access control configuration as a map of options."""
+ *         return {             # <<<<<<<<<<<<<<
+ *             u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+ *             u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
  */
   __Pyx_XDECREF(__pyx_r);
 
   /* "src/lxml/xslt.pxi":233
- *         def __get__(self):
- *             return {
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),             # <<<<<<<<<<<<<<
- *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
- *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
+ *         """The access control configuration as a map of options."""
+ *         return {
+ *             u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),             # <<<<<<<<<<<<<<
+ *             u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
+ *             u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
  */
   __pyx_t_1 = __Pyx_PyDict_NewPresized(5); if (unlikely(!__pyx_t_1)) __PYX_ERR(3, 233, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -182441,11 +182772,11 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "src/lxml/xslt.pxi":234
- *             return {
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
- *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),             # <<<<<<<<<<<<<<
- *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
- *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
+ *         return {
+ *             u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+ *             u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),             # <<<<<<<<<<<<<<
+ *             u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
+ *             u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
  */
   __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);
@@ -182453,11 +182784,11 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "src/lxml/xslt.pxi":235
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
- *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
- *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),             # <<<<<<<<<<<<<<
- *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
- *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
+ *             u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+ *             u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
+ *             u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),             # <<<<<<<<<<<<<<
+ *             u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
+ *             u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
  */
   __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);
@@ -182465,11 +182796,11 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "src/lxml/xslt.pxi":236
- *                 u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
- *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
- *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),             # <<<<<<<<<<<<<<
- *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
- *                 }
+ *             u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
+ *             u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
+ *             u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),             # <<<<<<<<<<<<<<
+ *             u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
+ *         }
  */
   __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);
@@ -182477,10 +182808,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "src/lxml/xslt.pxi":237
- *                 u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
- *                 u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
- *                 u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),             # <<<<<<<<<<<<<<
- *                 }
+ *             u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
+ *             u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
+ *             u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),             # <<<<<<<<<<<<<<
+ *         }
  * 
  */
   __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)
@@ -182491,12 +182822,12 @@ static PyObject *__pyx_pf_4lxml_5etree_17XSLTAccessControl_7options___get__(stru
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xslt.pxi":231
- *     property options:
- *         u"The access control configuration as a map of options."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return {
- *                 u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+  /* "src/lxml/xslt.pxi":230
+ * 
+ *     @property
+ *     def options(self):             # <<<<<<<<<<<<<<
+ *         """The access control configuration as a map of options."""
+ *         return {
  */
 
   /* function exit code */
@@ -184691,7 +185022,7 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
  *         if self._c_style is not NULL:
  *             xslt.xsltFreeStylesheet(self._c_style)             # <<<<<<<<<<<<<<
  * 
- *     property error_log:
+ *     @property
  */
     xsltFreeStylesheet(__pyx_v_self->_c_style);
 
@@ -184716,12 +185047,12 @@ static void __pyx_pf_4lxml_5etree_4XSLT_4__dealloc__(struct __pyx_obj_4lxml_5etr
   __Pyx_RefNannyFinishContext();
 }
 
-/* "src/lxml/xslt.pxi":432
- *     property error_log:
- *         u"The log of errors and warnings of an XSLT execution."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._error_log.copy()
+/* "src/lxml/xslt.pxi":431
  * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The log of errors and warnings of an XSLT execution."""
+ *         return self._error_log.copy()
  */
 
 /* Python wrapper */
@@ -184744,9 +185075,9 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(struct __pyx_obj
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/xslt.pxi":433
- *         u"The log of errors and warnings of an XSLT execution."
- *         def __get__(self):
- *             return self._error_log.copy()             # <<<<<<<<<<<<<<
+ *     def error_log(self):
+ *         """The log of errors and warnings of an XSLT execution."""
+ *         return self._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  *     @staticmethod
  */
@@ -184757,12 +185088,12 @@ static PyObject *__pyx_pf_4lxml_5etree_4XSLT_9error_log___get__(struct __pyx_obj
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "src/lxml/xslt.pxi":432
- *     property error_log:
- *         u"The log of errors and warnings of an XSLT execution."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return self._error_log.copy()
+  /* "src/lxml/xslt.pxi":431
  * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The log of errors and warnings of an XSLT execution."""
+ *         return self._error_log.copy()
  */
 
   /* function exit code */
@@ -189505,7 +189836,7 @@ static void __pyx_pf_4lxml_5etree_15_XSLTResultTree_8__releasebuffer__(struct __
 }
 
 /* "src/lxml/xslt.pxi":852
- *         u"""Return an ElementTree with profiling data for the stylesheet run.
+ *         """Return an ElementTree with profiling data for the stylesheet run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             cdef object root
@@ -189640,7 +189971,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_XSLTResultTree_12xslt_profile___get__(
   goto __pyx_L0;
 
   /* "src/lxml/xslt.pxi":852
- *         u"""Return an ElementTree with profiling data for the stylesheet run.
+ *         """Return an ElementTree with profiling data for the stylesheet run.
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
  *             cdef object root
@@ -193386,7 +193717,7 @@ static void __pyx_f_4lxml_5etree__callExtensionElement(xsltTransformContext *__p
   #endif
 }
 
-/* "lxml/etree.pyx":3508
+/* "lxml/etree.pyx":3519
  *     u"Base class for XML validators."
  *     cdef _ErrorLog _error_log
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -193416,14 +193747,14 @@ static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__cinit__", 0);
 
-  /* "lxml/etree.pyx":3509
+  /* "lxml/etree.pyx":3520
  *     cdef _ErrorLog _error_log
  *     def __cinit__(self):
  *         self._error_log = _ErrorLog()             # <<<<<<<<<<<<<<
  * 
  *     def validate(self, etree):
  */
-  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3509, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->_error_log);
@@ -193431,7 +193762,7 @@ static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5
   __pyx_v_self->_error_log = ((struct __pyx_obj_4lxml_5etree__ErrorLog *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3508
+  /* "lxml/etree.pyx":3519
  *     u"Base class for XML validators."
  *     cdef _ErrorLog _error_log
  *     def __cinit__(self):             # <<<<<<<<<<<<<<
@@ -193451,7 +193782,7 @@ static int __pyx_pf_4lxml_5etree_10_Validator___cinit__(struct __pyx_obj_4lxml_5
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3511
+/* "lxml/etree.pyx":3522
  *         self._error_log = _ErrorLog()
  * 
  *     def validate(self, etree):             # <<<<<<<<<<<<<<
@@ -193482,7 +193813,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("validate", 0);
 
-  /* "lxml/etree.pyx":3518
+  /* "lxml/etree.pyx":3529
  *         Returns true if document is valid, false if not.
  *         """
  *         return self(etree)             # <<<<<<<<<<<<<<
@@ -193503,14 +193834,14 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_etree) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_etree);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3518, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3529, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3511
+  /* "lxml/etree.pyx":3522
  *         self._error_log = _ErrorLog()
  * 
  *     def validate(self, etree):             # <<<<<<<<<<<<<<
@@ -193531,7 +193862,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_2validate(struct __pyx_obj_4
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3520
+/* "lxml/etree.pyx":3531
  *         return self(etree)
  * 
  *     def assertValid(self, etree):             # <<<<<<<<<<<<<<
@@ -193564,7 +193895,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("assertValid", 0);
 
-  /* "lxml/etree.pyx":3525
+  /* "lxml/etree.pyx":3536
  *         Raises `DocumentInvalid` if the document does not comply with the schema.
  *         """
  *         if not self(etree):             # <<<<<<<<<<<<<<
@@ -193584,32 +193915,32 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_etree) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_etree);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3525, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3536, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3525, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3536, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_5 = ((!__pyx_t_4) != 0);
   if (unlikely(__pyx_t_5)) {
 
-    /* "lxml/etree.pyx":3526
+    /* "lxml/etree.pyx":3537
  *         """
  *         if not self(etree):
  *             raise DocumentInvalid(self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
  *                     u"Document does not comply with schema"),
  *                                   self._error_log)
  */
-    __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, 3526, __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, 3537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
 
-    /* "lxml/etree.pyx":3528
+    /* "lxml/etree.pyx":3539
  *             raise DocumentInvalid(self._error_log._buildExceptionMessage(
  *                     u"Document does not comply with schema"),
  *                                   self._error_log)             # <<<<<<<<<<<<<<
  * 
  *     def assert_(self, etree):
  */
-    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3526, __pyx_L1_error)
+    __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_GIVEREF(__pyx_t_1);
     PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -193618,21 +193949,21 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
     PyTuple_SET_ITEM(__pyx_t_2, 1, ((PyObject *)__pyx_v_self->_error_log));
     __pyx_t_1 = 0;
 
-    /* "lxml/etree.pyx":3526
+    /* "lxml/etree.pyx":3537
  *         """
  *         if not self(etree):
  *             raise DocumentInvalid(self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
  *                     u"Document does not comply with schema"),
  *                                   self._error_log)
  */
-    __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree_DocumentInvalid), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3526, __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, 3537, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __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(0, 3526, __pyx_L1_error)
+    __PYX_ERR(0, 3537, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3525
+    /* "lxml/etree.pyx":3536
  *         Raises `DocumentInvalid` if the document does not comply with the schema.
  *         """
  *         if not self(etree):             # <<<<<<<<<<<<<<
@@ -193641,7 +193972,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
  */
   }
 
-  /* "lxml/etree.pyx":3520
+  /* "lxml/etree.pyx":3531
  *         return self(etree)
  * 
  *     def assertValid(self, etree):             # <<<<<<<<<<<<<<
@@ -193664,7 +193995,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_4assertValid(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3530
+/* "lxml/etree.pyx":3541
  *                                   self._error_log)
  * 
  *     def assert_(self, etree):             # <<<<<<<<<<<<<<
@@ -193697,7 +194028,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("assert_", 0);
 
-  /* "lxml/etree.pyx":3535
+  /* "lxml/etree.pyx":3546
  *         Raises `AssertionError` if the document does not comply with the schema.
  *         """
  *         if not self(etree):             # <<<<<<<<<<<<<<
@@ -193717,28 +194048,28 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_3, __pyx_v_etree) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_v_etree);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3535, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3546, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3535, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 3546, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_5 = ((!__pyx_t_4) != 0);
   if (unlikely(__pyx_t_5)) {
 
-    /* "lxml/etree.pyx":3536
+    /* "lxml/etree.pyx":3547
  *         """
  *         if not self(etree):
  *             raise AssertionError, self._error_log._buildExceptionMessage(             # <<<<<<<<<<<<<<
  *                 u"Document does not comply with schema")
  * 
  */
-    __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, 3536, __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, 3547, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_Raise(__pyx_builtin_AssertionError, __pyx_t_1, 0, 0);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-    __PYX_ERR(0, 3536, __pyx_L1_error)
+    __PYX_ERR(0, 3547, __pyx_L1_error)
 
-    /* "lxml/etree.pyx":3535
+    /* "lxml/etree.pyx":3546
  *         Raises `AssertionError` if the document does not comply with the schema.
  *         """
  *         if not self(etree):             # <<<<<<<<<<<<<<
@@ -193747,7 +194078,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
  */
   }
 
-  /* "lxml/etree.pyx":3530
+  /* "lxml/etree.pyx":3541
  *                                   self._error_log)
  * 
  *     def assert_(self, etree):             # <<<<<<<<<<<<<<
@@ -193770,7 +194101,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_6assert_(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3539
+/* "lxml/etree.pyx":3550
  *                 u"Document does not comply with schema")
  * 
  *     cpdef _append_log_message(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
@@ -193797,22 +194128,22 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_append_log_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3539, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_append_log_message); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3550, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message)) {
         __Pyx_XDECREF(__pyx_r);
-        __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_domain); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3539, __pyx_L1_error)
+        __pyx_t_3 = __Pyx_PyInt_From_int(__pyx_v_domain); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 3550, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_3);
-        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3539, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyInt_From_int(__pyx_v_type); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 3550, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_level); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3539, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyInt_From_int(__pyx_v_level); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 3550, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3539, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyInt_From_int(__pyx_v_line); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 3550, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_INCREF(__pyx_t_1);
         __pyx_t_7 = __pyx_t_1; __pyx_t_8 = NULL;
@@ -193830,7 +194161,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
         #if CYTHON_FAST_PYCALL
         if (PyFunction_Check(__pyx_t_7)) {
           PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_v_message, __pyx_v_filename};
-          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3539, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -193842,7 +194173,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
         #if CYTHON_FAST_PYCCALL
         if (__Pyx_PyFastCFunction_Check(__pyx_t_7)) {
           PyObject *__pyx_temp[7] = {__pyx_t_8, __pyx_t_3, __pyx_t_4, __pyx_t_5, __pyx_t_6, __pyx_v_message, __pyx_v_filename};
-          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3539, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_7, __pyx_temp+1-__pyx_t_9, 6+__pyx_t_9); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __pyx_L1_error)
           __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
@@ -193852,7 +194183,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
         } else
         #endif
         {
-          __pyx_t_10 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3539, __pyx_L1_error)
+          __pyx_t_10 = PyTuple_New(6+__pyx_t_9); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 3550, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_10);
           if (__pyx_t_8) {
             __Pyx_GIVEREF(__pyx_t_8); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_8); __pyx_t_8 = NULL;
@@ -193875,7 +194206,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
           __pyx_t_4 = 0;
           __pyx_t_5 = 0;
           __pyx_t_6 = 0;
-          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3539, __pyx_L1_error)
+          __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_10, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3550, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_2);
           __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
         }
@@ -193885,7 +194216,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -193893,12 +194224,12 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "lxml/etree.pyx":3541
+  /* "lxml/etree.pyx":3552
  *     cpdef _append_log_message(self, int domain, int type, int level, int line,
  *                               message, filename):
  *         self._error_log._receiveGeneric(domain, type, level, line, message,             # <<<<<<<<<<<<<<
@@ -193907,7 +194238,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__append_log_message(struct __
  */
   __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":3539
+  /* "lxml/etree.pyx":3550
  *                 u"Document does not comply with schema")
  * 
  *     cpdef _append_log_message(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
@@ -193980,35 +194311,35 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message(PyObjec
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 1); __PYX_ERR(0, 3539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 1); __PYX_ERR(0, 3550, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_level)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 2); __PYX_ERR(0, 3539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 2); __PYX_ERR(0, 3550, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  3:
         if (likely((values[3] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_line_2)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 3); __PYX_ERR(0, 3539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 3); __PYX_ERR(0, 3550, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  4:
         if (likely((values[4] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_message)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 4); __PYX_ERR(0, 3539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 4); __PYX_ERR(0, 3550, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  5:
         if (likely((values[5] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_filename)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 5); __PYX_ERR(0, 3539, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, 5); __PYX_ERR(0, 3550, __pyx_L3_error)
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_append_log_message") < 0)) __PYX_ERR(0, 3539, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "_append_log_message") < 0)) __PYX_ERR(0, 3550, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 6) {
       goto __pyx_L5_argtuple_error;
@@ -194020,16 +194351,16 @@ static PyObject *__pyx_pw_4lxml_5etree_10_Validator_9_append_log_message(PyObjec
       values[4] = PyTuple_GET_ITEM(__pyx_args, 4);
       values[5] = PyTuple_GET_ITEM(__pyx_args, 5);
     }
-    __pyx_v_domain = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_domain == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3539, __pyx_L3_error)
-    __pyx_v_type = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3539, __pyx_L3_error)
-    __pyx_v_level = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3539, __pyx_L3_error)
-    __pyx_v_line = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3539, __pyx_L3_error)
+    __pyx_v_domain = __Pyx_PyInt_As_int(values[0]); if (unlikely((__pyx_v_domain == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3550, __pyx_L3_error)
+    __pyx_v_type = __Pyx_PyInt_As_int(values[1]); if (unlikely((__pyx_v_type == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3550, __pyx_L3_error)
+    __pyx_v_level = __Pyx_PyInt_As_int(values[2]); if (unlikely((__pyx_v_level == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3550, __pyx_L3_error)
+    __pyx_v_line = __Pyx_PyInt_As_int(values[3]); if (unlikely((__pyx_v_line == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 3550, __pyx_L3_error)
     __pyx_v_message = values[4];
     __pyx_v_filename = values[5];
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3539, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("_append_log_message", 1, 6, 6, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 3550, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.etree._Validator._append_log_message", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -194048,7 +194379,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_8_append_log_message(struct
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_append_log_message", 0);
   __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, 3539, __pyx_L1_error)
+  __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, 3550, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -194065,7 +194396,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_8_append_log_message(struct
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3544
+/* "lxml/etree.pyx":3555
  *                                         filename)
  * 
  *     cpdef _clear_error_log(self):             # <<<<<<<<<<<<<<
@@ -194086,12 +194417,12 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
   if (unlikely(__pyx_skip_dispatch)) ;
   /* Check if overridden in Python */
   else if (unlikely((Py_TYPE(((PyObject *)__pyx_v_self))->tp_dictoffset != 0) || (Py_TYPE(((PyObject *)__pyx_v_self))->tp_flags & (Py_TPFLAGS_IS_ABSTRACT | Py_TPFLAGS_HEAPTYPE)))) {
-    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+    #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     static PY_UINT64_T __pyx_tp_dict_version = __PYX_DICT_VERSION_INIT, __pyx_obj_dict_version = __PYX_DICT_VERSION_INIT;
     if (unlikely(!__Pyx_object_dict_version_matches(((PyObject *)__pyx_v_self), __pyx_tp_dict_version, __pyx_obj_dict_version))) {
       PY_UINT64_T __pyx_type_dict_guard = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       #endif
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear_error_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3544, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_self), __pyx_n_s_clear_error_log); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3555, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       if (!PyCFunction_Check(__pyx_t_1) || (PyCFunction_GET_FUNCTION(__pyx_t_1) != (PyCFunction)(void*)__pyx_pw_4lxml_5etree_10_Validator_11_clear_error_log)) {
         __Pyx_XDECREF(__pyx_r);
@@ -194108,7 +194439,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
         }
         __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
         __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3544, __pyx_L1_error)
+        if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3555, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         __pyx_r = __pyx_t_2;
@@ -194116,7 +194447,7 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L0;
       }
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
       __pyx_tp_dict_version = __Pyx_get_tp_dict_version(((PyObject *)__pyx_v_self));
       __pyx_obj_dict_version = __Pyx_get_object_dict_version(((PyObject *)__pyx_v_self));
       if (unlikely(__pyx_type_dict_guard != __pyx_tp_dict_version)) {
@@ -194124,23 +194455,23 @@ static PyObject *__pyx_f_4lxml_5etree_10_Validator__clear_error_log(struct __pyx
       }
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP
+      #if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_PYTYPE_LOOKUP && CYTHON_USE_TYPE_SLOTS
     }
     #endif
   }
 
-  /* "lxml/etree.pyx":3545
+  /* "lxml/etree.pyx":3556
  * 
  *     cpdef _clear_error_log(self):
  *         self._error_log.clear()             # <<<<<<<<<<<<<<
  * 
- *     property error_log:
+ *     @property
  */
-  __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, 3545, __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, 3556, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3544
+  /* "lxml/etree.pyx":3555
  *                                         filename)
  * 
  *     cpdef _clear_error_log(self):             # <<<<<<<<<<<<<<
@@ -194184,7 +194515,7 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_10_clear_error_log(struct __
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_clear_error_log", 0);
   __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, 3544, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_5etree_10_Validator__clear_error_log(__pyx_v_self, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3555, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
@@ -194201,12 +194532,12 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_10_clear_error_log(struct __
   return __pyx_r;
 }
 
-/* "lxml/etree.pyx":3549
- *     property error_log:
- *         u"The log of validation errors and warnings."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()
+/* "lxml/etree.pyx":3559
+ * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The log of validation errors and warnings."""
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
  */
 
 /* Python wrapper */
@@ -194229,11 +194560,11 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/etree.pyx":3550
- *         u"The log of validation errors and warnings."
- *         def __get__(self):
- *             assert self._error_log is not None, "XPath evaluator not initialised"             # <<<<<<<<<<<<<<
- *             return self._error_log.copy()
+  /* "lxml/etree.pyx":3561
+ *     def error_log(self):
+ *         """The log of validation errors and warnings."""
+ *         assert self._error_log is not None, "XPath evaluator not initialised"             # <<<<<<<<<<<<<<
+ *         return self._error_log.copy()
  * 
  */
   #ifndef CYTHON_WITHOUT_ASSERTIONS
@@ -194241,31 +194572,31 @@ static PyObject *__pyx_pf_4lxml_5etree_10_Validator_9error_log___get__(struct __
     __pyx_t_1 = (((PyObject *)__pyx_v_self->_error_log) != Py_None);
     if (unlikely(!(__pyx_t_1 != 0))) {
       PyErr_SetObject(PyExc_AssertionError, __pyx_kp_s_XPath_evaluator_not_initialised);
-      __PYX_ERR(0, 3550, __pyx_L1_error)
+      __PYX_ERR(0, 3561, __pyx_L1_error)
     }
   }
   #endif
 
-  /* "lxml/etree.pyx":3551
- *         def __get__(self):
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()             # <<<<<<<<<<<<<<
+  /* "lxml/etree.pyx":3562
+ *         """The log of validation errors and warnings."""
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
+ *         return self._error_log.copy()             # <<<<<<<<<<<<<<
  * 
  * include "dtd.pxi"        # DTD
  */
   __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, 3551, __pyx_L1_error)
+  __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, 3562, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/etree.pyx":3549
- *     property error_log:
- *         u"The log of validation errors and warnings."
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             assert self._error_log is not None, "XPath evaluator not initialised"
- *             return self._error_log.copy()
+  /* "lxml/etree.pyx":3559
+ * 
+ *     @property
+ *     def error_log(self):             # <<<<<<<<<<<<<<
+ *         """The log of validation errors and warnings."""
+ *         assert self._error_log is not None, "XPath evaluator not initialised"
  */
 
   /* function exit code */
@@ -194375,7 +194706,7 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct
  *     def __repr__(self):
  *         return "<%s.%s object name=%r type=%r occur=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.type, self.occur, id(self))             # <<<<<<<<<<<<<<
  * 
- *     property name:
+ *     @property
  */
   __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)
@@ -194450,10 +194781,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl___repr__(struct
 
 /* "src/lxml/dtd.pxi":32
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
 /* Python wrapper */
@@ -194478,20 +194809,20 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":33
- *     property name:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
+ *     def name(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property type:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
@@ -194509,10 +194840,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
 
   /* "src/lxml/dtd.pxi":32
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
   /* function exit code */
@@ -194529,10 +194860,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4name___get__(st
 
 /* "src/lxml/dtd.pxi":37
  * 
- *     property type:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.type
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.type
  */
 
 /* Python wrapper */
@@ -194557,40 +194888,40 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":38
- *     property type:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef int type = self._c_node.type
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
+ *     @property
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef int type = self._c_node.type
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.type             # <<<<<<<<<<<<<<
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
- *                return "pcdata"
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.type             # <<<<<<<<<<<<<<
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:
+ *            return "pcdata"
  */
   __pyx_t_2 = __pyx_v_self->_c_node->type;
   __pyx_v_type = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":40
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.type
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:             # <<<<<<<<<<<<<<
- *                return "pcdata"
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.type
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:             # <<<<<<<<<<<<<<
+ *            return "pcdata"
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
  */
   switch (__pyx_v_type) {
     case XML_ELEMENT_CONTENT_PCDATA:
 
     /* "src/lxml/dtd.pxi":41
- *            cdef int type = self._c_node.type
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
- *                return "pcdata"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
- *                return "element"
+ *        cdef int type = self._c_node.type
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:
+ *            return "pcdata"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+ *            return "element"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_pcdata);
@@ -194598,21 +194929,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":40
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.type
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:             # <<<<<<<<<<<<<<
- *                return "pcdata"
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.type
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:             # <<<<<<<<<<<<<<
+ *            return "pcdata"
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
  */
     break;
     case XML_ELEMENT_CONTENT_ELEMENT:
 
     /* "src/lxml/dtd.pxi":43
- *                return "pcdata"
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
- *                return "element"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
- *                return "seq"
+ *            return "pcdata"
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+ *            return "element"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_CONTENT_SEQ:
+ *            return "seq"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_element);
@@ -194620,21 +194951,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":42
- *            if type == tree.XML_ELEMENT_CONTENT_PCDATA:
- *                return "pcdata"
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:             # <<<<<<<<<<<<<<
- *                return "element"
- *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
+ *        if type == tree.XML_ELEMENT_CONTENT_PCDATA:
+ *            return "pcdata"
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:             # <<<<<<<<<<<<<<
+ *            return "element"
+ *        elif type == tree.XML_ELEMENT_CONTENT_SEQ:
  */
     break;
     case XML_ELEMENT_CONTENT_SEQ:
 
     /* "src/lxml/dtd.pxi":45
- *                return "element"
- *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
- *                return "seq"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_CONTENT_OR:
- *                return "or"
+ *            return "element"
+ *        elif type == tree.XML_ELEMENT_CONTENT_SEQ:
+ *            return "seq"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_CONTENT_OR:
+ *            return "or"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_seq);
@@ -194642,21 +194973,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":44
- *            elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
- *                return "element"
- *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:             # <<<<<<<<<<<<<<
- *                return "seq"
- *            elif type == tree.XML_ELEMENT_CONTENT_OR:
+ *        elif type == tree.XML_ELEMENT_CONTENT_ELEMENT:
+ *            return "element"
+ *        elif type == tree.XML_ELEMENT_CONTENT_SEQ:             # <<<<<<<<<<<<<<
+ *            return "seq"
+ *        elif type == tree.XML_ELEMENT_CONTENT_OR:
  */
     break;
     case XML_ELEMENT_CONTENT_OR:
 
     /* "src/lxml/dtd.pxi":47
- *                return "seq"
- *            elif type == tree.XML_ELEMENT_CONTENT_OR:
- *                return "or"             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            return "seq"
+ *        elif type == tree.XML_ELEMENT_CONTENT_OR:
+ *            return "or"             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_or);
@@ -194664,21 +194995,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":46
- *            elif type == tree.XML_ELEMENT_CONTENT_SEQ:
- *                return "seq"
- *            elif type == tree.XML_ELEMENT_CONTENT_OR:             # <<<<<<<<<<<<<<
- *                return "or"
- *            else:
+ *        elif type == tree.XML_ELEMENT_CONTENT_SEQ:
+ *            return "seq"
+ *        elif type == tree.XML_ELEMENT_CONTENT_OR:             # <<<<<<<<<<<<<<
+ *            return "or"
+ *        else:
  */
     break;
     default:
 
     /* "src/lxml/dtd.pxi":49
- *                return "or"
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return "or"
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property occur:
+ *     @property
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -194688,10 +195019,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
 
   /* "src/lxml/dtd.pxi":37
  * 
- *     property type:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.type
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.type
  */
 
   /* function exit code */
@@ -194706,10 +195037,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4type___get__(st
 
 /* "src/lxml/dtd.pxi":52
  * 
- *     property occur:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int occur = self._c_node.ocur
+ *     @property
+ *     def occur(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int occur = self._c_node.ocur
  */
 
 /* Python wrapper */
@@ -194734,40 +195065,40 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":53
- *     property occur:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef int occur = self._c_node.ocur
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
+ *     @property
+ *     def occur(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef int occur = self._c_node.ocur
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int occur = self._c_node.ocur             # <<<<<<<<<<<<<<
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
- *                return "once"
+ *     def occur(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int occur = self._c_node.ocur             # <<<<<<<<<<<<<<
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:
+ *            return "once"
  */
   __pyx_t_2 = __pyx_v_self->_c_node->ocur;
   __pyx_v_occur = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":55
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int occur = self._c_node.ocur
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:             # <<<<<<<<<<<<<<
- *                return "once"
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int occur = self._c_node.ocur
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:             # <<<<<<<<<<<<<<
+ *            return "once"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:
  */
   switch (__pyx_v_occur) {
     case XML_ELEMENT_CONTENT_ONCE:
 
     /* "src/lxml/dtd.pxi":56
- *            cdef int occur = self._c_node.ocur
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
- *                return "once"             # <<<<<<<<<<<<<<
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
- *                return "opt"
+ *        cdef int occur = self._c_node.ocur
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:
+ *            return "once"             # <<<<<<<<<<<<<<
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+ *            return "opt"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_once);
@@ -194775,21 +195106,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":55
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int occur = self._c_node.ocur
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:             # <<<<<<<<<<<<<<
- *                return "once"
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int occur = self._c_node.ocur
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:             # <<<<<<<<<<<<<<
+ *            return "once"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:
  */
     break;
     case XML_ELEMENT_CONTENT_OPT:
 
     /* "src/lxml/dtd.pxi":58
- *                return "once"
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
- *                return "opt"             # <<<<<<<<<<<<<<
- *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
- *                return "mult"
+ *            return "once"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+ *            return "opt"             # <<<<<<<<<<<<<<
+ *        elif occur == tree.XML_ELEMENT_CONTENT_MULT:
+ *            return "mult"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_opt);
@@ -194797,21 +195128,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":57
- *            if occur == tree.XML_ELEMENT_CONTENT_ONCE:
- *                return "once"
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:             # <<<<<<<<<<<<<<
- *                return "opt"
- *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
+ *        if occur == tree.XML_ELEMENT_CONTENT_ONCE:
+ *            return "once"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:             # <<<<<<<<<<<<<<
+ *            return "opt"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_MULT:
  */
     break;
     case XML_ELEMENT_CONTENT_MULT:
 
     /* "src/lxml/dtd.pxi":60
- *                return "opt"
- *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
- *                return "mult"             # <<<<<<<<<<<<<<
- *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
- *                return "plus"
+ *            return "opt"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_MULT:
+ *            return "mult"             # <<<<<<<<<<<<<<
+ *        elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
+ *            return "plus"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_mult);
@@ -194819,21 +195150,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":59
- *            elif occur == tree.XML_ELEMENT_CONTENT_OPT:
- *                return "opt"
- *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:             # <<<<<<<<<<<<<<
- *                return "mult"
- *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
+ *        elif occur == tree.XML_ELEMENT_CONTENT_OPT:
+ *            return "opt"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_MULT:             # <<<<<<<<<<<<<<
+ *            return "mult"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
  */
     break;
     case XML_ELEMENT_CONTENT_PLUS:
 
     /* "src/lxml/dtd.pxi":62
- *                return "mult"
- *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
- *                return "plus"             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            return "mult"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_PLUS:
+ *            return "plus"             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_plus);
@@ -194841,21 +195172,21 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":61
- *            elif occur == tree.XML_ELEMENT_CONTENT_MULT:
- *                return "mult"
- *            elif occur == tree.XML_ELEMENT_CONTENT_PLUS:             # <<<<<<<<<<<<<<
- *                return "plus"
- *            else:
+ *        elif occur == tree.XML_ELEMENT_CONTENT_MULT:
+ *            return "mult"
+ *        elif occur == tree.XML_ELEMENT_CONTENT_PLUS:             # <<<<<<<<<<<<<<
+ *            return "plus"
+ *        else:
  */
     break;
     default:
 
     /* "src/lxml/dtd.pxi":64
- *                return "plus"
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return "plus"
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property left:
+ *     @property
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -194865,10 +195196,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
 
   /* "src/lxml/dtd.pxi":52
  * 
- *     property occur:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int occur = self._c_node.ocur
+ *     @property
+ *     def occur(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int occur = self._c_node.ocur
  */
 
   /* function exit code */
@@ -194883,10 +195214,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5occur___get__(s
 
 /* "src/lxml/dtd.pxi":67
  * 
- *     property left:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            c1 = self._c_node.c1
+ *     @property
+ *     def left(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c1 = self._c_node.c1
  */
 
 /* Python wrapper */
@@ -194915,40 +195246,40 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":68
- *     property left:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            c1 = self._c_node.c1
- *            if c1:
+ *     @property
+ *     def left(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        c1 = self._c_node.c1
+ *        if c1:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            c1 = self._c_node.c1             # <<<<<<<<<<<<<<
- *            if c1:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *     def left(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c1 = self._c_node.c1             # <<<<<<<<<<<<<<
+ *        if c1:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
   __pyx_t_2 = __pyx_v_self->_c_node->c1;
   __pyx_v_c1 = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":70
- *            _assertValidDTDNode(self, self._c_node)
- *            c1 = self._c_node.c1
- *            if c1:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c1 = self._c_node.c1
+ *        if c1:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   __pyx_t_3 = (__pyx_v_c1 != 0);
   if (__pyx_t_3) {
 
     /* "src/lxml/dtd.pxi":71
- *            c1 = self._c_node.c1
- *            if c1:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c1
+ *        c1 = self._c_node.c1
+ *        if c1:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c1
  */
     __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));
@@ -194959,11 +195290,11 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":72
- *            if c1:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd             # <<<<<<<<<<<<<<
- *                node._c_node = <tree.xmlElementContent*>c1
- *                return node
+ *        if c1:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd             # <<<<<<<<<<<<<<
+ *            node._c_node = <tree.xmlElementContent*>c1
+ *            return node
  */
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
@@ -194974,20 +195305,20 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":73
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c1             # <<<<<<<<<<<<<<
- *                return node
- *            else:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c1             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
  */
     __pyx_v_node->_c_node = ((xmlElementContent *)__pyx_v_c1);
 
     /* "src/lxml/dtd.pxi":74
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c1
- *                return node             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c1
+ *            return node             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
@@ -194995,20 +195326,20 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":70
- *            _assertValidDTDNode(self, self._c_node)
- *            c1 = self._c_node.c1
- *            if c1:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c1 = self._c_node.c1
+ *        if c1:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   }
 
   /* "src/lxml/dtd.pxi":76
- *                return node
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property right:
+ *     @property
  */
   /*else*/ {
     __Pyx_XDECREF(__pyx_r);
@@ -195018,10 +195349,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
 
   /* "src/lxml/dtd.pxi":67
  * 
- *     property left:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            c1 = self._c_node.c1
+ *     @property
+ *     def left(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c1 = self._c_node.c1
  */
 
   /* function exit code */
@@ -195039,10 +195370,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_4left___get__(st
 
 /* "src/lxml/dtd.pxi":79
  * 
- *     property right:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            c2 = self._c_node.c2
+ *     @property
+ *     def right(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c2 = self._c_node.c2
  */
 
 /* Python wrapper */
@@ -195071,40 +195402,40 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":80
- *     property right:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            c2 = self._c_node.c2
- *            if c2:
+ *     @property
+ *     def right(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        c2 = self._c_node.c2
+ *        if c2:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            c2 = self._c_node.c2             # <<<<<<<<<<<<<<
- *            if c2:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *     def right(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c2 = self._c_node.c2             # <<<<<<<<<<<<<<
+ *        if c2:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
   __pyx_t_2 = __pyx_v_self->_c_node->c2;
   __pyx_v_c2 = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":82
- *            _assertValidDTDNode(self, self._c_node)
- *            c2 = self._c_node.c2
- *            if c2:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c2 = self._c_node.c2
+ *        if c2:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   __pyx_t_3 = (__pyx_v_c2 != 0);
   if (__pyx_t_3) {
 
     /* "src/lxml/dtd.pxi":83
- *            c2 = self._c_node.c2
- *            if c2:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c2
+ *        c2 = self._c_node.c2
+ *        if c2:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c2
  */
     __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));
@@ -195115,11 +195446,11 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":84
- *            if c2:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd             # <<<<<<<<<<<<<<
- *                node._c_node = <tree.xmlElementContent*>c2
- *                return node
+ *        if c2:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd             # <<<<<<<<<<<<<<
+ *            node._c_node = <tree.xmlElementContent*>c2
+ *            return node
  */
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
@@ -195130,20 +195461,20 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":85
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c2             # <<<<<<<<<<<<<<
- *                return node
- *            else:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c2             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
  */
     __pyx_v_node->_c_node = ((xmlElementContent *)__pyx_v_c2);
 
     /* "src/lxml/dtd.pxi":86
- *                node._dtd = self._dtd
- *                node._c_node = <tree.xmlElementContent*>c2
- *                return node             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            node._dtd = self._dtd
+ *            node._c_node = <tree.xmlElementContent*>c2
+ *            return node             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
@@ -195151,18 +195482,18 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":82
- *            _assertValidDTDNode(self, self._c_node)
- *            c2 = self._c_node.c2
- *            if c2:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c2 = self._c_node.c2
+ *        if c2:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   }
 
   /* "src/lxml/dtd.pxi":88
- *                return node
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
  * 
  */
@@ -195174,10 +195505,10 @@ static PyObject *__pyx_pf_4lxml_5etree_22_DTDElementContentDecl_5right___get__(s
 
   /* "src/lxml/dtd.pxi":79
  * 
- *     property right:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            c2 = self._c_node.c2
+ *     @property
+ *     def right(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        c2 = self._c_node.c2
  */
 
   /* function exit code */
@@ -195234,7 +195565,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx
  *     def __repr__(self):
  *         return "<%s.%s object name=%r elemname=%r prefix=%r type=%r default=%r default_value=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.elemname, self.prefix, self.type, self.default, self.default_value, id(self))             # <<<<<<<<<<<<<<
  * 
- *     property name:
+ *     @property
  */
   __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)
@@ -195327,10 +195658,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl___repr__(struct __pyx
 
 /* "src/lxml/dtd.pxi":102
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
 /* Python wrapper */
@@ -195355,20 +195686,20 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":103
- *     property name:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
+ *     def name(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property elemname:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
@@ -195386,10 +195717,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
 
   /* "src/lxml/dtd.pxi":102
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
   /* function exit code */
@@ -195406,10 +195737,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4name___get__(struct
 
 /* "src/lxml/dtd.pxi":107
  * 
- *     property elemname:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
+ *     @property
+ *     def elemname(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
  */
 
 /* Python wrapper */
@@ -195434,20 +195765,20 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":108
- *     property elemname:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
+ *     @property
+ *     def elemname(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None             # <<<<<<<<<<<<<<
+ *     def elemname(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property prefix:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->elem != NULL) != 0)) {
@@ -195465,10 +195796,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
 
   /* "src/lxml/dtd.pxi":107
  * 
- *     property elemname:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
+ *     @property
+ *     def elemname(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.elem) if self._c_node.elem is not NULL else None
  */
 
   /* function exit code */
@@ -195485,10 +195816,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_8elemname___get__(str
 
 /* "src/lxml/dtd.pxi":112
  * 
- *     property prefix:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  */
 
 /* Python wrapper */
@@ -195513,20 +195844,20 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":113
- *     property prefix:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None             # <<<<<<<<<<<<<<
+ *     def prefix(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property type:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->prefix != NULL) != 0)) {
@@ -195544,10 +195875,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
 
   /* "src/lxml/dtd.pxi":112
  * 
- *     property prefix:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  */
 
   /* function exit code */
@@ -195564,10 +195895,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_6prefix___get__(struc
 
 /* "src/lxml/dtd.pxi":117
  * 
- *     property type:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.atype
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.atype
  */
 
 /* Python wrapper */
@@ -195592,40 +195923,40 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":118
- *     property type:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef int type = self._c_node.atype
- *            if type == tree.XML_ATTRIBUTE_CDATA:
+ *     @property
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef int type = self._c_node.atype
+ *        if type == tree.XML_ATTRIBUTE_CDATA:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.atype             # <<<<<<<<<<<<<<
- *            if type == tree.XML_ATTRIBUTE_CDATA:
- *                return "cdata"
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.atype             # <<<<<<<<<<<<<<
+ *        if type == tree.XML_ATTRIBUTE_CDATA:
+ *            return "cdata"
  */
   __pyx_t_2 = __pyx_v_self->_c_node->atype;
   __pyx_v_type = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":120
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.atype
- *            if type == tree.XML_ATTRIBUTE_CDATA:             # <<<<<<<<<<<<<<
- *                return "cdata"
- *            elif type == tree.XML_ATTRIBUTE_ID:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.atype
+ *        if type == tree.XML_ATTRIBUTE_CDATA:             # <<<<<<<<<<<<<<
+ *            return "cdata"
+ *        elif type == tree.XML_ATTRIBUTE_ID:
  */
   switch (__pyx_v_type) {
     case XML_ATTRIBUTE_CDATA:
 
     /* "src/lxml/dtd.pxi":121
- *            cdef int type = self._c_node.atype
- *            if type == tree.XML_ATTRIBUTE_CDATA:
- *                return "cdata"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_ID:
- *                return "id"
+ *        cdef int type = self._c_node.atype
+ *        if type == tree.XML_ATTRIBUTE_CDATA:
+ *            return "cdata"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_ID:
+ *            return "id"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_cdata);
@@ -195633,21 +195964,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":120
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.atype
- *            if type == tree.XML_ATTRIBUTE_CDATA:             # <<<<<<<<<<<<<<
- *                return "cdata"
- *            elif type == tree.XML_ATTRIBUTE_ID:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.atype
+ *        if type == tree.XML_ATTRIBUTE_CDATA:             # <<<<<<<<<<<<<<
+ *            return "cdata"
+ *        elif type == tree.XML_ATTRIBUTE_ID:
  */
     break;
     case XML_ATTRIBUTE_ID:
 
     /* "src/lxml/dtd.pxi":123
- *                return "cdata"
- *            elif type == tree.XML_ATTRIBUTE_ID:
- *                return "id"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_IDREF:
- *                return "idref"
+ *            return "cdata"
+ *        elif type == tree.XML_ATTRIBUTE_ID:
+ *            return "id"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_IDREF:
+ *            return "idref"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_id);
@@ -195655,21 +195986,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":122
- *            if type == tree.XML_ATTRIBUTE_CDATA:
- *                return "cdata"
- *            elif type == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
- *                return "id"
- *            elif type == tree.XML_ATTRIBUTE_IDREF:
+ *        if type == tree.XML_ATTRIBUTE_CDATA:
+ *            return "cdata"
+ *        elif type == tree.XML_ATTRIBUTE_ID:             # <<<<<<<<<<<<<<
+ *            return "id"
+ *        elif type == tree.XML_ATTRIBUTE_IDREF:
  */
     break;
     case XML_ATTRIBUTE_IDREF:
 
     /* "src/lxml/dtd.pxi":125
- *                return "id"
- *            elif type == tree.XML_ATTRIBUTE_IDREF:
- *                return "idref"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_IDREFS:
- *                return "idrefs"
+ *            return "id"
+ *        elif type == tree.XML_ATTRIBUTE_IDREF:
+ *            return "idref"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_IDREFS:
+ *            return "idrefs"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_idref);
@@ -195677,21 +196008,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":124
- *            elif type == tree.XML_ATTRIBUTE_ID:
- *                return "id"
- *            elif type == tree.XML_ATTRIBUTE_IDREF:             # <<<<<<<<<<<<<<
- *                return "idref"
- *            elif type == tree.XML_ATTRIBUTE_IDREFS:
+ *        elif type == tree.XML_ATTRIBUTE_ID:
+ *            return "id"
+ *        elif type == tree.XML_ATTRIBUTE_IDREF:             # <<<<<<<<<<<<<<
+ *            return "idref"
+ *        elif type == tree.XML_ATTRIBUTE_IDREFS:
  */
     break;
     case XML_ATTRIBUTE_IDREFS:
 
     /* "src/lxml/dtd.pxi":127
- *                return "idref"
- *            elif type == tree.XML_ATTRIBUTE_IDREFS:
- *                return "idrefs"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_ENTITY:
- *                return "entity"
+ *            return "idref"
+ *        elif type == tree.XML_ATTRIBUTE_IDREFS:
+ *            return "idrefs"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_ENTITY:
+ *            return "entity"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_idrefs);
@@ -195699,21 +196030,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":126
- *            elif type == tree.XML_ATTRIBUTE_IDREF:
- *                return "idref"
- *            elif type == tree.XML_ATTRIBUTE_IDREFS:             # <<<<<<<<<<<<<<
- *                return "idrefs"
- *            elif type == tree.XML_ATTRIBUTE_ENTITY:
+ *        elif type == tree.XML_ATTRIBUTE_IDREF:
+ *            return "idref"
+ *        elif type == tree.XML_ATTRIBUTE_IDREFS:             # <<<<<<<<<<<<<<
+ *            return "idrefs"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITY:
  */
     break;
     case XML_ATTRIBUTE_ENTITY:
 
     /* "src/lxml/dtd.pxi":129
- *                return "idrefs"
- *            elif type == tree.XML_ATTRIBUTE_ENTITY:
- *                return "entity"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
- *                return "entities"
+ *            return "idrefs"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITY:
+ *            return "entity"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_ENTITIES:
+ *            return "entities"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_entity);
@@ -195721,21 +196052,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":128
- *            elif type == tree.XML_ATTRIBUTE_IDREFS:
- *                return "idrefs"
- *            elif type == tree.XML_ATTRIBUTE_ENTITY:             # <<<<<<<<<<<<<<
- *                return "entity"
- *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
+ *        elif type == tree.XML_ATTRIBUTE_IDREFS:
+ *            return "idrefs"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITY:             # <<<<<<<<<<<<<<
+ *            return "entity"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITIES:
  */
     break;
     case XML_ATTRIBUTE_ENTITIES:
 
     /* "src/lxml/dtd.pxi":131
- *                return "entity"
- *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
- *                return "entities"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
- *                return "nmtoken"
+ *            return "entity"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITIES:
+ *            return "entities"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKEN:
+ *            return "nmtoken"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_entities);
@@ -195743,21 +196074,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":130
- *            elif type == tree.XML_ATTRIBUTE_ENTITY:
- *                return "entity"
- *            elif type == tree.XML_ATTRIBUTE_ENTITIES:             # <<<<<<<<<<<<<<
- *                return "entities"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
+ *        elif type == tree.XML_ATTRIBUTE_ENTITY:
+ *            return "entity"
+ *        elif type == tree.XML_ATTRIBUTE_ENTITIES:             # <<<<<<<<<<<<<<
+ *            return "entities"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKEN:
  */
     break;
     case XML_ATTRIBUTE_NMTOKEN:
 
     /* "src/lxml/dtd.pxi":133
- *                return "entities"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
- *                return "nmtoken"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
- *                return "nmtokens"
+ *            return "entities"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKEN:
+ *            return "nmtoken"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKENS:
+ *            return "nmtokens"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_nmtoken);
@@ -195765,21 +196096,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":132
- *            elif type == tree.XML_ATTRIBUTE_ENTITIES:
- *                return "entities"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:             # <<<<<<<<<<<<<<
- *                return "nmtoken"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
+ *        elif type == tree.XML_ATTRIBUTE_ENTITIES:
+ *            return "entities"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKEN:             # <<<<<<<<<<<<<<
+ *            return "nmtoken"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKENS:
  */
     break;
     case XML_ATTRIBUTE_NMTOKENS:
 
     /* "src/lxml/dtd.pxi":135
- *                return "nmtoken"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
- *                return "nmtokens"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
- *                return "enumeration"
+ *            return "nmtoken"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKENS:
+ *            return "nmtokens"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_ENUMERATION:
+ *            return "enumeration"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_nmtokens);
@@ -195787,21 +196118,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":134
- *            elif type == tree.XML_ATTRIBUTE_NMTOKEN:
- *                return "nmtoken"
- *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:             # <<<<<<<<<<<<<<
- *                return "nmtokens"
- *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKEN:
+ *            return "nmtoken"
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKENS:             # <<<<<<<<<<<<<<
+ *            return "nmtokens"
+ *        elif type == tree.XML_ATTRIBUTE_ENUMERATION:
  */
     break;
     case XML_ATTRIBUTE_ENUMERATION:
 
     /* "src/lxml/dtd.pxi":137
- *                return "nmtokens"
- *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
- *                return "enumeration"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ATTRIBUTE_NOTATION:
- *                return "notation"
+ *            return "nmtokens"
+ *        elif type == tree.XML_ATTRIBUTE_ENUMERATION:
+ *            return "enumeration"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ATTRIBUTE_NOTATION:
+ *            return "notation"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_enumeration);
@@ -195809,21 +196140,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":136
- *            elif type == tree.XML_ATTRIBUTE_NMTOKENS:
- *                return "nmtokens"
- *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:             # <<<<<<<<<<<<<<
- *                return "enumeration"
- *            elif type == tree.XML_ATTRIBUTE_NOTATION:
+ *        elif type == tree.XML_ATTRIBUTE_NMTOKENS:
+ *            return "nmtokens"
+ *        elif type == tree.XML_ATTRIBUTE_ENUMERATION:             # <<<<<<<<<<<<<<
+ *            return "enumeration"
+ *        elif type == tree.XML_ATTRIBUTE_NOTATION:
  */
     break;
     case XML_ATTRIBUTE_NOTATION:
 
     /* "src/lxml/dtd.pxi":139
- *                return "enumeration"
- *            elif type == tree.XML_ATTRIBUTE_NOTATION:
- *                return "notation"             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            return "enumeration"
+ *        elif type == tree.XML_ATTRIBUTE_NOTATION:
+ *            return "notation"             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_notation);
@@ -195831,21 +196162,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":138
- *            elif type == tree.XML_ATTRIBUTE_ENUMERATION:
- *                return "enumeration"
- *            elif type == tree.XML_ATTRIBUTE_NOTATION:             # <<<<<<<<<<<<<<
- *                return "notation"
- *            else:
+ *        elif type == tree.XML_ATTRIBUTE_ENUMERATION:
+ *            return "enumeration"
+ *        elif type == tree.XML_ATTRIBUTE_NOTATION:             # <<<<<<<<<<<<<<
+ *            return "notation"
+ *        else:
  */
     break;
     default:
 
     /* "src/lxml/dtd.pxi":141
- *                return "notation"
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return "notation"
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property default:
+ *     @property
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -195855,10 +196186,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
 
   /* "src/lxml/dtd.pxi":117
  * 
- *     property type:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.atype
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.atype
  */
 
   /* function exit code */
@@ -195873,10 +196204,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_4type___get__(struct
 
 /* "src/lxml/dtd.pxi":144
  * 
- *     property default:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int default = self._c_node.def_
+ *     @property
+ *     def default(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int default = self._c_node.def_
  */
 
 /* Python wrapper */
@@ -195901,40 +196232,40 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":145
- *     property default:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef int default = self._c_node.def_
- *            if default == tree.XML_ATTRIBUTE_NONE:
+ *     @property
+ *     def default(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef int default = self._c_node.def_
+ *        if default == tree.XML_ATTRIBUTE_NONE:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int default = self._c_node.def_             # <<<<<<<<<<<<<<
- *            if default == tree.XML_ATTRIBUTE_NONE:
- *                return "none"
+ *     def default(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int default = self._c_node.def_             # <<<<<<<<<<<<<<
+ *        if default == tree.XML_ATTRIBUTE_NONE:
+ *            return "none"
  */
   __pyx_t_2 = __pyx_v_self->_c_node->def;
   __pyx_v_default = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":147
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int default = self._c_node.def_
- *            if default == tree.XML_ATTRIBUTE_NONE:             # <<<<<<<<<<<<<<
- *                return "none"
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int default = self._c_node.def_
+ *        if default == tree.XML_ATTRIBUTE_NONE:             # <<<<<<<<<<<<<<
+ *            return "none"
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:
  */
   switch (__pyx_v_default) {
     case XML_ATTRIBUTE_NONE:
 
     /* "src/lxml/dtd.pxi":148
- *            cdef int default = self._c_node.def_
- *            if default == tree.XML_ATTRIBUTE_NONE:
- *                return "none"             # <<<<<<<<<<<<<<
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
- *                return "required"
+ *        cdef int default = self._c_node.def_
+ *        if default == tree.XML_ATTRIBUTE_NONE:
+ *            return "none"             # <<<<<<<<<<<<<<
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:
+ *            return "required"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_none);
@@ -195942,21 +196273,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":147
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int default = self._c_node.def_
- *            if default == tree.XML_ATTRIBUTE_NONE:             # <<<<<<<<<<<<<<
- *                return "none"
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int default = self._c_node.def_
+ *        if default == tree.XML_ATTRIBUTE_NONE:             # <<<<<<<<<<<<<<
+ *            return "none"
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:
  */
     break;
     case XML_ATTRIBUTE_REQUIRED:
 
     /* "src/lxml/dtd.pxi":150
- *                return "none"
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
- *                return "required"             # <<<<<<<<<<<<<<
- *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
- *                return "implied"
+ *            return "none"
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:
+ *            return "required"             # <<<<<<<<<<<<<<
+ *        elif default == tree.XML_ATTRIBUTE_IMPLIED:
+ *            return "implied"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_required);
@@ -195964,21 +196295,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":149
- *            if default == tree.XML_ATTRIBUTE_NONE:
- *                return "none"
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:             # <<<<<<<<<<<<<<
- *                return "required"
- *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
+ *        if default == tree.XML_ATTRIBUTE_NONE:
+ *            return "none"
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:             # <<<<<<<<<<<<<<
+ *            return "required"
+ *        elif default == tree.XML_ATTRIBUTE_IMPLIED:
  */
     break;
     case XML_ATTRIBUTE_IMPLIED:
 
     /* "src/lxml/dtd.pxi":152
- *                return "required"
- *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
- *                return "implied"             # <<<<<<<<<<<<<<
- *            elif default == tree.XML_ATTRIBUTE_FIXED:
- *                return "fixed"
+ *            return "required"
+ *        elif default == tree.XML_ATTRIBUTE_IMPLIED:
+ *            return "implied"             # <<<<<<<<<<<<<<
+ *        elif default == tree.XML_ATTRIBUTE_FIXED:
+ *            return "fixed"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_implied);
@@ -195986,21 +196317,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":151
- *            elif default == tree.XML_ATTRIBUTE_REQUIRED:
- *                return "required"
- *            elif default == tree.XML_ATTRIBUTE_IMPLIED:             # <<<<<<<<<<<<<<
- *                return "implied"
- *            elif default == tree.XML_ATTRIBUTE_FIXED:
+ *        elif default == tree.XML_ATTRIBUTE_REQUIRED:
+ *            return "required"
+ *        elif default == tree.XML_ATTRIBUTE_IMPLIED:             # <<<<<<<<<<<<<<
+ *            return "implied"
+ *        elif default == tree.XML_ATTRIBUTE_FIXED:
  */
     break;
     case XML_ATTRIBUTE_FIXED:
 
     /* "src/lxml/dtd.pxi":154
- *                return "implied"
- *            elif default == tree.XML_ATTRIBUTE_FIXED:
- *                return "fixed"             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            return "implied"
+ *        elif default == tree.XML_ATTRIBUTE_FIXED:
+ *            return "fixed"             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_fixed);
@@ -196008,21 +196339,21 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":153
- *            elif default == tree.XML_ATTRIBUTE_IMPLIED:
- *                return "implied"
- *            elif default == tree.XML_ATTRIBUTE_FIXED:             # <<<<<<<<<<<<<<
- *                return "fixed"
- *            else:
+ *        elif default == tree.XML_ATTRIBUTE_IMPLIED:
+ *            return "implied"
+ *        elif default == tree.XML_ATTRIBUTE_FIXED:             # <<<<<<<<<<<<<<
+ *            return "fixed"
+ *        else:
  */
     break;
     default:
 
     /* "src/lxml/dtd.pxi":156
- *                return "fixed"
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return "fixed"
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property default_value:
+ *     @property
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -196032,10 +196363,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
 
   /* "src/lxml/dtd.pxi":144
  * 
- *     property default:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int default = self._c_node.def_
+ *     @property
+ *     def default(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int default = self._c_node.def_
  */
 
   /* function exit code */
@@ -196050,10 +196381,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_7default___get__(stru
 
 /* "src/lxml/dtd.pxi":159
  * 
- *     property default_value:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *     @property
+ *     def default_value(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  */
 
 /* Python wrapper */
@@ -196078,18 +196409,18 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":160
- *     property default_value:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *     @property
+ *     def default_value(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None             # <<<<<<<<<<<<<<
+ *     def default_value(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None             # <<<<<<<<<<<<<<
  * 
  *     def itervalues(self):
  */
@@ -196109,10 +196440,10 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
 
   /* "src/lxml/dtd.pxi":159
  * 
- *     property default_value:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *     @property
+ *     def default_value(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  */
 
   /* function exit code */
@@ -196129,7 +196460,7 @@ static PyObject *__pyx_pf_4lxml_5etree_17_DTDAttributeDecl_13default_value___get
 static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 
 /* "src/lxml/dtd.pxi":163
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -196266,7 +196597,7 @@ static PyObject *__pyx_gb_4lxml_5etree_17_DTDAttributeDecl_4generator11(__pyx_Co
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 
   /* "src/lxml/dtd.pxi":163
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -196411,7 +196742,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_o
  *     def __repr__(self):
  *         return "<%s.%s object name=%r prefix=%r type=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, self.prefix, self.type, id(self))             # <<<<<<<<<<<<<<
  * 
- *     property name:
+ *     @property
  */
   __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)
@@ -196486,10 +196817,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl___repr__(struct __pyx_o
 
 /* "src/lxml/dtd.pxi":185
  * 
- *     property name:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
 /* Python wrapper */
@@ -196514,20 +196845,20 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":186
- *     property name:
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):
+ *         _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
   __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
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
+ *     def name(self):
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property prefix:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
@@ -196545,10 +196876,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
 
   /* "src/lxml/dtd.pxi":185
  * 
- *     property name:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
   /* function exit code */
@@ -196565,10 +196896,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4name___get__(struct __
 
 /* "src/lxml/dtd.pxi":190
  * 
- *     property prefix:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  */
 
 /* Python wrapper */
@@ -196593,20 +196924,20 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":191
- *     property prefix:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  * 
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None             # <<<<<<<<<<<<<<
+ *     def prefix(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property type:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->prefix != NULL) != 0)) {
@@ -196624,10 +196955,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
 
   /* "src/lxml/dtd.pxi":190
  * 
- *     property prefix:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
+ *     @property
+ *     def prefix(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        return funicode(self._c_node.prefix) if self._c_node.prefix is not NULL else None
  */
 
   /* function exit code */
@@ -196644,10 +196975,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_6prefix___get__(struct
 
 /* "src/lxml/dtd.pxi":195
  * 
- *     property type:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.etype
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.etype
  */
 
 /* Python wrapper */
@@ -196672,40 +197003,40 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":196
- *     property type:
- *         def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef int type = self._c_node.etype
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
+ *     @property
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef int type = self._c_node.etype
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
  */
   __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
- *         def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.etype             # <<<<<<<<<<<<<<
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
- *                return "undefined"
+ *     def type(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.etype             # <<<<<<<<<<<<<<
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
+ *            return "undefined"
  */
   __pyx_t_2 = __pyx_v_self->_c_node->etype;
   __pyx_v_type = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":198
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.etype
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:             # <<<<<<<<<<<<<<
- *                return "undefined"
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.etype
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:             # <<<<<<<<<<<<<<
+ *            return "undefined"
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:
  */
   switch (__pyx_v_type) {
     case XML_ELEMENT_TYPE_UNDEFINED:
 
     /* "src/lxml/dtd.pxi":199
- *            cdef int type = self._c_node.etype
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
- *                return "undefined"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
- *                return "empty"
+ *        cdef int type = self._c_node.etype
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
+ *            return "undefined"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+ *            return "empty"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_undefined);
@@ -196713,21 +197044,21 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":198
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.etype
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:             # <<<<<<<<<<<<<<
- *                return "undefined"
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.etype
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:             # <<<<<<<<<<<<<<
+ *            return "undefined"
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:
  */
     break;
     case XML_ELEMENT_TYPE_EMPTY:
 
     /* "src/lxml/dtd.pxi":201
- *                return "undefined"
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
- *                return "empty"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_TYPE_ANY:
- *                return "any"
+ *            return "undefined"
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+ *            return "empty"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_TYPE_ANY:
+ *            return "any"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_empty);
@@ -196735,21 +197066,21 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":200
- *            if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
- *                return "undefined"
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:             # <<<<<<<<<<<<<<
- *                return "empty"
- *            elif type == tree.XML_ELEMENT_TYPE_ANY:
+ *        if type == tree.XML_ELEMENT_TYPE_UNDEFINED:
+ *            return "undefined"
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:             # <<<<<<<<<<<<<<
+ *            return "empty"
+ *        elif type == tree.XML_ELEMENT_TYPE_ANY:
  */
     break;
     case XML_ELEMENT_TYPE_ANY:
 
     /* "src/lxml/dtd.pxi":203
- *                return "empty"
- *            elif type == tree.XML_ELEMENT_TYPE_ANY:
- *                return "any"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
- *                return "mixed"
+ *            return "empty"
+ *        elif type == tree.XML_ELEMENT_TYPE_ANY:
+ *            return "any"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_TYPE_MIXED:
+ *            return "mixed"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_any);
@@ -196757,21 +197088,21 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":202
- *            elif type == tree.XML_ELEMENT_TYPE_EMPTY:
- *                return "empty"
- *            elif type == tree.XML_ELEMENT_TYPE_ANY:             # <<<<<<<<<<<<<<
- *                return "any"
- *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
+ *        elif type == tree.XML_ELEMENT_TYPE_EMPTY:
+ *            return "empty"
+ *        elif type == tree.XML_ELEMENT_TYPE_ANY:             # <<<<<<<<<<<<<<
+ *            return "any"
+ *        elif type == tree.XML_ELEMENT_TYPE_MIXED:
  */
     break;
     case XML_ELEMENT_TYPE_MIXED:
 
     /* "src/lxml/dtd.pxi":205
- *                return "any"
- *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
- *                return "mixed"             # <<<<<<<<<<<<<<
- *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
- *                return "element"
+ *            return "any"
+ *        elif type == tree.XML_ELEMENT_TYPE_MIXED:
+ *            return "mixed"             # <<<<<<<<<<<<<<
+ *        elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
+ *            return "element"
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_mixed);
@@ -196779,21 +197110,21 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":204
- *            elif type == tree.XML_ELEMENT_TYPE_ANY:
- *                return "any"
- *            elif type == tree.XML_ELEMENT_TYPE_MIXED:             # <<<<<<<<<<<<<<
- *                return "mixed"
- *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
+ *        elif type == tree.XML_ELEMENT_TYPE_ANY:
+ *            return "any"
+ *        elif type == tree.XML_ELEMENT_TYPE_MIXED:             # <<<<<<<<<<<<<<
+ *            return "mixed"
+ *        elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
  */
     break;
     case XML_ELEMENT_TYPE_ELEMENT:
 
     /* "src/lxml/dtd.pxi":207
- *                return "mixed"
- *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
- *                return "element"             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            return "mixed"
+ *        elif type == tree.XML_ELEMENT_TYPE_ELEMENT:
+ *            return "element"             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(__pyx_n_s_element);
@@ -196801,21 +197132,21 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":206
- *            elif type == tree.XML_ELEMENT_TYPE_MIXED:
- *                return "mixed"
- *            elif type == tree.XML_ELEMENT_TYPE_ELEMENT:             # <<<<<<<<<<<<<<
- *                return "element"
- *            else:
+ *        elif type == tree.XML_ELEMENT_TYPE_MIXED:
+ *            return "mixed"
+ *        elif type == tree.XML_ELEMENT_TYPE_ELEMENT:             # <<<<<<<<<<<<<<
+ *            return "element"
+ *        else:
  */
     break;
     default:
 
     /* "src/lxml/dtd.pxi":209
- *                return "element"
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return "element"
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
- *     property content:
+ *     @property
  */
     __Pyx_XDECREF(__pyx_r);
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -196825,10 +197156,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
 
   /* "src/lxml/dtd.pxi":195
  * 
- *     property type:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef int type = self._c_node.etype
+ *     @property
+ *     def type(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef int type = self._c_node.etype
  */
 
   /* function exit code */
@@ -196843,10 +197174,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_4type___get__(struct __
 
 /* "src/lxml/dtd.pxi":212
  * 
- *     property content:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef tree.xmlElementContent *content = self._c_node.content
+ *     @property
+ *     def content(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef tree.xmlElementContent *content = self._c_node.content
  */
 
 /* Python wrapper */
@@ -196875,40 +197206,40 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":213
- *     property content:
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *            cdef tree.xmlElementContent *content = self._c_node.content
- *            if content:
+ *     @property
+ *     def content(self):
+ *        _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *        cdef tree.xmlElementContent *content = self._c_node.content
+ *        if content:
  */
   __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
- *        def __get__(self):
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef tree.xmlElementContent *content = self._c_node.content             # <<<<<<<<<<<<<<
- *            if content:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *     def content(self):
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef tree.xmlElementContent *content = self._c_node.content             # <<<<<<<<<<<<<<
+ *        if content:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
  */
   __pyx_t_2 = __pyx_v_self->_c_node->content;
   __pyx_v_content = __pyx_t_2;
 
   /* "src/lxml/dtd.pxi":215
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef tree.xmlElementContent *content = self._c_node.content
- *            if content:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef tree.xmlElementContent *content = self._c_node.content
+ *        if content:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   __pyx_t_3 = (__pyx_v_content != 0);
   if (__pyx_t_3) {
 
     /* "src/lxml/dtd.pxi":216
- *            cdef tree.xmlElementContent *content = self._c_node.content
- *            if content:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
- *                node._dtd = self._dtd
- *                node._c_node = content
+ *        cdef tree.xmlElementContent *content = self._c_node.content
+ *        if content:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)             # <<<<<<<<<<<<<<
+ *            node._dtd = self._dtd
+ *            node._c_node = content
  */
     __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));
@@ -196919,11 +197250,11 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":217
- *            if content:
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd             # <<<<<<<<<<<<<<
- *                node._c_node = content
- *                return node
+ *        if content:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd             # <<<<<<<<<<<<<<
+ *            node._c_node = content
+ *            return node
  */
     __pyx_t_5 = ((PyObject *)__pyx_v_self->_dtd);
     __Pyx_INCREF(__pyx_t_5);
@@ -196934,20 +197265,20 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
     __pyx_t_5 = 0;
 
     /* "src/lxml/dtd.pxi":218
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
- *                node._c_node = content             # <<<<<<<<<<<<<<
- *                return node
- *            else:
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
+ *            node._c_node = content             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
  */
     __pyx_v_node->_c_node = __pyx_v_content;
 
     /* "src/lxml/dtd.pxi":219
- *                node._dtd = self._dtd
- *                node._c_node = content
- *                return node             # <<<<<<<<<<<<<<
- *            else:
- *                return None
+ *            node._dtd = self._dtd
+ *            node._c_node = content
+ *            return node             # <<<<<<<<<<<<<<
+ *        else:
+ *            return None
  */
     __Pyx_XDECREF(__pyx_r);
     __Pyx_INCREF(((PyObject *)__pyx_v_node));
@@ -196955,18 +197286,18 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":215
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef tree.xmlElementContent *content = self._c_node.content
- *            if content:             # <<<<<<<<<<<<<<
- *                node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
- *                node._dtd = self._dtd
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef tree.xmlElementContent *content = self._c_node.content
+ *        if content:             # <<<<<<<<<<<<<<
+ *            node = <_DTDElementContentDecl>_DTDElementContentDecl.__new__(_DTDElementContentDecl)
+ *            node._dtd = self._dtd
  */
   }
 
   /* "src/lxml/dtd.pxi":221
- *                return node
- *            else:
- *                return None             # <<<<<<<<<<<<<<
+ *            return node
+ *        else:
+ *            return None             # <<<<<<<<<<<<<<
  * 
  *     def iterattributes(self):
  */
@@ -196978,10 +197309,10 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
 
   /* "src/lxml/dtd.pxi":212
  * 
- *     property content:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            _assertValidDTDNode(self, self._c_node)
- *            cdef tree.xmlElementContent *content = self._c_node.content
+ *     @property
+ *     def content(self):             # <<<<<<<<<<<<<<
+ *        _assertValidDTDNode(self, self._c_node)
+ *        cdef tree.xmlElementContent *content = self._c_node.content
  */
 
   /* function exit code */
@@ -196999,7 +197330,7 @@ static PyObject *__pyx_pf_4lxml_5etree_15_DTDElementDecl_7content___get__(struct
 static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 
 /* "src/lxml/dtd.pxi":223
- *                return None
+ *            return None
  * 
  *     def iterattributes(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -197176,7 +197507,7 @@ static PyObject *__pyx_gb_4lxml_5etree_15_DTDElementDecl_4generator12(__pyx_Coro
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 
   /* "src/lxml/dtd.pxi":223
- *                return None
+ *            return None
  * 
  *     def iterattributes(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -197320,7 +197651,7 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_ob
  *     def __repr__(self):
  *         return "<%s.%s object name=%r at 0x%x>" % (self.__class__.__module__, self.__class__.__name__, self.name, id(self))             # <<<<<<<<<<<<<<
  * 
- *     property name:
+ *     @property
  */
   __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)
@@ -197383,10 +197714,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl___repr__(struct __pyx_ob
 
 /* "src/lxml/dtd.pxi":247
  * 
- *     property name:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
 /* Python wrapper */
@@ -197411,20 +197742,20 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":248
- *     property name:
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):
+ *         _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  * 
  */
   __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
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
+ *     def name(self):
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property orig:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->name != NULL) != 0)) {
@@ -197442,10 +197773,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
 
   /* "src/lxml/dtd.pxi":247
  * 
- *     property name:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.name) if self._c_node.name is not NULL else None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.name) if self._c_node.name is not NULL else None
  */
 
   /* function exit code */
@@ -197462,10 +197793,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4name___get__(struct __p
 
 /* "src/lxml/dtd.pxi":252
  * 
- *     property orig:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
+ *     @property
+ *     def orig(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
  */
 
 /* Python wrapper */
@@ -197490,20 +197821,20 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":253
- *     property orig:
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *             return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
+ *     @property
+ *     def orig(self):
+ *         _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
  * 
  */
   __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
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None             # <<<<<<<<<<<<<<
+ *     def orig(self):
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None             # <<<<<<<<<<<<<<
  * 
- *     property content:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   if (((__pyx_v_self->_c_node->orig != NULL) != 0)) {
@@ -197521,10 +197852,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
 
   /* "src/lxml/dtd.pxi":252
  * 
- *     property orig:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
+ *     @property
+ *     def orig(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.orig) if self._c_node.orig is not NULL else None
  */
 
   /* function exit code */
@@ -197541,10 +197872,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_4orig___get__(struct __p
 
 /* "src/lxml/dtd.pxi":257
  * 
- *     property content:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.content) if self._c_node.content is not NULL else None
+ *     @property
+ *     def content(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.content) if self._c_node.content is not NULL else None
  */
 
 /* Python wrapper */
@@ -197569,18 +197900,18 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":258
- *     property content:
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
- *             return funicode(self._c_node.content) if self._c_node.content is not NULL else None
+ *     @property
+ *     def content(self):
+ *         _assertValidDTDNode(self, self._c_node)             # <<<<<<<<<<<<<<
+ *         return funicode(self._c_node.content) if self._c_node.content is not NULL else None
  * 
  */
   __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
- *         def __get__(self):
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.content) if self._c_node.content is not NULL else None             # <<<<<<<<<<<<<<
+ *     def content(self):
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.content) if self._c_node.content is not NULL else None             # <<<<<<<<<<<<<<
  * 
  * 
  */
@@ -197600,10 +197931,10 @@ static PyObject *__pyx_pf_4lxml_5etree_14_DTDEntityDecl_7content___get__(struct
 
   /* "src/lxml/dtd.pxi":257
  * 
- *     property content:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             _assertValidDTDNode(self, self._c_node)
- *             return funicode(self._c_node.content) if self._c_node.content is not NULL else None
+ *     @property
+ *     def content(self):             # <<<<<<<<<<<<<<
+ *         _assertValidDTDNode(self, self._c_node)
+ *         return funicode(self._c_node.content) if self._c_node.content is not NULL else None
  */
 
   /* function exit code */
@@ -198110,10 +198441,10 @@ static int __pyx_pf_4lxml_5etree_3DTD___init__(struct __pyx_obj_4lxml_5etree_DTD
 
 /* "src/lxml/dtd.pxi":297
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
 /* Python wrapper */
@@ -198137,20 +198468,20 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":298
- *     property name:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.name)
+ *     @property
+ *     def name(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.name)
  */
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
     /* "src/lxml/dtd.pxi":299
- *        def __get__(self):
- *            if self._c_dtd is NULL:
- *                return None             # <<<<<<<<<<<<<<
- *            return funicodeOrNone(self._c_dtd.name)
+ *     def name(self):
+ *        if self._c_dtd is NULL:
+ *            return None             # <<<<<<<<<<<<<<
+ *        return funicodeOrNone(self._c_dtd.name)
  * 
  */
     __Pyx_XDECREF(__pyx_r);
@@ -198158,20 +198489,20 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":298
- *     property name:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.name)
+ *     @property
+ *     def name(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.name)
  */
   }
 
   /* "src/lxml/dtd.pxi":300
- *            if self._c_dtd is NULL:
- *                return None
- *            return funicodeOrNone(self._c_dtd.name)             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.name)             # <<<<<<<<<<<<<<
  * 
- *     property external_id:
+ *     @property
  */
   __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)
@@ -198182,10 +198513,10 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
 
   /* "src/lxml/dtd.pxi":297
  * 
- *     property name:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def name(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
   /* function exit code */
@@ -198201,10 +198532,10 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_4name___get__(struct __pyx_obj_4lxml
 
 /* "src/lxml/dtd.pxi":303
  * 
- *     property external_id:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def external_id(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
 /* Python wrapper */
@@ -198228,20 +198559,20 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":304
- *     property external_id:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.ExternalID)
+ *     @property
+ *     def external_id(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.ExternalID)
  */
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
     /* "src/lxml/dtd.pxi":305
- *        def __get__(self):
- *            if self._c_dtd is NULL:
- *                return None             # <<<<<<<<<<<<<<
- *            return funicodeOrNone(self._c_dtd.ExternalID)
+ *     def external_id(self):
+ *        if self._c_dtd is NULL:
+ *            return None             # <<<<<<<<<<<<<<
+ *        return funicodeOrNone(self._c_dtd.ExternalID)
  * 
  */
     __Pyx_XDECREF(__pyx_r);
@@ -198249,20 +198580,20 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":304
- *     property external_id:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.ExternalID)
+ *     @property
+ *     def external_id(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.ExternalID)
  */
   }
 
   /* "src/lxml/dtd.pxi":306
- *            if self._c_dtd is NULL:
- *                return None
- *            return funicodeOrNone(self._c_dtd.ExternalID)             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.ExternalID)             # <<<<<<<<<<<<<<
  * 
- *     property system_url:
+ *     @property
  */
   __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)
@@ -198273,10 +198604,10 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
 
   /* "src/lxml/dtd.pxi":303
  * 
- *     property external_id:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def external_id(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
   /* function exit code */
@@ -198292,10 +198623,10 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_11external_id___get__(struct __pyx_o
 
 /* "src/lxml/dtd.pxi":309
  * 
- *     property system_url:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def system_url(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
 /* Python wrapper */
@@ -198319,20 +198650,20 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "src/lxml/dtd.pxi":310
- *     property system_url:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *     @property
+ *     def system_url(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  */
   __pyx_t_1 = ((__pyx_v_self->_c_dtd == NULL) != 0);
   if (__pyx_t_1) {
 
     /* "src/lxml/dtd.pxi":311
- *        def __get__(self):
- *            if self._c_dtd is NULL:
- *                return None             # <<<<<<<<<<<<<<
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *     def system_url(self):
+ *        if self._c_dtd is NULL:
+ *            return None             # <<<<<<<<<<<<<<
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  */
     __Pyx_XDECREF(__pyx_r);
@@ -198340,18 +198671,18 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
     goto __pyx_L0;
 
     /* "src/lxml/dtd.pxi":310
- *     property system_url:
- *        def __get__(self):
- *            if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
- *                return None
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *     @property
+ *     def system_url(self):
+ *        if self._c_dtd is NULL:             # <<<<<<<<<<<<<<
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  */
   }
 
   /* "src/lxml/dtd.pxi":312
- *            if self._c_dtd is NULL:
- *                return None
- *            return funicodeOrNone(self._c_dtd.SystemID)             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
+ *        return funicodeOrNone(self._c_dtd.SystemID)             # <<<<<<<<<<<<<<
  * 
  *     def iterelements(self):
  */
@@ -198364,10 +198695,10 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
 
   /* "src/lxml/dtd.pxi":309
  * 
- *     property system_url:
- *        def __get__(self):             # <<<<<<<<<<<<<<
- *            if self._c_dtd is NULL:
- *                return None
+ *     @property
+ *     def system_url(self):             # <<<<<<<<<<<<<<
+ *        if self._c_dtd is NULL:
+ *            return None
  */
 
   /* function exit code */
@@ -198383,7 +198714,7 @@ static PyObject *__pyx_pf_4lxml_5etree_3DTD_10system_url___get__(struct __pyx_ob
 static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *__pyx_generator, CYTHON_UNUSED PyThreadState *__pyx_tstate, PyObject *__pyx_sent_value); /* proto */
 
 /* "src/lxml/dtd.pxi":314
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  *     def iterelements(self):             # <<<<<<<<<<<<<<
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
@@ -198567,7 +198898,7 @@ static PyObject *__pyx_gb_4lxml_5etree_3DTD_4generator13(__pyx_CoroutineObject *
   CYTHON_MAYBE_UNUSED_VAR(__pyx_cur_scope);
 
   /* "src/lxml/dtd.pxi":314
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  *     def iterelements(self):             # <<<<<<<<<<<<<<
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
@@ -209070,8 +209401,8 @@ static struct PyGetSetDef __pyx_getsets_4lxml_5etree__LogEntry[] = {
   {(char *)"domain_name", __pyx_getprop_4lxml_5etree_9_LogEntry_domain_name, 0, (char *)"The name of the error domain.  See lxml.etree.ErrorDomains\n        ", 0},
   {(char *)"type_name", __pyx_getprop_4lxml_5etree_9_LogEntry_type_name, 0, (char *)"The name of the error type.  See lxml.etree.ErrorTypes\n        ", 0},
   {(char *)"level_name", __pyx_getprop_4lxml_5etree_9_LogEntry_level_name, 0, (char *)"The name of the error level.  See lxml.etree.ErrorLevels\n        ", 0},
-  {(char *)"message", __pyx_getprop_4lxml_5etree_9_LogEntry_message, 0, (char *)0, 0},
-  {(char *)"filename", __pyx_getprop_4lxml_5etree_9_LogEntry_filename, 0, (char *)0, 0},
+  {(char *)"message", __pyx_getprop_4lxml_5etree_9_LogEntry_message, 0, (char *)"The log message string.\n        ", 0},
+  {(char *)"filename", __pyx_getprop_4lxml_5etree_9_LogEntry_filename, 0, (char *)"The file path where the report originated, if any.\n        ", 0},
   {(char *)"path", __pyx_getprop_4lxml_5etree_9_LogEntry_path, 0, (char *)"The XPath for the node where the error was detected.\n        ", 0},
   {(char *)"domain", __pyx_getprop_4lxml_5etree_9_LogEntry_domain, 0, (char *)0, 0},
   {(char *)"type", __pyx_getprop_4lxml_5etree_9_LogEntry_type, 0, (char *)0, 0},
@@ -212731,7 +213062,7 @@ static PyMethodDef __pyx_methods_4lxml_5etree__ReadOnlyProxy[] = {
 
 static struct PyGetSetDef __pyx_getsets_4lxml_5etree__ReadOnlyProxy[] = {
   {(char *)"tag", __pyx_getprop_4lxml_5etree_14_ReadOnlyProxy_tag, 0, (char *)"Element tag\n        ", 0},
-  {(char *)"text", __pyx_getprop_4lxml_5etree_14_ReadOnlyProxy_text, 0, (char *)"Text before the first subelement. This is either a string or \n        the value None, if there was no text.\n        ", 0},
+  {(char *)"text", __pyx_getprop_4lxml_5etree_14_ReadOnlyProxy_text, 0, (char *)"Text before the first subelement. This is either a string or\n        the value None, if there was no text.\n        ", 0},
   {(char *)"tail", __pyx_getprop_4lxml_5etree_14_ReadOnlyProxy_tail, 0, (char *)"Text after this element's end tag, but before the next sibling\n        element's start tag. This is either a string or the value None, if\n        there was no text.\n        ", 0},
   {(char *)"sourceline", __pyx_getprop_4lxml_5etree_14_ReadOnlyProxy_sourceline, 0, (char *)"Original line number as found by the parser or None if unknown.\n        ", 0},
   {0, 0, 0, 0, 0}
@@ -225944,7 +226275,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
   {&__pyx_n_s_XMLSyntaxError, __pyx_k_XMLSyntaxError, sizeof(__pyx_k_XMLSyntaxError), 0, 0, 1, 1},
   {&__pyx_n_s_XMLTreeBuilder, __pyx_k_XMLTreeBuilder, sizeof(__pyx_k_XMLTreeBuilder), 0, 0, 1, 1},
   {&__pyx_kp_s_XML_declaration_already_written, __pyx_k_XML_declaration_already_written, sizeof(__pyx_k_XML_declaration_already_written), 0, 0, 1, 0},
-  {&__pyx_kp_u_XML_line_3165, __pyx_k_XML_line_3165, sizeof(__pyx_k_XML_line_3165), 0, 1, 0, 0},
+  {&__pyx_kp_u_XML_line_3176, __pyx_k_XML_line_3176, sizeof(__pyx_k_XML_line_3176), 0, 1, 0, 0},
   {&__pyx_kp_u_XML_text_parser_None_base_url_No, __pyx_k_XML_text_parser_None_base_url_No, sizeof(__pyx_k_XML_text_parser_None_base_url_No), 0, 1, 0, 0},
   {&__pyx_n_u_XPATH_LOCATIONSET, __pyx_k_XPATH_LOCATIONSET, sizeof(__pyx_k_XPATH_LOCATIONSET), 0, 1, 0, 1},
   {&__pyx_n_u_XPATH_POINT, __pyx_k_XPATH_POINT, sizeof(__pyx_k_XPATH_POINT), 0, 1, 0, 1},
@@ -226795,7 +227126,7 @@ static __Pyx_StringTabEntry __pyx_string_tab[] = {
 static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_ImportError = __Pyx_GetBuiltinName(__pyx_n_s_ImportError); if (!__pyx_builtin_ImportError) __PYX_ERR(0, 91, __pyx_L1_error)
   __pyx_builtin_SyntaxError = __Pyx_GetBuiltinName(__pyx_n_s_SyntaxError); if (!__pyx_builtin_SyntaxError) __PYX_ERR(0, 211, __pyx_L1_error)
-  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(1, 804, __pyx_L1_error)
+  __pyx_builtin_object = __Pyx_GetBuiltinName(__pyx_n_s_object); if (!__pyx_builtin_object) __PYX_ERR(1, 808, __pyx_L1_error)
   __pyx_builtin_property = __Pyx_GetBuiltinName(__pyx_n_s_property); if (!__pyx_builtin_property) __PYX_ERR(2, 18, __pyx_L1_error)
   __pyx_builtin_staticmethod = __Pyx_GetBuiltinName(__pyx_n_s_staticmethod); if (!__pyx_builtin_staticmethod) __PYX_ERR(3, 435, __pyx_L1_error)
   __pyx_builtin_KeyError = __Pyx_GetBuiltinName(__pyx_n_s_KeyError); if (!__pyx_builtin_KeyError) __PYX_ERR(0, 96, __pyx_L1_error)
@@ -226811,21 +227142,21 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
   #else
   __pyx_builtin_xrange = __Pyx_GetBuiltinName(__pyx_n_s_xrange); if (!__pyx_builtin_xrange) __PYX_ERR(5, 1004, __pyx_L1_error)
   #endif
-  __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(5, 1542, __pyx_L1_error)
-  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(5, 1560, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 311, __pyx_L1_error)
+  __pyx_builtin_UnicodeEncodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeEncodeError); if (!__pyx_builtin_UnicodeEncodeError) __PYX_ERR(5, 1544, __pyx_L1_error)
+  __pyx_builtin_UnicodeDecodeError = __Pyx_GetBuiltinName(__pyx_n_s_UnicodeDecodeError); if (!__pyx_builtin_UnicodeDecodeError) __PYX_ERR(5, 1562, __pyx_L1_error)
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(1, 315, __pyx_L1_error)
   __pyx_builtin_IndexError = __Pyx_GetBuiltinName(__pyx_n_s_IndexError); if (!__pyx_builtin_IndexError) __PYX_ERR(0, 741, __pyx_L1_error)
   __pyx_builtin_FutureWarning = __Pyx_GetBuiltinName(__pyx_n_s_FutureWarning); if (!__pyx_builtin_FutureWarning) __PYX_ERR(0, 1182, __pyx_L1_error)
-  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 1843, __pyx_L1_error)
-  __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(0, 2034, __pyx_L1_error)
-  __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 2546, __pyx_L1_error)
+  __pyx_builtin_NotImplemented = __Pyx_GetBuiltinName(__pyx_n_s_NotImplemented); if (!__pyx_builtin_NotImplemented) __PYX_ERR(0, 1854, __pyx_L1_error)
+  __pyx_builtin_DeprecationWarning = __Pyx_GetBuiltinName(__pyx_n_s_DeprecationWarning); if (!__pyx_builtin_DeprecationWarning) __PYX_ERR(0, 2045, __pyx_L1_error)
+  __pyx_builtin_StopIteration = __Pyx_GetBuiltinName(__pyx_n_s_StopIteration); if (!__pyx_builtin_StopIteration) __PYX_ERR(0, 2557, __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, 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_NotImplementedError = __Pyx_GetBuiltinName(__pyx_n_s_NotImplementedError); if (!__pyx_builtin_NotImplementedError) __PYX_ERR(9, 632, __pyx_L1_error)
-  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 3536, __pyx_L1_error)
+  __pyx_builtin_AssertionError = __Pyx_GetBuiltinName(__pyx_n_s_AssertionError); if (!__pyx_builtin_AssertionError) __PYX_ERR(0, 3547, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
   return -1;
@@ -226893,69 +227224,69 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__8);
   __Pyx_GIVEREF(__pyx_slice__8);
 
-  /* "src/lxml/proxy.pxi":588
+  /* "src/lxml/proxy.pxi":596
  *     """
  *     if c_doc is NULL:
  *         raise ValueError("Illegal document provided: NULL")             # <<<<<<<<<<<<<<
  *     if c_doc.type not in (tree.XML_DOCUMENT_NODE, tree.XML_HTML_DOCUMENT_NODE):
  *         doc_type = c_doc.type
  */
-  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Illegal_document_provided_NULL); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(4, 588, __pyx_L1_error)
+  __pyx_tuple__9 = PyTuple_Pack(1, __pyx_kp_s_Illegal_document_provided_NULL); if (unlikely(!__pyx_tuple__9)) __PYX_ERR(4, 596, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__9);
   __Pyx_GIVEREF(__pyx_tuple__9);
 
-  /* "src/lxml/apihelpers.pxi":1292
+  /* "src/lxml/apihelpers.pxi":1294
  *     # prevent cycles
  *     if _isAncestorOrSame(c_node, parent._c_node):
  *         raise ValueError("cannot append parent to itself")             # <<<<<<<<<<<<<<
  *     # store possible text node
  *     c_next = c_node.next
  */
-  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(5, 1292, __pyx_L1_error)
+  __pyx_tuple__12 = PyTuple_Pack(1, __pyx_kp_s_cannot_append_parent_to_itself); if (unlikely(!__pyx_tuple__12)) __PYX_ERR(5, 1294, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__12);
   __Pyx_GIVEREF(__pyx_tuple__12);
 
-  /* "src/lxml/apihelpers.pxi":1346
+  /* "src/lxml/apihelpers.pxi":1348
  *         if element._c_node is c_node:
  *             return 0  # nothing to do
  *         raise ValueError("cannot add ancestor as sibling, please break cycle first")             # <<<<<<<<<<<<<<
  *     # store possible text node
  *     c_next = c_node.next
  */
-  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_cannot_add_ancestor_as_sibling_p); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(5, 1346, __pyx_L1_error)
+  __pyx_tuple__13 = PyTuple_Pack(1, __pyx_kp_s_cannot_add_ancestor_as_sibling_p); if (unlikely(!__pyx_tuple__13)) __PYX_ERR(5, 1348, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__13);
   __Pyx_GIVEREF(__pyx_tuple__13);
 
-  /* "src/lxml/apihelpers.pxi":1491
+  /* "src/lxml/apihelpers.pxi":1493
  *         raise TypeError("Argument must be bytes or unicode, got '%.200s'" % type(s).__name__)
  *     if not valid:
  *         raise ValueError(             # <<<<<<<<<<<<<<
  *             "All strings must be XML compatible: Unicode or ASCII, no NULL bytes or control characters")
  *     return utf8_string
  */
-  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_All_strings_must_be_XML_compatib); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(5, 1491, __pyx_L1_error)
+  __pyx_tuple__14 = PyTuple_Pack(1, __pyx_kp_s_All_strings_must_be_XML_compatib); if (unlikely(!__pyx_tuple__14)) __PYX_ERR(5, 1493, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__14);
   __Pyx_GIVEREF(__pyx_tuple__14);
 
-  /* "src/lxml/apihelpers.pxi":1546
+  /* "src/lxml/apihelpers.pxi":1548
  *         return filename8
  *     else:
  *         raise TypeError("Argument must be string or unicode.")             # <<<<<<<<<<<<<<
  * 
  * cdef object _decodeFilename(const_xmlChar* c_path):
  */
-  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(5, 1546, __pyx_L1_error)
+  __pyx_tuple__15 = PyTuple_Pack(1, __pyx_kp_s_Argument_must_be_string_or_unico); if (unlikely(!__pyx_tuple__15)) __PYX_ERR(5, 1548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__15);
   __Pyx_GIVEREF(__pyx_tuple__15);
 
-  /* "src/lxml/xmlerror.pxi":595
+  /* "src/lxml/xmlerror.pxi":599
  *     except KeyError:
  *         log = (<object>thread_dict)[name] = \
  *               _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  *         return log
  * 
  */
-  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 595, __pyx_L1_error)
+  __pyx_tuple__19 = PyTuple_Pack(1, __pyx_int_100); if (unlikely(!__pyx_tuple__19)) __PYX_ERR(1, 599, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__19);
   __Pyx_GIVEREF(__pyx_tuple__19);
 
@@ -226981,102 +227312,102 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_tuple__27);
   __Pyx_GIVEREF(__pyx_tuple__27);
 
-  /* "lxml/etree.pyx":1998
+  /* "lxml/etree.pyx":2009
  *         if method == 'c14n':
  *             if encoding is not None:
  *                 raise ValueError("Cannot specify encoding with C14N")             # <<<<<<<<<<<<<<
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")
  */
-  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 1998, __pyx_L1_error)
+  __pyx_tuple__32 = PyTuple_Pack(1, __pyx_kp_s_Cannot_specify_encoding_with_C14); if (unlikely(!__pyx_tuple__32)) __PYX_ERR(0, 2009, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__32);
   __Pyx_GIVEREF(__pyx_tuple__32);
 
-  /* "lxml/etree.pyx":2000
+  /* "lxml/etree.pyx":2011
  *                 raise ValueError("Cannot specify encoding with C14N")
  *             if xml_declaration:
  *                 raise ValueError("Cannot enable XML declaration in C14N")             # <<<<<<<<<<<<<<
  * 
  *             _tofilelikeC14N(file, self._context_node, exclusive, with_comments,
  */
-  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 2000, __pyx_L1_error)
+  __pyx_tuple__33 = PyTuple_Pack(1, __pyx_kp_s_Cannot_enable_XML_declaration_in); if (unlikely(!__pyx_tuple__33)) __PYX_ERR(0, 2011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__33);
   __Pyx_GIVEREF(__pyx_tuple__33);
 
-  /* "lxml/etree.pyx":2006
+  /* "lxml/etree.pyx":2017
  *             return
  *         if not with_comments:
  *             raise ValueError("Can only discard comments in C14N serialisation")             # <<<<<<<<<<<<<<
  *         # suppress decl. in default case (purely for ElementTree compatibility)
  *         if xml_declaration is not None:
  */
-  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 2006, __pyx_L1_error)
+  __pyx_tuple__34 = PyTuple_Pack(1, __pyx_kp_s_Can_only_discard_comments_in_C14); if (unlikely(!__pyx_tuple__34)) __PYX_ERR(0, 2017, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__34);
   __Pyx_GIVEREF(__pyx_tuple__34);
 
-  /* "lxml/etree.pyx":2032
+  /* "lxml/etree.pyx":2043
  *         if docstring is not None and doctype is None:
  *             import warnings
  *             warnings.warn(             # <<<<<<<<<<<<<<
  *                 "The 'docstring' option is deprecated. Use 'doctype' instead.",
  *                 DeprecationWarning)
  */
-  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_kp_s_The_docstring_option_is_deprecat, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 2032, __pyx_L1_error)
+  __pyx_tuple__35 = PyTuple_Pack(2, __pyx_kp_s_The_docstring_option_is_deprecat, __pyx_builtin_DeprecationWarning); if (unlikely(!__pyx_tuple__35)) __PYX_ERR(0, 2043, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__35);
   __Pyx_GIVEREF(__pyx_tuple__35);
 
-  /* "lxml/etree.pyx":2198
+  /* "lxml/etree.pyx":2209
  *         root = self.getroot()
  *         if _isString(path):
  *             if path[:1] == "/":             # <<<<<<<<<<<<<<
  *                 path = "." + path
  *         return root.find(path, namespaces)
  */
-  __pyx_slice__39 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 2198, __pyx_L1_error)
+  __pyx_slice__39 = PySlice_New(Py_None, __pyx_int_1, Py_None); if (unlikely(!__pyx_slice__39)) __PYX_ERR(0, 2209, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__39);
   __Pyx_GIVEREF(__pyx_slice__39);
 
-  /* "lxml/etree.pyx":2944
+  /* "lxml/etree.pyx":2955
  *         _assertValidNode(element)
  *         if with_tail:
  *             events = (u"start", u"end")             # <<<<<<<<<<<<<<
  *         else:
  *             events = (u"start",)
  */
-  __pyx_tuple__42 = PyTuple_Pack(2, __pyx_n_u_start, __pyx_n_u_end); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 2944, __pyx_L1_error)
+  __pyx_tuple__42 = PyTuple_Pack(2, __pyx_n_u_start, __pyx_n_u_end); if (unlikely(!__pyx_tuple__42)) __PYX_ERR(0, 2955, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__42);
   __Pyx_GIVEREF(__pyx_tuple__42);
 
-  /* "lxml/etree.pyx":2946
+  /* "lxml/etree.pyx":2957
  *             events = (u"start", u"end")
  *         else:
  *             events = (u"start",)             # <<<<<<<<<<<<<<
  *         self._start_element = element
  *         self._nextEvent = iterwalk(element, events=events, tag=tag).__next__
  */
-  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_n_u_start); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 2946, __pyx_L1_error)
+  __pyx_tuple__43 = PyTuple_Pack(1, __pyx_n_u_start); if (unlikely(!__pyx_tuple__43)) __PYX_ERR(0, 2957, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__43);
   __Pyx_GIVEREF(__pyx_tuple__43);
 
-  /* "lxml/etree.pyx":3015
+  /* "lxml/etree.pyx":3026
  *         text = _utf8(text)
  *         if b'--' in text or text.endswith(b'-'):
  *             raise ValueError("Comment may not contain '--' or end with '-'")             # <<<<<<<<<<<<<<
  * 
  *     c_doc = _newXMLDoc()
  */
-  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Comment_may_not_contain_or_end_w); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 3015, __pyx_L1_error)
+  __pyx_tuple__45 = PyTuple_Pack(1, __pyx_kp_s_Comment_may_not_contain_or_end_w); if (unlikely(!__pyx_tuple__45)) __PYX_ERR(0, 3026, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__45);
   __Pyx_GIVEREF(__pyx_tuple__45);
 
-  /* "lxml/etree.pyx":3228
+  /* "lxml/etree.pyx":3239
  *     cdef _Document doc
  *     if isinstance(strings, (bytes, unicode)):
  *         raise ValueError("passing a single string into fromstringlist() is not"             # <<<<<<<<<<<<<<
  *                          " efficient, use fromstring() instead")
  *     if parser is None:
  */
-  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_passing_a_single_string_into_fro); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 3228, __pyx_L1_error)
+  __pyx_tuple__48 = PyTuple_Pack(1, __pyx_kp_s_passing_a_single_string_into_fro); if (unlikely(!__pyx_tuple__48)) __PYX_ERR(0, 3239, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__48);
   __Pyx_GIVEREF(__pyx_tuple__48);
 
@@ -227426,287 +227757,287 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
  */
   __pyx_codeobj__106 = (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__106)) __PYX_ERR(1, 11, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":187
+  /* "src/lxml/xmlerror.pxi":191
  *         self.last_error = last_error
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         return _BaseErrorLog(self._first_error, self.last_error)
  * 
  */
-  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(1, 187, __pyx_L1_error)
+  __pyx_tuple__107 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__107)) __PYX_ERR(1, 191, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__107);
   __Pyx_GIVEREF(__pyx_tuple__107);
-  __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__107, __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__108)) __PYX_ERR(1, 187, __pyx_L1_error)
+  __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__107, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 191, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__108)) __PYX_ERR(1, 191, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":193
+  /* "src/lxml/xmlerror.pxi":197
  *         return u''
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         pass
  * 
  */
-  __pyx_tuple__109 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(1, 193, __pyx_L1_error)
+  __pyx_tuple__109 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__109)) __PYX_ERR(1, 197, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__109);
   __Pyx_GIVEREF(__pyx_tuple__109);
-  __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __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__110)) __PYX_ERR(1, 193, __pyx_L1_error)
+  __pyx_codeobj__110 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__109, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 197, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__110)) __PYX_ERR(1, 197, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":283
+  /* "src/lxml/xmlerror.pxi":287
  *         self._entries = entries
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         u"""Creates a shallow copy of this error log.  Reuses the list of
  *         entries.
  */
-  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(1, 283, __pyx_L1_error)
+  __pyx_tuple__111 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__111)) __PYX_ERR(1, 287, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__111);
   __Pyx_GIVEREF(__pyx_tuple__111);
-  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_copy, 283, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(1, 283, __pyx_L1_error)
+  __pyx_codeobj__112 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_copy, 287, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__112)) __PYX_ERR(1, 287, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":321
+  /* "src/lxml/xmlerror.pxi":325
  *         return len(self._entries) > self._offset
  * 
  *     def filter_domains(self, domains):             # <<<<<<<<<<<<<<
  *         u"""Filter the errors by the given domains and return a new error log
  *         containing the matches.
  */
-  __pyx_tuple__113 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_domains, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(1, 321, __pyx_L1_error)
+  __pyx_tuple__113 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_domains, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__113)) __PYX_ERR(1, 325, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__113);
   __Pyx_GIVEREF(__pyx_tuple__113);
-  __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_domains, 321, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(1, 321, __pyx_L1_error)
+  __pyx_codeobj__114 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_domains, 325, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__114)) __PYX_ERR(1, 325, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":331
+  /* "src/lxml/xmlerror.pxi":335
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_types(self, types):             # <<<<<<<<<<<<<<
  *         u"""filter_types(self, types)
  * 
  */
-  __pyx_tuple__115 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_types, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(1, 331, __pyx_L1_error)
+  __pyx_tuple__115 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_types, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__115)) __PYX_ERR(1, 335, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__115);
   __Pyx_GIVEREF(__pyx_tuple__115);
-  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_types, 331, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(1, 331, __pyx_L1_error)
+  __pyx_codeobj__116 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_types, 335, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__116)) __PYX_ERR(1, 335, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":343
+  /* "src/lxml/xmlerror.pxi":347
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_levels(self, levels):             # <<<<<<<<<<<<<<
  *         u"""filter_levels(self, levels)
  * 
  */
-  __pyx_tuple__117 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_levels, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(1, 343, __pyx_L1_error)
+  __pyx_tuple__117 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_levels, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__117)) __PYX_ERR(1, 347, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__117);
   __Pyx_GIVEREF(__pyx_tuple__117);
-  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_levels, 343, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(1, 343, __pyx_L1_error)
+  __pyx_codeobj__118 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_levels, 347, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__118)) __PYX_ERR(1, 347, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":355
+  /* "src/lxml/xmlerror.pxi":359
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_level(self, level):             # <<<<<<<<<<<<<<
  *         u"""filter_from_level(self, level)
  * 
  */
-  __pyx_tuple__119 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_level, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(1, 355, __pyx_L1_error)
+  __pyx_tuple__119 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_level, __pyx_n_s_entry, __pyx_n_s_filtered); if (unlikely(!__pyx_tuple__119)) __PYX_ERR(1, 359, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__119);
   __Pyx_GIVEREF(__pyx_tuple__119);
-  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_from_level, 355, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(1, 355, __pyx_L1_error)
+  __pyx_codeobj__120 = (PyObject*)__Pyx_PyCode_New(2, 0, 4, 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_xmlerror_pxi, __pyx_n_s_filter_from_level, 359, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__120)) __PYX_ERR(1, 359, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":364
+  /* "src/lxml/xmlerror.pxi":368
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_fatals(self):             # <<<<<<<<<<<<<<
  *         u"""filter_from_fatals(self)
  * 
  */
-  __pyx_tuple__121 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(1, 364, __pyx_L1_error)
+  __pyx_tuple__121 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__121)) __PYX_ERR(1, 368, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__121);
   __Pyx_GIVEREF(__pyx_tuple__121);
-  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_filter_from_fatals, 364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(1, 364, __pyx_L1_error)
+  __pyx_codeobj__122 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_filter_from_fatals, 368, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__122)) __PYX_ERR(1, 368, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":371
+  /* "src/lxml/xmlerror.pxi":375
  *         return self.filter_from_level(ErrorLevels.FATAL)
  * 
  *     def filter_from_errors(self):             # <<<<<<<<<<<<<<
  *         u"""filter_from_errors(self)
  * 
  */
-  __pyx_tuple__123 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(1, 371, __pyx_L1_error)
+  __pyx_tuple__123 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__123)) __PYX_ERR(1, 375, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__123);
   __Pyx_GIVEREF(__pyx_tuple__123);
-  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_filter_from_errors, 371, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(1, 371, __pyx_L1_error)
+  __pyx_codeobj__124 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_filter_from_errors, 375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__124)) __PYX_ERR(1, 375, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":378
+  /* "src/lxml/xmlerror.pxi":382
  *         return self.filter_from_level(ErrorLevels.ERROR)
  * 
  *     def filter_from_warnings(self):             # <<<<<<<<<<<<<<
  *         u"""filter_from_warnings(self)
  * 
  */
-  __pyx_tuple__125 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(1, 378, __pyx_L1_error)
+  __pyx_tuple__125 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__125)) __PYX_ERR(1, 382, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__125);
   __Pyx_GIVEREF(__pyx_tuple__125);
-  __pyx_codeobj__126 = (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_xmlerror_pxi, __pyx_n_s_filter_from_warnings, 378, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(1, 378, __pyx_L1_error)
+  __pyx_codeobj__126 = (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_xmlerror_pxi, __pyx_n_s_filter_from_warnings, 382, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__126)) __PYX_ERR(1, 382, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":437
+  /* "src/lxml/xmlerror.pxi":441
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
  *         #  TODO: make this a cdef function when Cython supports it
  *         self.disconnect()
  */
-  __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(1, 437, __pyx_L1_error)
+  __pyx_tuple__127 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_args); if (unlikely(!__pyx_tuple__127)) __PYX_ERR(1, 441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__127);
   __Pyx_GIVEREF(__pyx_tuple__127);
-  __pyx_codeobj__128 = (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__127, __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__128)) __PYX_ERR(1, 437, __pyx_L1_error)
+  __pyx_codeobj__128 = (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__127, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_exit, 441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__128)) __PYX_ERR(1, 441, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":457
+  /* "src/lxml/xmlerror.pxi":461
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
  *         self._first_error = None
  *         self.last_error = None
  */
-  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(1, 457, __pyx_L1_error)
+  __pyx_tuple__129 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__129)) __PYX_ERR(1, 461, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__129);
   __Pyx_GIVEREF(__pyx_tuple__129);
-  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_clear, 457, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) __PYX_ERR(1, 457, __pyx_L1_error)
+  __pyx_codeobj__130 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_clear, 461, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__130)) __PYX_ERR(1, 461, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":463
+  /* "src/lxml/xmlerror.pxi":467
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         u"""Creates a shallow copy of this error log and the list of entries.
  *         """
  */
-  __pyx_tuple__131 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(1, 463, __pyx_L1_error)
+  __pyx_tuple__131 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__131)) __PYX_ERR(1, 467, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__131);
   __Pyx_GIVEREF(__pyx_tuple__131);
-  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_copy, 463, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(1, 463, __pyx_L1_error)
+  __pyx_codeobj__132 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xmlerror_pxi, __pyx_n_s_copy, 467, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__132)) __PYX_ERR(1, 467, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":473
+  /* "src/lxml/xmlerror.pxi":477
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_tuple__133 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(1, 473, __pyx_L1_error)
+  __pyx_tuple__133 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__133)) __PYX_ERR(1, 477, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__133);
   __Pyx_GIVEREF(__pyx_tuple__133);
-  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_xmlerror_pxi, __pyx_n_s_receive, 473, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(1, 473, __pyx_L1_error)
+  __pyx_codeobj__134 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_xmlerror_pxi, __pyx_n_s_receive, 477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__134)) __PYX_ERR(1, 477, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":483
+  /* "src/lxml/xmlerror.pxi":487
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         if entry.domain in self._accepted_domains:
  *             _ErrorLog.receive(self, entry)
  */
-  __pyx_tuple__135 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(1, 483, __pyx_L1_error)
+  __pyx_tuple__135 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__135)) __PYX_ERR(1, 487, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__135);
   __Pyx_GIVEREF(__pyx_tuple__135);
-  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_xmlerror_pxi, __pyx_n_s_receive, 483, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(1, 483, __pyx_L1_error)
+  __pyx_codeobj__136 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_xmlerror_pxi, __pyx_n_s_receive, 487, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__136)) __PYX_ERR(1, 487, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":493
+  /* "src/lxml/xmlerror.pxi":497
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         if self._first_error is None and entry.level >= xmlerror.XML_ERR_ERROR:
  *             self._first_error = entry
  */
-  __pyx_tuple__137 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(1, 493, __pyx_L1_error)
+  __pyx_tuple__137 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_entry); if (unlikely(!__pyx_tuple__137)) __PYX_ERR(1, 497, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__137);
   __Pyx_GIVEREF(__pyx_tuple__137);
-  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __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__138)) __PYX_ERR(1, 493, __pyx_L1_error)
+  __pyx_codeobj__138 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__137, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 497, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__138)) __PYX_ERR(1, 497, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":544
+  /* "src/lxml/xmlerror.pxi":548
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         u"""Dummy method that returns an empty error log.
  *         """
  */
-  __pyx_tuple__139 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(1, 544, __pyx_L1_error)
+  __pyx_tuple__139 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__139)) __PYX_ERR(1, 548, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__139);
   __Pyx_GIVEREF(__pyx_tuple__139);
-  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __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__140)) __PYX_ERR(1, 544, __pyx_L1_error)
+  __pyx_codeobj__140 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__139, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_copy, 548, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__140)) __PYX_ERR(1, 548, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":549
+  /* "src/lxml/xmlerror.pxi":553
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
  *         u"""log(self, log_entry, message, *args)
  * 
  */
-  __pyx_tuple__141 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_log_entry, __pyx_n_s_message, __pyx_n_s_args); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(1, 549, __pyx_L1_error)
+  __pyx_tuple__141 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_log_entry, __pyx_n_s_message, __pyx_n_s_args); if (unlikely(!__pyx_tuple__141)) __PYX_ERR(1, 553, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__141);
   __Pyx_GIVEREF(__pyx_tuple__141);
-  __pyx_codeobj__142 = (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__141, __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__142)) __PYX_ERR(1, 549, __pyx_L1_error)
+  __pyx_codeobj__142 = (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__141, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_log, 553, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__142)) __PYX_ERR(1, 553, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":566
+  /* "src/lxml/xmlerror.pxi":570
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
  *         u"""receive(self, log_entry)
  * 
  */
-  __pyx_tuple__143 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_log_entry); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(1, 566, __pyx_L1_error)
+  __pyx_tuple__143 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_log_entry); if (unlikely(!__pyx_tuple__143)) __PYX_ERR(1, 570, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__143);
   __Pyx_GIVEREF(__pyx_tuple__143);
-  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __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__144)) __PYX_ERR(1, 566, __pyx_L1_error)
+  __pyx_codeobj__144 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__143, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_receive, 570, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__144)) __PYX_ERR(1, 570, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":616
+  /* "src/lxml/xmlerror.pxi":620
  * 
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
  *     u"""use_global_python_log(log)
  * 
  */
-  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(1, 616, __pyx_L1_error)
+  __pyx_tuple__145 = PyTuple_Pack(1, __pyx_n_s_log); if (unlikely(!__pyx_tuple__145)) __PYX_ERR(1, 620, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__145);
   __Pyx_GIVEREF(__pyx_tuple__145);
-  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __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__146)) __PYX_ERR(1, 616, __pyx_L1_error)
+  __pyx_codeobj__146 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__145, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_xmlerror_pxi, __pyx_n_s_use_global_python_log, 620, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__146)) __PYX_ERR(1, 620, __pyx_L1_error)
 
-  /* "src/lxml/xmlerror.pxi":804
+  /* "src/lxml/xmlerror.pxi":808
  * 
  * 
  * class ErrorLevels(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error levels"
  * 
  */
-  __pyx_tuple__147 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __pyx_tuple__147 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__147)) __PYX_ERR(1, 808, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__147);
   __Pyx_GIVEREF(__pyx_tuple__147);
 
-  /* "src/lxml/xmlerror.pxi":807
+  /* "src/lxml/xmlerror.pxi":811
  *     u"Libxml2 error levels"
  * 
  * class ErrorDomains(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error domains"
  * 
  */
-  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __pyx_tuple__148 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__148)) __PYX_ERR(1, 811, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__148);
   __Pyx_GIVEREF(__pyx_tuple__148);
 
-  /* "src/lxml/xmlerror.pxi":810
+  /* "src/lxml/xmlerror.pxi":814
  *     u"Libxml2 error domains"
  * 
  * class ErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error types"
  * 
  */
-  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __pyx_tuple__149 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__149)) __PYX_ERR(1, 814, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__149);
   __Pyx_GIVEREF(__pyx_tuple__149);
 
-  /* "src/lxml/xmlerror.pxi":813
+  /* "src/lxml/xmlerror.pxi":817
  *     u"Libxml2 error types"
  * 
  * class RelaxNGErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 RelaxNG error types"
  * 
  */
-  __pyx_tuple__150 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __pyx_tuple__150 = PyTuple_Pack(1, __pyx_builtin_object); if (unlikely(!__pyx_tuple__150)) __PYX_ERR(1, 817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__150);
   __Pyx_GIVEREF(__pyx_tuple__150);
 
@@ -228009,900 +228340,900 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__198);
   __pyx_codeobj__199 = (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__198, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itersiblings, 1376, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__199)) __PYX_ERR(0, 1376, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1394
+  /* "lxml/etree.pyx":1399
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  *     def iterancestors(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""iterancestors(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__200 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(0, 1394, __pyx_L1_error)
+  __pyx_tuple__200 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__200)) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__200);
   __Pyx_GIVEREF(__pyx_tuple__200);
-  __pyx_codeobj__201 = (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__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterancestors, 1394, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(0, 1394, __pyx_L1_error)
+  __pyx_codeobj__201 = (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__200, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterancestors, 1399, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__201)) __PYX_ERR(0, 1399, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1406
+  /* "lxml/etree.pyx":1413
  *         return AncestorsIterator(self, tags)
  * 
  *     def iterdescendants(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""iterdescendants(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__202 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(0, 1406, __pyx_L1_error)
+  __pyx_tuple__202 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__202)) __PYX_ERR(0, 1413, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__202);
   __Pyx_GIVEREF(__pyx_tuple__202);
-  __pyx_codeobj__203 = (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__202, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterdescendants, 1406, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(0, 1406, __pyx_L1_error)
+  __pyx_codeobj__203 = (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__202, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterdescendants, 1413, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__203)) __PYX_ERR(0, 1413, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1419
+  /* "lxml/etree.pyx":1428
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  *     def iterchildren(self, tag=None, *tags, reversed=False):             # <<<<<<<<<<<<<<
  *         u"""iterchildren(self, tag=None, *tags, reversed=False)
  * 
  */
-  __pyx_tuple__204 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(0, 1419, __pyx_L1_error)
+  __pyx_tuple__204 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_reversed, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__204)) __PYX_ERR(0, 1428, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__204);
   __Pyx_GIVEREF(__pyx_tuple__204);
-  __pyx_codeobj__205 = (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__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterchildren, 1419, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(0, 1419, __pyx_L1_error)
+  __pyx_codeobj__205 = (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__204, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iterchildren, 1428, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__205)) __PYX_ERR(0, 1428, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1432
+  /* "lxml/etree.pyx":1443
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  *     def getroottree(self):             # <<<<<<<<<<<<<<
  *         u"""getroottree(self)
  * 
  */
-  __pyx_tuple__206 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(0, 1432, __pyx_L1_error)
+  __pyx_tuple__206 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__206)) __PYX_ERR(0, 1443, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__206);
   __Pyx_GIVEREF(__pyx_tuple__206);
-  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroottree, 1432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(0, 1432, __pyx_L1_error)
+  __pyx_codeobj__207 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__206, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getroottree, 1443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__207)) __PYX_ERR(0, 1443, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1444
+  /* "lxml/etree.pyx":1455
  *         return _elementTreeFactory(self._doc, None)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""getiterator(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__208 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_tuple__208 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__208)) __PYX_ERR(0, 1455, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__208);
   __Pyx_GIVEREF(__pyx_tuple__208);
-  __pyx_codeobj__209 = (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__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 1444, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(0, 1444, __pyx_L1_error)
+  __pyx_codeobj__209 = (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__208, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 1455, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__209)) __PYX_ERR(0, 1455, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1466
+  /* "lxml/etree.pyx":1477
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__210 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(0, 1466, __pyx_L1_error)
+  __pyx_tuple__210 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__210)) __PYX_ERR(0, 1477, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__210);
   __Pyx_GIVEREF(__pyx_tuple__210);
-  __pyx_codeobj__211 = (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__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 1466, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(0, 1466, __pyx_L1_error)
+  __pyx_codeobj__211 = (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__210, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 1477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__211)) __PYX_ERR(0, 1477, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1490
+  /* "lxml/etree.pyx":1501
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def itertext(self, tag=None, *tags, with_tail=True):             # <<<<<<<<<<<<<<
  *         u"""itertext(self, tag=None, *tags, with_tail=True)
  * 
  */
-  __pyx_tuple__212 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_with_tail, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(0, 1490, __pyx_L1_error)
+  __pyx_tuple__212 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_with_tail, __pyx_n_s_tags); if (unlikely(!__pyx_tuple__212)) __PYX_ERR(0, 1501, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__212);
   __Pyx_GIVEREF(__pyx_tuple__212);
-  __pyx_codeobj__213 = (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__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itertext, 1490, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(0, 1490, __pyx_L1_error)
+  __pyx_codeobj__213 = (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__212, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_itertext, 1501, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__213)) __PYX_ERR(0, 1501, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1505
+  /* "lxml/etree.pyx":1516
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *         u"""makeelement(self, _tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__214 = 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__214)) __PYX_ERR(0, 1505, __pyx_L1_error)
+  __pyx_tuple__214 = 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__214)) __PYX_ERR(0, 1516, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__214);
   __Pyx_GIVEREF(__pyx_tuple__214);
-  __pyx_codeobj__215 = (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__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_makeelement, 1505, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(0, 1505, __pyx_L1_error)
+  __pyx_codeobj__215 = (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__214, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_makeelement, 1516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__215)) __PYX_ERR(0, 1516, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1514
+  /* "lxml/etree.pyx":1525
  *                             attrib, nsmap, _extra)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__216 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(0, 1514, __pyx_L1_error)
+  __pyx_tuple__216 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__216)) __PYX_ERR(0, 1525, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__216);
   __Pyx_GIVEREF(__pyx_tuple__216);
-  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_find, 1514, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 1514, __pyx_L1_error)
+  __pyx_codeobj__217 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_find, 1525, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__217)) __PYX_ERR(0, 1525, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1527
+  /* "lxml/etree.pyx":1538
  *         return _elementpath.find(self, path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_tuple__218 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 1527, __pyx_L1_error)
+  __pyx_tuple__218 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_default, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__218)) __PYX_ERR(0, 1538, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__218);
   __Pyx_GIVEREF(__pyx_tuple__218);
-  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 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_findtext, 1527, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 1527, __pyx_L1_error)
+  __pyx_codeobj__219 = (PyObject*)__Pyx_PyCode_New(4, 0, 4, 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_findtext, 1538, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__219)) __PYX_ERR(0, 1538, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1540
+  /* "lxml/etree.pyx":1551
  *         return _elementpath.findtext(self, path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__220 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 1540, __pyx_L1_error)
+  __pyx_tuple__220 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__220)) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__220);
   __Pyx_GIVEREF(__pyx_tuple__220);
-  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_findall, 1540, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(0, 1540, __pyx_L1_error)
+  __pyx_codeobj__221 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_findall, 1551, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__221)) __PYX_ERR(0, 1551, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1553
+  /* "lxml/etree.pyx":1564
  *         return _elementpath.findall(self, path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__222 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(0, 1553, __pyx_L1_error)
+  __pyx_tuple__222 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces); if (unlikely(!__pyx_tuple__222)) __PYX_ERR(0, 1564, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__222);
   __Pyx_GIVEREF(__pyx_tuple__222);
-  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_iterfind, 1553, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(0, 1553, __pyx_L1_error)
+  __pyx_codeobj__223 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_iterfind, 1564, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__223)) __PYX_ERR(0, 1564, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1566
+  /* "lxml/etree.pyx":1577
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_tuple__224 = 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__224)) __PYX_ERR(0, 1566, __pyx_L1_error)
+  __pyx_tuple__224 = 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__224)) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__224);
   __Pyx_GIVEREF(__pyx_tuple__224);
-  __pyx_codeobj__225 = (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__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 1566, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(0, 1566, __pyx_L1_error)
+  __pyx_codeobj__225 = (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__224, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 1577, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__225)) __PYX_ERR(0, 1577, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1577
+  /* "lxml/etree.pyx":1588
  *         return evaluator(_path, **_variables)
  * 
  *     def cssselect(self, expr, *, translator='xml'):             # <<<<<<<<<<<<<<
  *         """
  *         Run the CSS expression on this element and its children,
  */
-  __pyx_tuple__226 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_expr, __pyx_n_s_translator, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(0, 1577, __pyx_L1_error)
+  __pyx_tuple__226 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_expr, __pyx_n_s_translator, __pyx_n_s_CSSSelector); if (unlikely(!__pyx_tuple__226)) __PYX_ERR(0, 1588, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__226);
   __Pyx_GIVEREF(__pyx_tuple__226);
-  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 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_cssselect, 1577, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(0, 1577, __pyx_L1_error)
+  __pyx_codeobj__227 = (PyObject*)__Pyx_PyCode_New(2, 1, 4, 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_cssselect, 1588, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__227)) __PYX_ERR(0, 1588, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1627
+  /* "lxml/etree.pyx":1638
  *         raise TypeError, u"this element does not have children or attributes"
  * 
  *     def set(self, key, value):             # <<<<<<<<<<<<<<
  *         u"set(self, key, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__228 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(0, 1627, __pyx_L1_error)
+  __pyx_tuple__228 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_value); if (unlikely(!__pyx_tuple__228)) __PYX_ERR(0, 1638, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__228);
   __Pyx_GIVEREF(__pyx_tuple__228);
-  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_set, 1627, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(0, 1627, __pyx_L1_error)
+  __pyx_codeobj__229 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_set, 1638, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__229)) __PYX_ERR(0, 1638, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1631
+  /* "lxml/etree.pyx":1642
  *         self._raiseImmutable()
  * 
  *     def append(self, value):             # <<<<<<<<<<<<<<
  *         u"append(self, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__230 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(0, 1631, __pyx_L1_error)
+  __pyx_tuple__230 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_value); if (unlikely(!__pyx_tuple__230)) __PYX_ERR(0, 1642, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__230);
   __Pyx_GIVEREF(__pyx_tuple__230);
-  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_append, 1631, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(0, 1631, __pyx_L1_error)
+  __pyx_codeobj__231 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_append, 1642, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__231)) __PYX_ERR(0, 1642, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1635
+  /* "lxml/etree.pyx":1646
  *         self._raiseImmutable()
  * 
  *     def insert(self, index, value):             # <<<<<<<<<<<<<<
  *         u"insert(self, index, value)"
  *         self._raiseImmutable()
  */
-  __pyx_tuple__232 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_value); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 1635, __pyx_L1_error)
+  __pyx_tuple__232 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_index, __pyx_n_s_value); if (unlikely(!__pyx_tuple__232)) __PYX_ERR(0, 1646, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__232);
   __Pyx_GIVEREF(__pyx_tuple__232);
-  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_insert, 1635, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(0, 1635, __pyx_L1_error)
+  __pyx_codeobj__233 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_insert, 1646, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__233)) __PYX_ERR(0, 1646, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1674
+  /* "lxml/etree.pyx":1685
  *         return 0
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"get(self, key, default=None)"
  *         return None
  */
-  __pyx_tuple__234 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 1674, __pyx_L1_error)
+  __pyx_tuple__234 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__234)) __PYX_ERR(0, 1685, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__234);
   __Pyx_GIVEREF(__pyx_tuple__234);
-  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 1674, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(0, 1674, __pyx_L1_error)
+  __pyx_codeobj__235 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 1685, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__235)) __PYX_ERR(0, 1685, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1678
+  /* "lxml/etree.pyx":1689
  *         return None
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
  *         u"keys(self)"
  *         return []
  */
-  __pyx_tuple__236 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 1678, __pyx_L1_error)
+  __pyx_tuple__236 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__236)) __PYX_ERR(0, 1689, __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_keys, 1678, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(0, 1678, __pyx_L1_error)
+  __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_keys, 1689, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__237)) __PYX_ERR(0, 1689, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1682
+  /* "lxml/etree.pyx":1693
  *         return []
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
  *         u"items(self)"
  *         return []
  */
-  __pyx_tuple__238 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(0, 1682, __pyx_L1_error)
+  __pyx_tuple__238 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__238)) __PYX_ERR(0, 1693, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__238);
   __Pyx_GIVEREF(__pyx_tuple__238);
-  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_items, 1682, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(0, 1682, __pyx_L1_error)
+  __pyx_codeobj__239 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_items, 1693, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__239)) __PYX_ERR(0, 1693, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1686
+  /* "lxml/etree.pyx":1697
  *         return []
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
  *         u"values(self)"
  *         return []
  */
-  __pyx_tuple__240 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(0, 1686, __pyx_L1_error)
+  __pyx_tuple__240 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__240)) __PYX_ERR(0, 1697, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__240);
   __Pyx_GIVEREF(__pyx_tuple__240);
-  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_values, 1686, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(0, 1686, __pyx_L1_error)
+  __pyx_codeobj__241 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_values, 1697, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__241)) __PYX_ERR(0, 1697, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1723
+  /* "lxml/etree.pyx":1734
  *             return "<?%s?>" % strrepr(self.target)
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"""get(self, key, default=None)
  * 
  */
-  __pyx_tuple__242 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(0, 1723, __pyx_L1_error)
+  __pyx_tuple__242 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__242)) __PYX_ERR(0, 1734, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__242);
   __Pyx_GIVEREF(__pyx_tuple__242);
-  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 1723, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(0, 1723, __pyx_L1_error)
+  __pyx_codeobj__243 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 1734, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__243)) __PYX_ERR(0, 1734, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1867
+  /* "lxml/etree.pyx":1878
  *         return 0
  * 
  *     def parse(self, source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *         u"""parse(self, source, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__244 = 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__244)) __PYX_ERR(0, 1867, __pyx_L1_error)
+  __pyx_tuple__244 = 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__244)) __PYX_ERR(0, 1878, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__244);
   __Pyx_GIVEREF(__pyx_tuple__244);
-  __pyx_codeobj__245 = (PyObject*)__Pyx_PyCode_New(3, 1, 6, 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_parse, 1867, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(0, 1867, __pyx_L1_error)
+  __pyx_codeobj__245 = (PyObject*)__Pyx_PyCode_New(3, 1, 6, 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_parse, 1878, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__245)) __PYX_ERR(0, 1878, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1883
+  /* "lxml/etree.pyx":1894
  *         return self._context_node
  * 
  *     def _setroot(self, _Element root not None):             # <<<<<<<<<<<<<<
  *         u"""_setroot(self, root)
  * 
  */
-  __pyx_tuple__246 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__246)) __PYX_ERR(0, 1883, __pyx_L1_error)
+  __pyx_tuple__246 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_root); if (unlikely(!__pyx_tuple__246)) __PYX_ERR(0, 1894, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__246);
   __Pyx_GIVEREF(__pyx_tuple__246);
-  __pyx_codeobj__247 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_setroot, 1883, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(0, 1883, __pyx_L1_error)
+  __pyx_codeobj__247 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_setroot, 1894, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__247)) __PYX_ERR(0, 1894, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1894
+  /* "lxml/etree.pyx":1905
  *         self._doc = None
  * 
  *     def getroot(self):             # <<<<<<<<<<<<<<
  *         u"""getroot(self)
  * 
  */
-  __pyx_tuple__248 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__248)) __PYX_ERR(0, 1894, __pyx_L1_error)
+  __pyx_tuple__248 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__248)) __PYX_ERR(0, 1905, __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_getroot, 1894, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(0, 1894, __pyx_L1_error)
+  __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_getroot, 1905, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__249)) __PYX_ERR(0, 1905, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1901
+  /* "lxml/etree.pyx":1912
  *         return self._context_node
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  */
-  __pyx_tuple__250 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(0, 1901, __pyx_L1_error)
+  __pyx_tuple__250 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__250)) __PYX_ERR(0, 1912, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__250);
   __Pyx_GIVEREF(__pyx_tuple__250);
-  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_copy_2, 1901, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(0, 1901, __pyx_L1_error)
+  __pyx_codeobj__251 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_copy_2, 1912, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__251)) __PYX_ERR(0, 1912, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1904
+  /* "lxml/etree.pyx":1915
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
  *         cdef _Element root
  *         cdef _Document doc
  */
-  __pyx_tuple__252 = 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__252)) __PYX_ERR(0, 1904, __pyx_L1_error)
+  __pyx_tuple__252 = 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__252)) __PYX_ERR(0, 1915, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__252);
   __Pyx_GIVEREF(__pyx_tuple__252);
-  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_deepcopy, 1904, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(0, 1904, __pyx_L1_error)
+  __pyx_codeobj__253 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_deepcopy, 1915, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__253)) __PYX_ERR(0, 1915, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":1944
- *             return None
+  /* "lxml/etree.pyx":1955
+ *         return None
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
  *               pretty_print=False, xml_declaration=None, with_tail=True,
  *               standalone=None, doctype=None, compression=0,
  */
-  __pyx_tuple__254 = 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__254)) __PYX_ERR(0, 1944, __pyx_L1_error)
+  __pyx_tuple__254 = 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__254)) __PYX_ERR(0, 1955, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__254);
   __Pyx_GIVEREF(__pyx_tuple__254);
-  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(2, 12, 17, 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_write, 1944, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(0, 1944, __pyx_L1_error)
+  __pyx_codeobj__255 = (PyObject*)__Pyx_PyCode_New(2, 12, 17, 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_write, 1955, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__255)) __PYX_ERR(0, 1955, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2041
+  /* "lxml/etree.pyx":2052
  *                     is_standalone, compression)
  * 
  *     def getpath(self, _Element element not None):             # <<<<<<<<<<<<<<
  *         u"""getpath(self, element)
  * 
  */
-  __pyx_tuple__256 = 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__256)) __PYX_ERR(0, 2041, __pyx_L1_error)
+  __pyx_tuple__256 = 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__256)) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__256);
   __Pyx_GIVEREF(__pyx_tuple__256);
-  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_getpath, 2041, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(0, 2041, __pyx_L1_error)
+  __pyx_codeobj__257 = (PyObject*)__Pyx_PyCode_New(2, 0, 7, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_getpath, 2052, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__257)) __PYX_ERR(0, 2052, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2079
+  /* "lxml/etree.pyx":2090
  *         return path
  * 
  *     def getelementpath(self, _Element element not None):             # <<<<<<<<<<<<<<
  *         u"""getelementpath(self, element)
  * 
  */
-  __pyx_tuple__258 = 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__258)) __PYX_ERR(0, 2079, __pyx_L1_error)
+  __pyx_tuple__258 = 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__258)) __PYX_ERR(0, 2090, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__258);
   __Pyx_GIVEREF(__pyx_tuple__258);
-  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_getelementpath, 2079, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(0, 2079, __pyx_L1_error)
+  __pyx_codeobj__259 = (PyObject*)__Pyx_PyCode_New(2, 0, 10, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_getelementpath, 2090, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__259)) __PYX_ERR(0, 2090, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2143
+  /* "lxml/etree.pyx":2154
  *         return '/'.join(path)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""getiterator(self, *tags, tag=None)
  * 
  */
-  __pyx_tuple__260 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(0, 2143, __pyx_L1_error)
+  __pyx_tuple__260 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__260)) __PYX_ERR(0, 2154, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__260);
   __Pyx_GIVEREF(__pyx_tuple__260);
-  __pyx_codeobj__261 = (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__260, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 2143, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(0, 2143, __pyx_L1_error)
+  __pyx_codeobj__261 = (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__260, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_getiterator, 2154, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__261)) __PYX_ERR(0, 2154, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2167
+  /* "lxml/etree.pyx":2178
  *         return root.getiterator(*tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         u"""iter(self, tag=None, *tags)
  * 
  */
-  __pyx_tuple__262 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(0, 2167, __pyx_L1_error)
+  __pyx_tuple__262 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_tag, __pyx_n_s_tags, __pyx_n_s_root); if (unlikely(!__pyx_tuple__262)) __PYX_ERR(0, 2178, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__262);
   __Pyx_GIVEREF(__pyx_tuple__262);
-  __pyx_codeobj__263 = (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__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 2167, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(0, 2167, __pyx_L1_error)
+  __pyx_codeobj__263 = (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__262, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iter, 2178, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__263)) __PYX_ERR(0, 2178, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2185
+  /* "lxml/etree.pyx":2196
  *         return root.iter(*tags)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""find(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__264 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(0, 2185, __pyx_L1_error)
+  __pyx_tuple__264 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__264)) __PYX_ERR(0, 2196, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__264);
   __Pyx_GIVEREF(__pyx_tuple__264);
-  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 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_find, 2185, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(0, 2185, __pyx_L1_error)
+  __pyx_codeobj__265 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 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_find, 2196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__265)) __PYX_ERR(0, 2196, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2202
+  /* "lxml/etree.pyx":2213
  *         return root.find(path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""findtext(self, path, default=None, namespaces=None)
  * 
  */
-  __pyx_tuple__266 = 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__266)) __PYX_ERR(0, 2202, __pyx_L1_error)
+  __pyx_tuple__266 = 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__266)) __PYX_ERR(0, 2213, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__266);
   __Pyx_GIVEREF(__pyx_tuple__266);
-  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_findtext, 2202, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(0, 2202, __pyx_L1_error)
+  __pyx_codeobj__267 = (PyObject*)__Pyx_PyCode_New(4, 0, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_findtext, 2213, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__267)) __PYX_ERR(0, 2213, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2219
+  /* "lxml/etree.pyx":2230
  *         return root.findtext(path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""findall(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__268 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(0, 2219, __pyx_L1_error)
+  __pyx_tuple__268 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__268)) __PYX_ERR(0, 2230, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__268);
   __Pyx_GIVEREF(__pyx_tuple__268);
-  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_findall, 2219, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(0, 2219, __pyx_L1_error)
+  __pyx_codeobj__269 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_findall, 2230, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__269)) __PYX_ERR(0, 2230, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2236
+  /* "lxml/etree.pyx":2247
  *         return root.findall(path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         u"""iterfind(self, path, namespaces=None)
  * 
  */
-  __pyx_tuple__270 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(0, 2236, __pyx_L1_error)
+  __pyx_tuple__270 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_path, __pyx_n_s_namespaces, __pyx_n_s_root); if (unlikely(!__pyx_tuple__270)) __PYX_ERR(0, 2247, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__270);
   __Pyx_GIVEREF(__pyx_tuple__270);
-  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_iterfind, 2236, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(0, 2236, __pyx_L1_error)
+  __pyx_codeobj__271 = (PyObject*)__Pyx_PyCode_New(3, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_iterfind, 2247, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__271)) __PYX_ERR(0, 2247, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2253
+  /* "lxml/etree.pyx":2264
  *         return root.iterfind(path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
  *               smart_strings=True, **_variables):
  *         u"""xpath(self, _path, namespaces=None, extensions=None, smart_strings=True, **_variables)
  */
-  __pyx_tuple__272 = 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__272)) __PYX_ERR(0, 2253, __pyx_L1_error)
+  __pyx_tuple__272 = 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__272)) __PYX_ERR(0, 2264, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__272);
   __Pyx_GIVEREF(__pyx_tuple__272);
-  __pyx_codeobj__273 = (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__272, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 2253, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(0, 2253, __pyx_L1_error)
+  __pyx_codeobj__273 = (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__272, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xpath, 2264, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__273)) __PYX_ERR(0, 2264, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2278
+  /* "lxml/etree.pyx":2289
  *         return evaluator(_path, **_variables)
  * 
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):             # <<<<<<<<<<<<<<
  *         u"""xslt(self, _xslt, extensions=None, access_control=None, **_kw)
  * 
  */
-  __pyx_tuple__274 = 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__274)) __PYX_ERR(0, 2278, __pyx_L1_error)
+  __pyx_tuple__274 = 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__274)) __PYX_ERR(0, 2289, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__274);
   __Pyx_GIVEREF(__pyx_tuple__274);
-  __pyx_codeobj__275 = (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__274, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xslt_3, 2278, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(0, 2278, __pyx_L1_error)
+  __pyx_codeobj__275 = (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__274, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_xslt_3, 2289, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__275)) __PYX_ERR(0, 2289, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2297
+  /* "lxml/etree.pyx":2308
  *         return style(self, **_kw)
  * 
  *     def relaxng(self, relaxng):             # <<<<<<<<<<<<<<
  *         u"""relaxng(self, relaxng)
  * 
  */
-  __pyx_tuple__276 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_relaxng, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__276)) __PYX_ERR(0, 2297, __pyx_L1_error)
+  __pyx_tuple__276 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_relaxng, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__276)) __PYX_ERR(0, 2308, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__276);
   __Pyx_GIVEREF(__pyx_tuple__276);
-  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 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_relaxng, 2297, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(0, 2297, __pyx_L1_error)
+  __pyx_codeobj__277 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 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_relaxng, 2308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__277)) __PYX_ERR(0, 2308, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2315
+  /* "lxml/etree.pyx":2326
  *         return schema.validate(self)
  * 
  *     def xmlschema(self, xmlschema):             # <<<<<<<<<<<<<<
  *         u"""xmlschema(self, xmlschema)
  * 
  */
-  __pyx_tuple__278 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xmlschema, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(0, 2315, __pyx_L1_error)
+  __pyx_tuple__278 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xmlschema, __pyx_n_s_schema); if (unlikely(!__pyx_tuple__278)) __PYX_ERR(0, 2326, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__278);
   __Pyx_GIVEREF(__pyx_tuple__278);
-  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(2, 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_xmlschema, 2315, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(0, 2315, __pyx_L1_error)
+  __pyx_codeobj__279 = (PyObject*)__Pyx_PyCode_New(2, 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_xmlschema, 2326, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__279)) __PYX_ERR(0, 2326, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2333
+  /* "lxml/etree.pyx":2344
  *         return schema.validate(self)
  * 
  *     def xinclude(self):             # <<<<<<<<<<<<<<
  *         u"""xinclude(self)
  * 
  */
-  __pyx_tuple__280 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__280)) __PYX_ERR(0, 2333, __pyx_L1_error)
+  __pyx_tuple__280 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__280)) __PYX_ERR(0, 2344, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__280);
   __Pyx_GIVEREF(__pyx_tuple__280);
-  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xinclude, 2333, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(0, 2333, __pyx_L1_error)
+  __pyx_codeobj__281 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_xinclude, 2344, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__281)) __PYX_ERR(0, 2344, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2348
+  /* "lxml/etree.pyx":2359
  *         XInclude()(self._context_node)
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
  *                    compression=0, inclusive_ns_prefixes=None):
  *         u"""write_c14n(self, file, exclusive=False, with_comments=True,
  */
-  __pyx_tuple__282 = 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__282)) __PYX_ERR(0, 2348, __pyx_L1_error)
+  __pyx_tuple__282 = 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__282)) __PYX_ERR(0, 2359, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__282);
   __Pyx_GIVEREF(__pyx_tuple__282);
-  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_write_c14n, 2348, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(0, 2348, __pyx_L1_error)
+  __pyx_codeobj__283 = (PyObject*)__Pyx_PyCode_New(2, 4, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_write_c14n, 2359, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__283)) __PYX_ERR(0, 2359, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2412
+  /* "lxml/etree.pyx":2423
  *         _delAttribute(self._element, key)
  * 
  *     def update(self, sequence_or_dict):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         if isinstance(sequence_or_dict, (dict, _Attrib)):
  */
-  __pyx_tuple__284 = 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__284)) __PYX_ERR(0, 2412, __pyx_L1_error)
+  __pyx_tuple__284 = 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__284)) __PYX_ERR(0, 2423, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__284);
   __Pyx_GIVEREF(__pyx_tuple__284);
-  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(2, 0, 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_update, 2412, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(0, 2412, __pyx_L1_error)
+  __pyx_codeobj__285 = (PyObject*)__Pyx_PyCode_New(2, 0, 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_update, 2423, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__285)) __PYX_ERR(0, 2423, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2419
+  /* "lxml/etree.pyx":2430
  *             _setAttributeValue(self._element, key, value)
  * 
  *     def pop(self, key, *default):             # <<<<<<<<<<<<<<
  *         if len(default) > 1:
  *             raise TypeError, f"pop expected at most 2 arguments, got {len(default)+1}"
  */
-  __pyx_tuple__286 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default, __pyx_n_s_result); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(0, 2419, __pyx_L1_error)
+  __pyx_tuple__286 = PyTuple_Pack(4, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default, __pyx_n_s_result); if (unlikely(!__pyx_tuple__286)) __PYX_ERR(0, 2430, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__286);
   __Pyx_GIVEREF(__pyx_tuple__286);
-  __pyx_codeobj__287 = (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__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_pop, 2419, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(0, 2419, __pyx_L1_error)
+  __pyx_codeobj__287 = (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__286, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_pop, 2430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__287)) __PYX_ERR(0, 2430, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2432
+  /* "lxml/etree.pyx":2443
  *         return result
  * 
  *     def clear(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         cdef xmlNode* c_node = self._element._c_node
  */
-  __pyx_tuple__288 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(0, 2432, __pyx_L1_error)
+  __pyx_tuple__288 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_c_node); if (unlikely(!__pyx_tuple__288)) __PYX_ERR(0, 2443, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__288);
   __Pyx_GIVEREF(__pyx_tuple__288);
-  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(1, 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_clear, 2432, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(0, 2432, __pyx_L1_error)
+  __pyx_codeobj__289 = (PyObject*)__Pyx_PyCode_New(1, 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_clear, 2443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__289)) __PYX_ERR(0, 2443, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2443
+  /* "lxml/etree.pyx":2454
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__290 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(0, 2443, __pyx_L1_error)
+  __pyx_tuple__290 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__290)) __PYX_ERR(0, 2454, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__290);
   __Pyx_GIVEREF(__pyx_tuple__290);
-  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_copy_2, 2443, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(0, 2443, __pyx_L1_error)
+  __pyx_codeobj__291 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_copy_2, 2454, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__291)) __PYX_ERR(0, 2454, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2447
+  /* "lxml/etree.pyx":2458
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return dict(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__292 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__292)) __PYX_ERR(0, 2447, __pyx_L1_error)
+  __pyx_tuple__292 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_memo); if (unlikely(!__pyx_tuple__292)) __PYX_ERR(0, 2458, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__292);
   __Pyx_GIVEREF(__pyx_tuple__292);
-  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_deepcopy, 2447, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(0, 2447, __pyx_L1_error)
+  __pyx_codeobj__293 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_deepcopy, 2458, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__293)) __PYX_ERR(0, 2458, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2477
+  /* "lxml/etree.pyx":2488
  *         return c
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return _getAttributeValue(self._element, key, default)
  */
-  __pyx_tuple__294 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(0, 2477, __pyx_L1_error)
+  __pyx_tuple__294 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_key, __pyx_n_s_default); if (unlikely(!__pyx_tuple__294)) __PYX_ERR(0, 2488, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__294);
   __Pyx_GIVEREF(__pyx_tuple__294);
-  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 2477, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(0, 2477, __pyx_L1_error)
+  __pyx_codeobj__295 = (PyObject*)__Pyx_PyCode_New(3, 0, 3, 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_get, 2488, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__295)) __PYX_ERR(0, 2488, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2481
+  /* "lxml/etree.pyx":2492
  *         return _getAttributeValue(self._element, key, default)
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 1)
  */
-  __pyx_tuple__296 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(0, 2481, __pyx_L1_error)
+  __pyx_tuple__296 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__296)) __PYX_ERR(0, 2492, __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_keys, 2481, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(0, 2481, __pyx_L1_error)
+  __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_keys, 2492, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__297)) __PYX_ERR(0, 2492, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2489
+  /* "lxml/etree.pyx":2500
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def iterkeys(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 1))
  */
-  __pyx_tuple__298 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(0, 2489, __pyx_L1_error)
+  __pyx_tuple__298 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__298)) __PYX_ERR(0, 2500, __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_iterkeys, 2489, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(0, 2489, __pyx_L1_error)
+  __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_iterkeys, 2500, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__299)) __PYX_ERR(0, 2500, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2493
+  /* "lxml/etree.pyx":2504
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 2)
  */
-  __pyx_tuple__300 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(0, 2493, __pyx_L1_error)
+  __pyx_tuple__300 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__300)) __PYX_ERR(0, 2504, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__300);
   __Pyx_GIVEREF(__pyx_tuple__300);
-  __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__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 2493, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(0, 2493, __pyx_L1_error)
+  __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__300, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_values, 2504, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__301)) __PYX_ERR(0, 2504, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2497
+  /* "lxml/etree.pyx":2508
  *         return _collectAttributes(self._element._c_node, 2)
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 2))
  */
-  __pyx_tuple__302 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(0, 2497, __pyx_L1_error)
+  __pyx_tuple__302 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__302)) __PYX_ERR(0, 2508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__302);
   __Pyx_GIVEREF(__pyx_tuple__302);
-  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_itervalues, 2497, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(0, 2497, __pyx_L1_error)
+  __pyx_codeobj__303 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_itervalues, 2508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__303)) __PYX_ERR(0, 2508, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2501
+  /* "lxml/etree.pyx":2512
  *         return iter(_collectAttributes(self._element._c_node, 2))
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return _collectAttributes(self._element._c_node, 3)
  */
-  __pyx_tuple__304 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(0, 2501, __pyx_L1_error)
+  __pyx_tuple__304 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__304)) __PYX_ERR(0, 2512, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__304);
   __Pyx_GIVEREF(__pyx_tuple__304);
-  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_items, 2501, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(0, 2501, __pyx_L1_error)
+  __pyx_codeobj__305 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_items, 2512, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__305)) __PYX_ERR(0, 2512, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2505
+  /* "lxml/etree.pyx":2516
  *         return _collectAttributes(self._element._c_node, 3)
  * 
  *     def iteritems(self):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return iter(_collectAttributes(self._element._c_node, 3))
  */
-  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(0, 2505, __pyx_L1_error)
+  __pyx_tuple__306 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__306)) __PYX_ERR(0, 2516, __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_iteritems, 2505, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(0, 2505, __pyx_L1_error)
+  __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_iteritems, 2516, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__307)) __PYX_ERR(0, 2516, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2509
+  /* "lxml/etree.pyx":2520
  *         return iter(_collectAttributes(self._element._c_node, 3))
  * 
  *     def has_key(self, key):             # <<<<<<<<<<<<<<
  *         _assertValidNode(self._element)
  *         return key in self
  */
-  __pyx_tuple__308 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(0, 2509, __pyx_L1_error)
+  __pyx_tuple__308 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_key); if (unlikely(!__pyx_tuple__308)) __PYX_ERR(0, 2520, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__308);
   __Pyx_GIVEREF(__pyx_tuple__308);
-  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_has_key, 2509, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(0, 2509, __pyx_L1_error)
+  __pyx_codeobj__309 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 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_has_key, 2520, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__309)) __PYX_ERR(0, 2520, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":2986
+  /* "lxml/etree.pyx":2997
  * # module-level API for ElementTree
  * 
  * def Element(_tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *     u"""Element(_tag, attrib=None, nsmap=None, **_extra)
  * 
  */
-  __pyx_tuple__310 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(0, 2986, __pyx_L1_error)
+  __pyx_tuple__310 = PyTuple_Pack(4, __pyx_n_s_tag_2, __pyx_n_s_attrib, __pyx_n_s_nsmap, __pyx_n_s_extra); if (unlikely(!__pyx_tuple__310)) __PYX_ERR(0, 2997, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__310);
   __Pyx_GIVEREF(__pyx_tuple__310);
-  __pyx_codeobj__311 = (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__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Element, 2986, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(0, 2986, __pyx_L1_error)
-  __pyx_tuple__312 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(0, 2986, __pyx_L1_error)
+  __pyx_codeobj__311 = (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__310, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Element, 2997, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__311)) __PYX_ERR(0, 2997, __pyx_L1_error)
+  __pyx_tuple__312 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__312)) __PYX_ERR(0, 2997, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__312);
   __Pyx_GIVEREF(__pyx_tuple__312);
 
-  /* "lxml/etree.pyx":3000
+  /* "lxml/etree.pyx":3011
  * 
  * 
  * def Comment(text=None):             # <<<<<<<<<<<<<<
  *     u"""Comment(text=None)
  * 
  */
-  __pyx_tuple__313 = 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__313)) __PYX_ERR(0, 3000, __pyx_L1_error)
+  __pyx_tuple__313 = 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__313)) __PYX_ERR(0, 3011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__313);
   __Pyx_GIVEREF(__pyx_tuple__313);
-  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Comment, 3000, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(0, 3000, __pyx_L1_error)
-  __pyx_tuple__315 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(0, 3000, __pyx_L1_error)
+  __pyx_codeobj__314 = (PyObject*)__Pyx_PyCode_New(1, 0, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__313, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Comment, 3011, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__314)) __PYX_ERR(0, 3011, __pyx_L1_error)
+  __pyx_tuple__315 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__315)) __PYX_ERR(0, 3011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__315);
   __Pyx_GIVEREF(__pyx_tuple__315);
 
-  /* "lxml/etree.pyx":3024
+  /* "lxml/etree.pyx":3035
  * 
  * 
  * def ProcessingInstruction(target, text=None):             # <<<<<<<<<<<<<<
  *     u"""ProcessingInstruction(target, text=None)
  * 
  */
-  __pyx_tuple__316 = 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__316)) __PYX_ERR(0, 3024, __pyx_L1_error)
+  __pyx_tuple__316 = 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__316)) __PYX_ERR(0, 3035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__316);
   __Pyx_GIVEREF(__pyx_tuple__316);
-  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_ProcessingInstruction, 3024, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(0, 3024, __pyx_L1_error)
-  __pyx_tuple__318 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(0, 3024, __pyx_L1_error)
+  __pyx_codeobj__317 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_ProcessingInstruction, 3035, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__317)) __PYX_ERR(0, 3035, __pyx_L1_error)
+  __pyx_tuple__318 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__318)) __PYX_ERR(0, 3035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__318);
   __Pyx_GIVEREF(__pyx_tuple__318);
 
-  /* "lxml/etree.pyx":3077
+  /* "lxml/etree.pyx":3088
  * 
  * 
  * def Entity(name):             # <<<<<<<<<<<<<<
  *     u"""Entity(name)
  * 
  */
-  __pyx_tuple__319 = 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__319)) __PYX_ERR(0, 3077, __pyx_L1_error)
+  __pyx_tuple__319 = 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__319)) __PYX_ERR(0, 3088, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__319);
   __Pyx_GIVEREF(__pyx_tuple__319);
-  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Entity, 3077, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(0, 3077, __pyx_L1_error)
+  __pyx_codeobj__320 = (PyObject*)__Pyx_PyCode_New(1, 0, 6, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__319, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_Entity, 3088, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__320)) __PYX_ERR(0, 3088, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3103
+  /* "lxml/etree.pyx":3114
  * 
  * 
  * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
  *                attrib=None, nsmap=None, **_extra):
  *     u"""SubElement(_parent, _tag, attrib=None, nsmap=None, **_extra)
  */
-  __pyx_tuple__321 = 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__321)) __PYX_ERR(0, 3103, __pyx_L1_error)
+  __pyx_tuple__321 = 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__321)) __PYX_ERR(0, 3114, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__321);
   __Pyx_GIVEREF(__pyx_tuple__321);
-  __pyx_codeobj__322 = (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__321, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_SubElement, 3103, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(0, 3103, __pyx_L1_error)
-  __pyx_tuple__323 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__323)) __PYX_ERR(0, 3103, __pyx_L1_error)
+  __pyx_codeobj__322 = (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__321, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_SubElement, 3114, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__322)) __PYX_ERR(0, 3114, __pyx_L1_error)
+  __pyx_tuple__323 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__323)) __PYX_ERR(0, 3114, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__323);
   __Pyx_GIVEREF(__pyx_tuple__323);
 
-  /* "lxml/etree.pyx":3113
+  /* "lxml/etree.pyx":3124
  * 
  * 
  * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""ElementTree(element=None, file=None, parser=None)
  * 
  */
-  __pyx_tuple__324 = 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__324)) __PYX_ERR(0, 3113, __pyx_L1_error)
+  __pyx_tuple__324 = 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__324)) __PYX_ERR(0, 3124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__324);
   __Pyx_GIVEREF(__pyx_tuple__324);
-  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 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_ElementTree, 3113, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(0, 3113, __pyx_L1_error)
-  __pyx_tuple__326 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(0, 3113, __pyx_L1_error)
+  __pyx_codeobj__325 = (PyObject*)__Pyx_PyCode_New(1, 2, 10, 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_ElementTree, 3124, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__325)) __PYX_ERR(0, 3124, __pyx_L1_error)
+  __pyx_tuple__326 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__326)) __PYX_ERR(0, 3124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__326);
   __Pyx_GIVEREF(__pyx_tuple__326);
 
-  /* "lxml/etree.pyx":3139
+  /* "lxml/etree.pyx":3150
  * 
  * 
  * def HTML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""HTML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__327 = 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__327)) __PYX_ERR(0, 3139, __pyx_L1_error)
+  __pyx_tuple__327 = 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__327)) __PYX_ERR(0, 3150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__327);
   __Pyx_GIVEREF(__pyx_tuple__327);
-  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__327, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_HTML, 3139, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(0, 3139, __pyx_L1_error)
-  __pyx_tuple__329 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__329)) __PYX_ERR(0, 3139, __pyx_L1_error)
+  __pyx_codeobj__328 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__327, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_HTML, 3150, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__328)) __PYX_ERR(0, 3150, __pyx_L1_error)
+  __pyx_tuple__329 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__329)) __PYX_ERR(0, 3150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__329);
   __Pyx_GIVEREF(__pyx_tuple__329);
 
-  /* "lxml/etree.pyx":3165
+  /* "lxml/etree.pyx":3176
  * 
  * 
  * def XML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__330 = 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__330)) __PYX_ERR(0, 3165, __pyx_L1_error)
+  __pyx_tuple__330 = 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__330)) __PYX_ERR(0, 3176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__330);
   __Pyx_GIVEREF(__pyx_tuple__330);
-  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_XML, 3165, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(0, 3165, __pyx_L1_error)
-  __pyx_tuple__332 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(0, 3165, __pyx_L1_error)
+  __pyx_codeobj__331 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __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_XML, 3176, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__331)) __PYX_ERR(0, 3176, __pyx_L1_error)
+  __pyx_tuple__332 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__332)) __PYX_ERR(0, 3176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__332);
   __Pyx_GIVEREF(__pyx_tuple__332);
 
-  /* "lxml/etree.pyx":3196
+  /* "lxml/etree.pyx":3207
  * 
  * 
  * def fromstring(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(text, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__333 = 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__333)) __PYX_ERR(0, 3196, __pyx_L1_error)
+  __pyx_tuple__333 = 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__333)) __PYX_ERR(0, 3207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__333);
   __Pyx_GIVEREF(__pyx_tuple__333);
-  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstring, 3196, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(0, 3196, __pyx_L1_error)
-  __pyx_tuple__335 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(0, 3196, __pyx_L1_error)
+  __pyx_codeobj__334 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__333, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_fromstring, 3207, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__334)) __PYX_ERR(0, 3207, __pyx_L1_error)
+  __pyx_tuple__335 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__335)) __PYX_ERR(0, 3207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__335);
   __Pyx_GIVEREF(__pyx_tuple__335);
 
-  /* "lxml/etree.pyx":3217
+  /* "lxml/etree.pyx":3228
  * 
  * 
  * def fromstringlist(strings, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""fromstringlist(strings, parser=None)
  * 
  */
-  __pyx_tuple__336 = 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__336)) __PYX_ERR(0, 3217, __pyx_L1_error)
+  __pyx_tuple__336 = 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__336)) __PYX_ERR(0, 3228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__336);
   __Pyx_GIVEREF(__pyx_tuple__336);
-  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_fromstringlist, 3217, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(0, 3217, __pyx_L1_error)
-  __pyx_tuple__338 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(0, 3217, __pyx_L1_error)
+  __pyx_codeobj__337 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_fromstringlist, 3228, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__337)) __PYX_ERR(0, 3228, __pyx_L1_error)
+  __pyx_tuple__338 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__338)) __PYX_ERR(0, 3228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__338);
   __Pyx_GIVEREF(__pyx_tuple__338);
 
-  /* "lxml/etree.pyx":3238
+  /* "lxml/etree.pyx":3249
  * 
  * 
  * def iselement(element):             # <<<<<<<<<<<<<<
  *     u"""iselement(element)
  * 
  */
-  __pyx_tuple__339 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__339)) __PYX_ERR(0, 3238, __pyx_L1_error)
+  __pyx_tuple__339 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__339)) __PYX_ERR(0, 3249, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__339);
   __Pyx_GIVEREF(__pyx_tuple__339);
-  __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__339, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iselement, 3238, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(0, 3238, __pyx_L1_error)
+  __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__339, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_iselement, 3249, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__340)) __PYX_ERR(0, 3249, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3246
+  /* "lxml/etree.pyx":3257
  * 
  * 
  * def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
  *     u"""dump(elem, pretty_print=True, with_tail=True)
  * 
  */
-  __pyx_tuple__341 = 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__341)) __PYX_ERR(0, 3246, __pyx_L1_error)
+  __pyx_tuple__341 = 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__341)) __PYX_ERR(0, 3257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__341);
   __Pyx_GIVEREF(__pyx_tuple__341);
-  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__341, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_dump, 3246, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(0, 3246, __pyx_L1_error)
+  __pyx_codeobj__342 = (PyObject*)__Pyx_PyCode_New(1, 2, 4, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__341, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_dump, 3257, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__342)) __PYX_ERR(0, 3257, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3259
+  /* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_tuple__343 = 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__343)) __PYX_ERR(0, 3259, __pyx_L1_error)
+  __pyx_tuple__343 = 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__343)) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__343);
   __Pyx_GIVEREF(__pyx_tuple__343);
-  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__343, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostring, 3259, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(0, 3259, __pyx_L1_error)
+  __pyx_codeobj__344 = (PyObject*)__Pyx_PyCode_New(1, 10, 13, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__343, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostring, 3270, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__344)) __PYX_ERR(0, 3270, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3352
+  /* "lxml/etree.pyx":3363
  * 
  * 
  * def tostringlist(element_or_tree, *args, **kwargs):             # <<<<<<<<<<<<<<
  *     u"""tostringlist(element_or_tree, *args, **kwargs)
  * 
  */
-  __pyx_tuple__345 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__345)) __PYX_ERR(0, 3352, __pyx_L1_error)
+  __pyx_tuple__345 = PyTuple_Pack(3, __pyx_n_s_element_or_tree, __pyx_n_s_args, __pyx_n_s_kwargs); if (unlikely(!__pyx_tuple__345)) __PYX_ERR(0, 3363, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__345);
   __Pyx_GIVEREF(__pyx_tuple__345);
-  __pyx_codeobj__346 = (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__345, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostringlist, 3352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(0, 3352, __pyx_L1_error)
+  __pyx_codeobj__346 = (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__345, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tostringlist, 3363, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__346)) __PYX_ERR(0, 3363, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3364
+  /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_tuple__347 = 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__347)) __PYX_ERR(0, 3364, __pyx_L1_error)
+  __pyx_tuple__347 = 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__347)) __PYX_ERR(0, 3375, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__347);
   __Pyx_GIVEREF(__pyx_tuple__347);
-  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tounicode, 3364, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(0, 3364, __pyx_L1_error)
+  __pyx_codeobj__348 = (PyObject*)__Pyx_PyCode_New(1, 4, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__347, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_tounicode, 3375, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__348)) __PYX_ERR(0, 3375, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3398
+  /* "lxml/etree.pyx":3409
  * 
  * 
  * def parse(source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(source, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__349 = 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__349)) __PYX_ERR(0, 3398, __pyx_L1_error)
+  __pyx_tuple__349 = 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__349)) __PYX_ERR(0, 3409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__349);
   __Pyx_GIVEREF(__pyx_tuple__349);
-  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 3398, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(0, 3398, __pyx_L1_error)
-  __pyx_tuple__351 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(0, 3398, __pyx_L1_error)
+  __pyx_codeobj__350 = (PyObject*)__Pyx_PyCode_New(2, 1, 5, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__349, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_parse, 3409, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__350)) __PYX_ERR(0, 3409, __pyx_L1_error)
+  __pyx_tuple__351 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__351)) __PYX_ERR(0, 3409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__351);
   __Pyx_GIVEREF(__pyx_tuple__351);
 
-  /* "lxml/etree.pyx":3430
+  /* "lxml/etree.pyx":3441
  * 
  * 
  * def adopt_external_document(capsule, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     """adopt_external_document(capsule, parser=None)
  * 
  */
-  __pyx_tuple__352 = 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__352)) __PYX_ERR(0, 3430, __pyx_L1_error)
+  __pyx_tuple__352 = 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__352)) __PYX_ERR(0, 3441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__352);
   __Pyx_GIVEREF(__pyx_tuple__352);
-  __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_adopt_external_document, 3430, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(0, 3430, __pyx_L1_error)
-  __pyx_tuple__354 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(0, 3430, __pyx_L1_error)
+  __pyx_codeobj__353 = (PyObject*)__Pyx_PyCode_New(2, 0, 5, 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_adopt_external_document, 3441, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__353)) __PYX_ERR(0, 3441, __pyx_L1_error)
+  __pyx_tuple__354 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__354)) __PYX_ERR(0, 3441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__354);
   __Pyx_GIVEREF(__pyx_tuple__354);
 
@@ -228991,7 +229322,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__368 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__367, __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__368)) __PYX_ERR(6, 235, __pyx_L1_error)
 
   /* "src/lxml/readonlytree.pxi":293
- *             return None
+ *         return None
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"""Gets an element attribute.
@@ -229369,7 +229700,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__432 = (PyObject*)__Pyx_PyCode_New(2, 0, 3, 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_parser_pxi, __pyx_n_s_position, 23, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__432)) __PYX_ERR(2, 23, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":961
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
@@ -229417,7 +229748,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__440 = (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__439, __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__440)) __PYX_ERR(2, 999, __pyx_L1_error)
 
   /* "src/lxml/parser.pxi":1242
- *             return self._getPushParserContext()._error_log.copy()
+ *         return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
@@ -229908,7 +230239,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__71 = (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__510, __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__71)) __PYX_ERR(8, 1439, __pyx_L1_error)
 
   /* "src/lxml/iterparse.pxi":148
- *             return self._parser.version
+ *         return self._parser.version
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
@@ -230482,68 +230813,68 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__606);
   __pyx_codeobj__607 = (PyObject*)__Pyx_PyCode_New(3, 2, 8, 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_xsltext_pxi, __pyx_n_s_process_children, 74, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__607)) __PYX_ERR(19, 74, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3511
+  /* "lxml/etree.pyx":3522
  *         self._error_log = _ErrorLog()
  * 
  *     def validate(self, etree):             # <<<<<<<<<<<<<<
  *         u"""validate(self, etree)
  * 
  */
-  __pyx_tuple__608 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__608)) __PYX_ERR(0, 3511, __pyx_L1_error)
+  __pyx_tuple__608 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__608)) __PYX_ERR(0, 3522, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__608);
   __Pyx_GIVEREF(__pyx_tuple__608);
-  __pyx_codeobj__609 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__608, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_validate, 3511, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__609)) __PYX_ERR(0, 3511, __pyx_L1_error)
+  __pyx_codeobj__609 = (PyObject*)__Pyx_PyCode_New(2, 0, 2, 0, CO_OPTIMIZED|CO_NEWLOCALS, __pyx_empty_bytes, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_tuple__608, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_etree_pyx, __pyx_n_s_validate, 3522, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__609)) __PYX_ERR(0, 3522, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3520
+  /* "lxml/etree.pyx":3531
  *         return self(etree)
  * 
  *     def assertValid(self, etree):             # <<<<<<<<<<<<<<
  *         u"""assertValid(self, etree)
  * 
  */
-  __pyx_tuple__610 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__610)) __PYX_ERR(0, 3520, __pyx_L1_error)
+  __pyx_tuple__610 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__610)) __PYX_ERR(0, 3531, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__610);
   __Pyx_GIVEREF(__pyx_tuple__610);
-  __pyx_codeobj__611 = (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_etree_pyx, __pyx_n_s_assertValid, 3520, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__611)) __PYX_ERR(0, 3520, __pyx_L1_error)
+  __pyx_codeobj__611 = (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_etree_pyx, __pyx_n_s_assertValid, 3531, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__611)) __PYX_ERR(0, 3531, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3530
+  /* "lxml/etree.pyx":3541
  *                                   self._error_log)
  * 
  *     def assert_(self, etree):             # <<<<<<<<<<<<<<
  *         u"""assert_(self, etree)
  * 
  */
-  __pyx_tuple__612 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(0, 3530, __pyx_L1_error)
+  __pyx_tuple__612 = PyTuple_Pack(2, __pyx_n_s_self, __pyx_n_s_etree); if (unlikely(!__pyx_tuple__612)) __PYX_ERR(0, 3541, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__612);
   __Pyx_GIVEREF(__pyx_tuple__612);
-  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(2, 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_etree_pyx, __pyx_n_s_assert, 3530, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(0, 3530, __pyx_L1_error)
+  __pyx_codeobj__613 = (PyObject*)__Pyx_PyCode_New(2, 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_etree_pyx, __pyx_n_s_assert, 3541, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__613)) __PYX_ERR(0, 3541, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3539
+  /* "lxml/etree.pyx":3550
  *                 u"Document does not comply with schema")
  * 
  *     cpdef _append_log_message(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
  *                               message, filename):
  *         self._error_log._receiveGeneric(domain, type, level, line, message,
  */
-  __pyx_tuple__614 = 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__614)) __PYX_ERR(0, 3539, __pyx_L1_error)
+  __pyx_tuple__614 = 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__614)) __PYX_ERR(0, 3550, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__614);
   __Pyx_GIVEREF(__pyx_tuple__614);
-  __pyx_codeobj__615 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 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_etree_pyx, __pyx_n_s_append_log_message, 3539, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__615)) __PYX_ERR(0, 3539, __pyx_L1_error)
+  __pyx_codeobj__615 = (PyObject*)__Pyx_PyCode_New(7, 0, 7, 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_etree_pyx, __pyx_n_s_append_log_message, 3550, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__615)) __PYX_ERR(0, 3550, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3544
+  /* "lxml/etree.pyx":3555
  *                                         filename)
  * 
  *     cpdef _clear_error_log(self):             # <<<<<<<<<<<<<<
  *         self._error_log.clear()
  * 
  */
-  __pyx_tuple__616 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__616)) __PYX_ERR(0, 3544, __pyx_L1_error)
+  __pyx_tuple__616 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__616)) __PYX_ERR(0, 3555, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__616);
   __Pyx_GIVEREF(__pyx_tuple__616);
-  __pyx_codeobj__617 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_etree_pyx, __pyx_n_s_clear_error_log, 3544, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__617)) __PYX_ERR(0, 3544, __pyx_L1_error)
+  __pyx_codeobj__617 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_etree_pyx, __pyx_n_s_clear_error_log, 3555, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__617)) __PYX_ERR(0, 3555, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":163
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -230567,7 +230898,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__620 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_dtd_pxi, __pyx_n_s_values, 170, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__620)) __PYX_ERR(20, 170, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":223
- *                return None
+ *            return None
  * 
  *     def iterattributes(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -230591,7 +230922,7 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __pyx_codeobj__623 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_dtd_pxi, __pyx_n_s_attributes, 233, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__623)) __PYX_ERR(20, 233, __pyx_L1_error)
 
   /* "src/lxml/dtd.pxi":314
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  *     def iterelements(self):             # <<<<<<<<<<<<<<
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
@@ -230951,35 +231282,35 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__BaseErrorLog._receiveGeneric = (void (*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int, int, int, int, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__receiveGeneric;
   __pyx_vtable_4lxml_5etree__BaseErrorLog._buildParseException = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildParseException;
   __pyx_vtable_4lxml_5etree__BaseErrorLog._buildExceptionMessage = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, PyObject *))__pyx_f_4lxml_5etree_13_BaseErrorLog__buildExceptionMessage;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 180, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 184, __pyx_L1_error)
   __pyx_type_4lxml_5etree__BaseErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__BaseErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree__BaseErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__BaseErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 180, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BaseErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 180, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__BaseErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 184, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BaseErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__BaseErrorLog) < 0) __PYX_ERR(1, 184, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__BaseErrorLog = &__pyx_type_4lxml_5etree__BaseErrorLog;
   __pyx_vtabptr_4lxml_5etree__ListErrorLog = &__pyx_vtable_4lxml_5etree__ListErrorLog;
   __pyx_vtable_4lxml_5etree__ListErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;
   __pyx_vtable_4lxml_5etree__ListErrorLog.__pyx_base.copy = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_13_ListErrorLog_copy;
   __pyx_type_4lxml_5etree__ListErrorLog.tp_base = __pyx_ptype_4lxml_5etree__BaseErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 270, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 274, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ListErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ListErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree__ListErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ListErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ListErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 270, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ListErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 270, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ListErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 274, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ListErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__ListErrorLog) < 0) __PYX_ERR(1, 274, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ListErrorLog = &__pyx_type_4lxml_5etree__ListErrorLog;
   __pyx_vtabptr_4lxml_5etree__ErrorLogContext = &__pyx_vtable_4lxml_5etree__ErrorLogContext;
   __pyx_vtable_4lxml_5etree__ErrorLogContext.push_error_log = (int (*)(struct __pyx_obj_4lxml_5etree__ErrorLogContext *, struct __pyx_obj_4lxml_5etree__BaseErrorLog *))__pyx_f_4lxml_5etree_16_ErrorLogContext_push_error_log;
   __pyx_vtable_4lxml_5etree__ErrorLogContext.pop_error_log = (int (*)(struct __pyx_obj_4lxml_5etree__ErrorLogContext *))__pyx_f_4lxml_5etree_16_ErrorLogContext_pop_error_log;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLogContext) < 0) __PYX_ERR(1, 388, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLogContext) < 0) __PYX_ERR(1, 392, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ErrorLogContext.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ErrorLogContext.tp_dictoffset && __pyx_type_4lxml_5etree__ErrorLogContext.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ErrorLogContext.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLogContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLogContext) < 0) __PYX_ERR(1, 388, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLogContext.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLogContext) < 0) __PYX_ERR(1, 392, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ErrorLogContext = &__pyx_type_4lxml_5etree__ErrorLogContext;
   __pyx_vtabptr_4lxml_5etree__ErrorLog = &__pyx_vtable_4lxml_5etree__ErrorLog;
   __pyx_vtable_4lxml_5etree__ErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ListErrorLog;
@@ -230990,50 +231321,50 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__ErrorLog.disconnect = (int (*)(struct __pyx_obj_4lxml_5etree__ErrorLog *))__pyx_f_4lxml_5etree_9_ErrorLog_disconnect;
   __pyx_vtable_4lxml_5etree__ErrorLog.clear = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ErrorLog *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_9_ErrorLog_clear;
   __pyx_type_4lxml_5etree__ErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ListErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 425, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 429, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree__ErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 425, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 425, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 429, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__ErrorLog) < 0) __PYX_ERR(1, 429, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ErrorLog = &__pyx_type_4lxml_5etree__ErrorLog;
   __pyx_vtabptr_4lxml_5etree__DomainErrorLog = &__pyx_vtable_4lxml_5etree__DomainErrorLog;
   __pyx_vtable_4lxml_5etree__DomainErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
   __pyx_vtable_4lxml_5etree__DomainErrorLog.__pyx_base.__pyx_base.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_15_DomainErrorLog_receive;
   __pyx_type_4lxml_5etree__DomainErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 478, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 482, __pyx_L1_error)
   __pyx_type_4lxml_5etree__DomainErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__DomainErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree__DomainErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__DomainErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__DomainErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 478, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DomainErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 478, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__DomainErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 482, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DomainErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__DomainErrorLog) < 0) __PYX_ERR(1, 482, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__DomainErrorLog = &__pyx_type_4lxml_5etree__DomainErrorLog;
   __pyx_vtabptr_4lxml_5etree__RotatingErrorLog = &__pyx_vtable_4lxml_5etree__RotatingErrorLog;
   __pyx_vtable_4lxml_5etree__RotatingErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ErrorLog;
   __pyx_vtable_4lxml_5etree__RotatingErrorLog.__pyx_base.__pyx_base.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_17_RotatingErrorLog_receive;
   __pyx_type_4lxml_5etree__RotatingErrorLog.tp_base = __pyx_ptype_4lxml_5etree__ErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 487, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 491, __pyx_L1_error)
   __pyx_type_4lxml_5etree__RotatingErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree__RotatingErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__RotatingErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 487, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RotatingErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 487, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__RotatingErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 491, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_RotatingErrorLog, (PyObject *)&__pyx_type_4lxml_5etree__RotatingErrorLog) < 0) __PYX_ERR(1, 491, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__RotatingErrorLog = &__pyx_type_4lxml_5etree__RotatingErrorLog;
   __pyx_vtabptr_4lxml_5etree_PyErrorLog = &__pyx_vtable_4lxml_5etree_PyErrorLog;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base = *__pyx_vtabptr_4lxml_5etree__BaseErrorLog;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base.copy = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10PyErrorLog_copy;
   __pyx_vtable_4lxml_5etree_PyErrorLog.__pyx_base.receive = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__BaseErrorLog *, struct __pyx_obj_4lxml_5etree__LogEntry *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10PyErrorLog_receive;
   __pyx_type_4lxml_5etree_PyErrorLog.tp_base = __pyx_ptype_4lxml_5etree__BaseErrorLog;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 505, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 509, __pyx_L1_error)
   __pyx_type_4lxml_5etree_PyErrorLog.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_PyErrorLog.tp_dictoffset && __pyx_type_4lxml_5etree_PyErrorLog.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_PyErrorLog.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PyErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 505, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyErrorLog, (PyObject *)&__pyx_type_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 505, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_PyErrorLog.tp_dict, __pyx_vtabptr_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 509, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyErrorLog, (PyObject *)&__pyx_type_4lxml_5etree_PyErrorLog) < 0) __PYX_ERR(1, 509, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_PyErrorLog = &__pyx_type_4lxml_5etree_PyErrorLog;
   __pyx_vtabptr_4lxml_5etree__Document = &__pyx_vtable_4lxml_5etree__Document;
   __pyx_vtable_4lxml_5etree__Document.getroot = (PyObject *(*)(struct LxmlDocument *))__pyx_f_4lxml_5etree_9_Document_getroot;
@@ -231142,14 +231473,14 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtabptr_4lxml_5etree___ContentOnlyElement = &__pyx_vtable_4lxml_5etree___ContentOnlyElement;
   __pyx_vtable_4lxml_5etree___ContentOnlyElement._raiseImmutable = (int (*)(struct __pyx_obj_4lxml_5etree___ContentOnlyElement *))__pyx_f_4lxml_5etree_20__ContentOnlyElement__raiseImmutable;
   __pyx_type_4lxml_5etree___ContentOnlyElement.tp_base = __pyx_ptype_4lxml_5etree__Element;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree___ContentOnlyElement) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree___ContentOnlyElement) < 0) __PYX_ERR(0, 1634, __pyx_L1_error)
   __pyx_type_4lxml_5etree___ContentOnlyElement.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree___ContentOnlyElement.tp_dictoffset && __pyx_type_4lxml_5etree___ContentOnlyElement.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree___ContentOnlyElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__setitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1623, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__setitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1634, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_6__setitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_6__setitem__.doc = __pyx_doc_4lxml_5etree_20__ContentOnlyElement_6__setitem__;
@@ -231159,7 +231490,7 @@ static int __Pyx_modinit_type_init_code(void) {
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1623, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__getitem__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1634, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_8__getitem__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_8__getitem__.doc = __pyx_doc_4lxml_5etree_20__ContentOnlyElement_8__getitem__;
@@ -231169,7 +231500,7 @@ static int __Pyx_modinit_type_init_code(void) {
   #endif
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1623, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_5etree___ContentOnlyElement, "__len__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1634, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_10__len__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_5etree_20__ContentOnlyElement_10__len__.doc = __pyx_doc_4lxml_5etree_20__ContentOnlyElement_10__len__;
@@ -231177,66 +231508,66 @@ static int __Pyx_modinit_type_init_code(void) {
     }
   }
   #endif
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree___ContentOnlyElement.tp_dict, __pyx_vtabptr_4lxml_5etree___ContentOnlyElement) < 0) __PYX_ERR(0, 1623, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree___ContentOnlyElement.tp_dict, __pyx_vtabptr_4lxml_5etree___ContentOnlyElement) < 0) __PYX_ERR(0, 1634, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree___ContentOnlyElement = &__pyx_type_4lxml_5etree___ContentOnlyElement;
   __pyx_vtabptr_4lxml_5etree__Comment = &__pyx_vtable_4lxml_5etree__Comment;
   __pyx_vtable_4lxml_5etree__Comment.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
   __pyx_type_4lxml_5etree__Comment.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1690, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1701, __pyx_L1_error)
   __pyx_type_4lxml_5etree__Comment.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__Comment.tp_dictoffset && __pyx_type_4lxml_5etree__Comment.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__Comment.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Comment.tp_dict, __pyx_vtabptr_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1690, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Comment_2, (PyObject *)&__pyx_type_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1690, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Comment.tp_dict, __pyx_vtabptr_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1701, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Comment_2, (PyObject *)&__pyx_type_4lxml_5etree__Comment) < 0) __PYX_ERR(0, 1701, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__Comment = &__pyx_type_4lxml_5etree__Comment;
   __pyx_vtabptr_4lxml_5etree__ProcessingInstruction = &__pyx_vtable_4lxml_5etree__ProcessingInstruction;
   __pyx_vtable_4lxml_5etree__ProcessingInstruction.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
   __pyx_type_4lxml_5etree__ProcessingInstruction.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1698, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ProcessingInstruction.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ProcessingInstruction.tp_dictoffset && __pyx_type_4lxml_5etree__ProcessingInstruction.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ProcessingInstruction.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ProcessingInstruction.tp_dict, __pyx_vtabptr_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1698, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ProcessingInstruction_2, (PyObject *)&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1698, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ProcessingInstruction.tp_dict, __pyx_vtabptr_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ProcessingInstruction_2, (PyObject *)&__pyx_type_4lxml_5etree__ProcessingInstruction) < 0) __PYX_ERR(0, 1709, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ProcessingInstruction = &__pyx_type_4lxml_5etree__ProcessingInstruction;
   __pyx_vtabptr_4lxml_5etree__Entity = &__pyx_vtable_4lxml_5etree__Entity;
   __pyx_vtable_4lxml_5etree__Entity.__pyx_base = *__pyx_vtabptr_4lxml_5etree___ContentOnlyElement;
   __pyx_type_4lxml_5etree__Entity.tp_base = __pyx_ptype_4lxml_5etree___ContentOnlyElement;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1760, __pyx_L1_error)
   __pyx_type_4lxml_5etree__Entity.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__Entity.tp_dictoffset && __pyx_type_4lxml_5etree__Entity.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__Entity.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Entity.tp_dict, __pyx_vtabptr_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Entity_2, (PyObject *)&__pyx_type_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1749, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Entity.tp_dict, __pyx_vtabptr_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1760, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Entity_2, (PyObject *)&__pyx_type_4lxml_5etree__Entity) < 0) __PYX_ERR(0, 1760, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__Entity = &__pyx_type_4lxml_5etree__Entity;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_QName) < 0) __PYX_ERR(0, 1778, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_QName) < 0) __PYX_ERR(0, 1789, __pyx_L1_error)
   __pyx_type_4lxml_5etree_QName.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_QName.tp_dictoffset && __pyx_type_4lxml_5etree_QName.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_QName.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_QName, (PyObject *)&__pyx_type_4lxml_5etree_QName) < 0) __PYX_ERR(0, 1778, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_QName, (PyObject *)&__pyx_type_4lxml_5etree_QName) < 0) __PYX_ERR(0, 1789, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_QName = &__pyx_type_4lxml_5etree_QName;
   __pyx_vtabptr_4lxml_5etree__ElementTree = &__pyx_vtable_4lxml_5etree__ElementTree;
   __pyx_vtable_4lxml_5etree__ElementTree._assertHasRoot = (int (*)(struct LxmlElementTree *))__pyx_f_4lxml_5etree_12_ElementTree__assertHasRoot;
-  if (PyType_Ready(&LxmlElementTreeType) < 0) __PYX_ERR(0, 1847, __pyx_L1_error)
+  if (PyType_Ready(&LxmlElementTreeType) < 0) __PYX_ERR(0, 1858, __pyx_L1_error)
   LxmlElementTreeType.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!LxmlElementTreeType.tp_dictoffset && LxmlElementTreeType.tp_getattro == PyObject_GenericGetAttr)) {
     LxmlElementTreeType.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(LxmlElementTreeType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTree) < 0) __PYX_ERR(0, 1847, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTree_2, (PyObject *)&LxmlElementTreeType) < 0) __PYX_ERR(0, 1847, __pyx_L1_error)
+  if (__Pyx_SetVtable(LxmlElementTreeType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTree) < 0) __PYX_ERR(0, 1858, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTree_2, (PyObject *)&LxmlElementTreeType) < 0) __PYX_ERR(0, 1858, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ElementTree = &LxmlElementTreeType;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__Attrib) < 0) __PYX_ERR(0, 2395, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__Attrib) < 0) __PYX_ERR(0, 2406, __pyx_L1_error)
   __pyx_type_4lxml_5etree__Attrib.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__Attrib.tp_dictoffset && __pyx_type_4lxml_5etree__Attrib.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__Attrib.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Attrib, (PyObject *)&__pyx_type_4lxml_5etree__Attrib) < 0) __PYX_ERR(0, 2395, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Attrib, (PyObject *)&__pyx_type_4lxml_5etree__Attrib) < 0) __PYX_ERR(0, 2406, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__Attrib = &__pyx_type_4lxml_5etree__Attrib;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__AttribIterator) < 0) __PYX_ERR(0, 2533, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__AttribIterator) < 0) __PYX_ERR(0, 2544, __pyx_L1_error)
   __pyx_type_4lxml_5etree__AttribIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__AttribIterator.tp_dictoffset && __pyx_type_4lxml_5etree__AttribIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__AttribIterator.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
@@ -231244,25 +231575,25 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_ptype_4lxml_5etree__AttribIterator = &__pyx_type_4lxml_5etree__AttribIterator;
   __pyx_vtabptr_4lxml_5etree__ElementTagMatcher = &__pyx_vtable_4lxml_5etree__ElementTagMatcher;
   __pyx_vtable_4lxml_5etree__ElementTagMatcher._initTagMatch = (PyObject *(*)(struct LxmlElementTagMatcher *, PyObject *))__pyx_f_4lxml_5etree_18_ElementTagMatcher__initTagMatch;
-  if (PyType_Ready(&LxmlElementTagMatcherType) < 0) __PYX_ERR(0, 2574, __pyx_L1_error)
+  if (PyType_Ready(&LxmlElementTagMatcherType) < 0) __PYX_ERR(0, 2585, __pyx_L1_error)
   LxmlElementTagMatcherType.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!LxmlElementTagMatcherType.tp_dictoffset && LxmlElementTagMatcherType.tp_getattro == PyObject_GenericGetAttr)) {
     LxmlElementTagMatcherType.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(LxmlElementTagMatcherType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTagMatcher) < 0) __PYX_ERR(0, 2574, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTagMatcher, (PyObject *)&LxmlElementTagMatcherType) < 0) __PYX_ERR(0, 2574, __pyx_L1_error)
+  if (__Pyx_SetVtable(LxmlElementTagMatcherType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementTagMatcher) < 0) __PYX_ERR(0, 2585, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTagMatcher, (PyObject *)&LxmlElementTagMatcherType) < 0) __PYX_ERR(0, 2585, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ElementTagMatcher = &LxmlElementTagMatcherType;
   __pyx_vtabptr_4lxml_5etree__ElementIterator = &__pyx_vtable_4lxml_5etree__ElementIterator;
   __pyx_vtable_4lxml_5etree__ElementIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementTagMatcher;
   __pyx_vtable_4lxml_5etree__ElementIterator._storeNext = (void (*)(struct LxmlElementIterator *, struct LxmlElement *))__pyx_f_4lxml_5etree_16_ElementIterator__storeNext;
   LxmlElementIteratorType.tp_base = __pyx_ptype_4lxml_5etree__ElementTagMatcher;
-  if (PyType_Ready(&LxmlElementIteratorType) < 0) __PYX_ERR(0, 2605, __pyx_L1_error)
+  if (PyType_Ready(&LxmlElementIteratorType) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
   LxmlElementIteratorType.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!LxmlElementIteratorType.tp_dictoffset && LxmlElementIteratorType.tp_getattro == PyObject_GenericGetAttr)) {
     LxmlElementIteratorType.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(LxmlElementIteratorType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementIterator) < 0) __PYX_ERR(0, 2605, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementIterator, (PyObject *)&LxmlElementIteratorType) < 0) __PYX_ERR(0, 2605, __pyx_L1_error)
+  if (__Pyx_SetVtable(LxmlElementIteratorType.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementIterator) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementIterator, (PyObject *)&LxmlElementIteratorType) < 0) __PYX_ERR(0, 2616, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ElementIterator = &LxmlElementIteratorType;
   __pyx_vtabptr_4lxml_5etree__MultiTagMatcher = &__pyx_vtable_4lxml_5etree__MultiTagMatcher;
   __pyx_vtable_4lxml_5etree__MultiTagMatcher.rejectsAll = (int (*)(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *))__pyx_f_4lxml_5etree_16_MultiTagMatcher_rejectsAll;
@@ -231275,81 +231606,81 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_vtable_4lxml_5etree__MultiTagMatcher.matches = (int (*)(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, xmlNode *))__pyx_f_4lxml_5etree_16_MultiTagMatcher_matches;
   __pyx_vtable_4lxml_5etree__MultiTagMatcher.matchesNsTag = (int (*)(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, const xmlChar *, const xmlChar *))__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesNsTag;
   __pyx_vtable_4lxml_5etree__MultiTagMatcher.matchesAttribute = (int (*)(struct __pyx_obj_4lxml_5etree__MultiTagMatcher *, xmlAttr *))__pyx_f_4lxml_5etree_16_MultiTagMatcher_matchesAttribute;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__MultiTagMatcher) < 0) __PYX_ERR(0, 2642, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__MultiTagMatcher) < 0) __PYX_ERR(0, 2653, __pyx_L1_error)
   __pyx_type_4lxml_5etree__MultiTagMatcher.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__MultiTagMatcher.tp_dictoffset && __pyx_type_4lxml_5etree__MultiTagMatcher.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__MultiTagMatcher.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__MultiTagMatcher.tp_dict, __pyx_vtabptr_4lxml_5etree__MultiTagMatcher) < 0) __PYX_ERR(0, 2642, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__MultiTagMatcher.tp_dict, __pyx_vtabptr_4lxml_5etree__MultiTagMatcher) < 0) __PYX_ERR(0, 2653, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__MultiTagMatcher = &__pyx_type_4lxml_5etree__MultiTagMatcher;
   __pyx_vtabptr_4lxml_5etree__ElementMatchIterator = &__pyx_vtable_4lxml_5etree__ElementMatchIterator;
   __pyx_vtable_4lxml_5etree__ElementMatchIterator._initTagMatcher = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *, PyObject *))__pyx_f_4lxml_5etree_21_ElementMatchIterator__initTagMatcher;
   __pyx_vtable_4lxml_5etree__ElementMatchIterator._storeNext = (int (*)(struct __pyx_obj_4lxml_5etree__ElementMatchIterator *, struct LxmlElement *))__pyx_f_4lxml_5etree_21_ElementMatchIterator__storeNext;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2779, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2790, __pyx_L1_error)
   __pyx_type_4lxml_5etree__ElementMatchIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__ElementMatchIterator.tp_dictoffset && __pyx_type_4lxml_5etree__ElementMatchIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__ElementMatchIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ElementMatchIterator.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2779, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMatchIterator, (PyObject *)&__pyx_type_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2779, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__ElementMatchIterator.tp_dict, __pyx_vtabptr_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2790, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMatchIterator, (PyObject *)&__pyx_type_4lxml_5etree__ElementMatchIterator) < 0) __PYX_ERR(0, 2790, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__ElementMatchIterator = &__pyx_type_4lxml_5etree__ElementMatchIterator;
   __pyx_vtabptr_4lxml_5etree_ElementChildIterator = &__pyx_vtable_4lxml_5etree_ElementChildIterator;
   __pyx_vtable_4lxml_5etree_ElementChildIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementMatchIterator;
   __pyx_type_4lxml_5etree_ElementChildIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementMatchIterator;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2808, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2819, __pyx_L1_error)
   __pyx_type_4lxml_5etree_ElementChildIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_ElementChildIterator.tp_dictoffset && __pyx_type_4lxml_5etree_ElementChildIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_ElementChildIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementChildIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2808, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementChildIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2808, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementChildIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2819, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementChildIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementChildIterator) < 0) __PYX_ERR(0, 2819, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_ElementChildIterator = &__pyx_type_4lxml_5etree_ElementChildIterator;
   __pyx_vtabptr_4lxml_5etree_SiblingsIterator = &__pyx_vtable_4lxml_5etree_SiblingsIterator;
   __pyx_vtable_4lxml_5etree_SiblingsIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementMatchIterator;
   __pyx_type_4lxml_5etree_SiblingsIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementMatchIterator;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2828, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2839, __pyx_L1_error)
   __pyx_type_4lxml_5etree_SiblingsIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_SiblingsIterator.tp_dictoffset && __pyx_type_4lxml_5etree_SiblingsIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_SiblingsIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_SiblingsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2828, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SiblingsIterator, (PyObject *)&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2828, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_SiblingsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2839, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_SiblingsIterator, (PyObject *)&__pyx_type_4lxml_5etree_SiblingsIterator) < 0) __PYX_ERR(0, 2839, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_SiblingsIterator = &__pyx_type_4lxml_5etree_SiblingsIterator;
   __pyx_vtabptr_4lxml_5etree_AncestorsIterator = &__pyx_vtable_4lxml_5etree_AncestorsIterator;
   __pyx_vtable_4lxml_5etree_AncestorsIterator.__pyx_base = *__pyx_vtabptr_4lxml_5etree__ElementMatchIterator;
   __pyx_type_4lxml_5etree_AncestorsIterator.tp_base = __pyx_ptype_4lxml_5etree__ElementMatchIterator;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2843, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2854, __pyx_L1_error)
   __pyx_type_4lxml_5etree_AncestorsIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_AncestorsIterator.tp_dictoffset && __pyx_type_4lxml_5etree_AncestorsIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_AncestorsIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_AncestorsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2843, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AncestorsIterator, (PyObject *)&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2843, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_AncestorsIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2854, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_AncestorsIterator, (PyObject *)&__pyx_type_4lxml_5etree_AncestorsIterator) < 0) __PYX_ERR(0, 2854, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_AncestorsIterator = &__pyx_type_4lxml_5etree_AncestorsIterator;
   __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator = &__pyx_vtable_4lxml_5etree_ElementDepthFirstIterator;
   __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeAnyTag = (xmlNode *(*)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeAnyTag;
   __pyx_vtable_4lxml_5etree_ElementDepthFirstIterator._nextNodeMatchTag = (xmlNode *(*)(struct __pyx_obj_4lxml_5etree_ElementDepthFirstIterator *, xmlNode *))__pyx_f_4lxml_5etree_25ElementDepthFirstIterator__nextNodeMatchTag;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2853, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2864, __pyx_L1_error)
   __pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_dictoffset && __pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2853, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementDepthFirstIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2853, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree_ElementDepthFirstIterator.tp_dict, __pyx_vtabptr_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2864, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementDepthFirstIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementDepthFirstIterator) < 0) __PYX_ERR(0, 2864, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_ElementDepthFirstIterator = &__pyx_type_4lxml_5etree_ElementDepthFirstIterator;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) __PYX_ERR(0, 2929, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) __PYX_ERR(0, 2940, __pyx_L1_error)
   __pyx_type_4lxml_5etree_ElementTextIterator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_ElementTextIterator.tp_dictoffset && __pyx_type_4lxml_5etree_ElementTextIterator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_ElementTextIterator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTextIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) __PYX_ERR(0, 2929, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementTextIterator, (PyObject *)&__pyx_type_4lxml_5etree_ElementTextIterator) < 0) __PYX_ERR(0, 2940, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_ElementTextIterator = &__pyx_type_4lxml_5etree_ElementTextIterator;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_CDATA) < 0) __PYX_ERR(0, 3055, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_CDATA) < 0) __PYX_ERR(0, 3066, __pyx_L1_error)
   __pyx_type_4lxml_5etree_CDATA.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_CDATA.tp_dictoffset && __pyx_type_4lxml_5etree_CDATA.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_CDATA.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CDATA, (PyObject *)&__pyx_type_4lxml_5etree_CDATA) < 0) __PYX_ERR(0, 3055, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_CDATA, (PyObject *)&__pyx_type_4lxml_5etree_CDATA) < 0) __PYX_ERR(0, 3066, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_CDATA = &__pyx_type_4lxml_5etree_CDATA;
   __pyx_vtabptr_4lxml_5etree__ReadOnlyProxy = &__pyx_vtable_4lxml_5etree__ReadOnlyProxy;
   __pyx_vtable_4lxml_5etree__ReadOnlyProxy._assertNode = (int (*)(struct __pyx_obj_4lxml_5etree__ReadOnlyProxy *))__pyx_f_4lxml_5etree_14_ReadOnlyProxy__assertNode;
@@ -232392,23 +232723,23 @@ static int __Pyx_modinit_type_init_code(void) {
   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_XSLTExtension, (PyObject *)&__pyx_type_4lxml_5etree_XSLTExtension) < 0) __PYX_ERR(19, 3, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_XSLTExtension = &__pyx_type_4lxml_5etree_XSLTExtension;
   __pyx_type_4lxml_5etree_DocumentInvalid.tp_base = __pyx_ptype_4lxml_5etree_LxmlError;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree_DocumentInvalid) < 0) __PYX_ERR(0, 3497, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree_DocumentInvalid) < 0) __PYX_ERR(0, 3508, __pyx_L1_error)
   __pyx_type_4lxml_5etree_DocumentInvalid.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree_DocumentInvalid.tp_dictoffset && __pyx_type_4lxml_5etree_DocumentInvalid.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree_DocumentInvalid.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DocumentInvalid, (PyObject *)&__pyx_type_4lxml_5etree_DocumentInvalid) < 0) __PYX_ERR(0, 3497, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_DocumentInvalid, (PyObject *)&__pyx_type_4lxml_5etree_DocumentInvalid) < 0) __PYX_ERR(0, 3508, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree_DocumentInvalid = &__pyx_type_4lxml_5etree_DocumentInvalid;
   __pyx_vtabptr_4lxml_5etree__Validator = &__pyx_vtable_4lxml_5etree__Validator;
   __pyx_vtable_4lxml_5etree__Validator._append_log_message = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__Validator *, int, int, int, int, PyObject *, PyObject *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10_Validator__append_log_message;
   __pyx_vtable_4lxml_5etree__Validator._clear_error_log = (PyObject *(*)(struct __pyx_obj_4lxml_5etree__Validator *, int __pyx_skip_dispatch))__pyx_f_4lxml_5etree_10_Validator__clear_error_log;
-  if (PyType_Ready(&__pyx_type_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3505, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3516, __pyx_L1_error)
   __pyx_type_4lxml_5etree__Validator.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_5etree__Validator.tp_dictoffset && __pyx_type_4lxml_5etree__Validator.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_5etree__Validator.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Validator.tp_dict, __pyx_vtabptr_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3505, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Validator, (PyObject *)&__pyx_type_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3505, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_5etree__Validator.tp_dict, __pyx_vtabptr_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3516, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_Validator, (PyObject *)&__pyx_type_4lxml_5etree__Validator) < 0) __PYX_ERR(0, 3516, __pyx_L1_error)
   __pyx_ptype_4lxml_5etree__Validator = &__pyx_type_4lxml_5etree__Validator;
   __pyx_type_4lxml_5etree_DTDError.tp_base = __pyx_ptype_4lxml_5etree_LxmlError;
   if (PyType_Ready(&__pyx_type_4lxml_5etree_DTDError) < 0) __PYX_ERR(20, 4, __pyx_L1_error)
@@ -234285,352 +234616,352 @@ if (!__Pyx_RefNanny) {
   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;
 
-  /* "src/lxml/xmlerror.pxi":187
+  /* "src/lxml/xmlerror.pxi":191
  *         self.last_error = last_error
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         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__108)); if (unlikely(!__pyx_t_7)) __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__108)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 191, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 191, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":193
+  /* "src/lxml/xmlerror.pxi":197
  *         return u''
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         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__110)); if (unlikely(!__pyx_t_7)) __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__110)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 197, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__BaseErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 197, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":283
+  /* "src/lxml/xmlerror.pxi":287
  *         self._entries = entries
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         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__112)); if (unlikely(!__pyx_t_7)) __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__112)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 287, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 287, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":321
+  /* "src/lxml/xmlerror.pxi":325
  *         return len(self._entries) > self._offset
  * 
  *     def filter_domains(self, domains):             # <<<<<<<<<<<<<<
  *         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__114)); if (unlikely(!__pyx_t_7)) __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__114)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 325, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_domains, __pyx_t_7) < 0) __PYX_ERR(1, 325, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":331
+  /* "src/lxml/xmlerror.pxi":335
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_types(self, types):             # <<<<<<<<<<<<<<
  *         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__116)); if (unlikely(!__pyx_t_7)) __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__116)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 335, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_types, __pyx_t_7) < 0) __PYX_ERR(1, 335, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":343
+  /* "src/lxml/xmlerror.pxi":347
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_levels(self, levels):             # <<<<<<<<<<<<<<
  *         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__118)); if (unlikely(!__pyx_t_7)) __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__118)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 347, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_levels, __pyx_t_7) < 0) __PYX_ERR(1, 347, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":355
+  /* "src/lxml/xmlerror.pxi":359
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_level(self, level):             # <<<<<<<<<<<<<<
  *         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__120)); if (unlikely(!__pyx_t_7)) __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__120)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 359, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_level, __pyx_t_7) < 0) __PYX_ERR(1, 359, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":364
+  /* "src/lxml/xmlerror.pxi":368
  *         return _ListErrorLog(filtered, None, None)
  * 
  *     def filter_from_fatals(self):             # <<<<<<<<<<<<<<
  *         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__122)); if (unlikely(!__pyx_t_7)) __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__122)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 368, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_fatals, __pyx_t_7) < 0) __PYX_ERR(1, 368, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":371
+  /* "src/lxml/xmlerror.pxi":375
  *         return self.filter_from_level(ErrorLevels.FATAL)
  * 
  *     def filter_from_errors(self):             # <<<<<<<<<<<<<<
  *         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__124)); if (unlikely(!__pyx_t_7)) __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__124)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 375, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_errors, __pyx_t_7) < 0) __PYX_ERR(1, 375, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":378
+  /* "src/lxml/xmlerror.pxi":382
  *         return self.filter_from_level(ErrorLevels.ERROR)
  * 
  *     def filter_from_warnings(self):             # <<<<<<<<<<<<<<
  *         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__126)); if (unlikely(!__pyx_t_7)) __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__126)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 382, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ListErrorLog->tp_dict, __pyx_n_s_filter_from_warnings, __pyx_t_7) < 0) __PYX_ERR(1, 382, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ListErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":437
+  /* "src/lxml/xmlerror.pxi":441
  *         return self.connect()
  * 
  *     def __exit__(self, *args):             # <<<<<<<<<<<<<<
  *         #  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__128)); if (unlikely(!__pyx_t_7)) __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__128)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 441, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_exit, __pyx_t_7) < 0) __PYX_ERR(1, 441, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":457
+  /* "src/lxml/xmlerror.pxi":461
  *         return 0
  * 
  *     cpdef clear(self):             # <<<<<<<<<<<<<<
  *         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__130)); if (unlikely(!__pyx_t_7)) __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__130)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 461, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_clear, __pyx_t_7) < 0) __PYX_ERR(1, 461, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":463
+  /* "src/lxml/xmlerror.pxi":467
  *         del self._entries[:]
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         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__132)); if (unlikely(!__pyx_t_7)) __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__132)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 467, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 467, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":473
+  /* "src/lxml/xmlerror.pxi":477
  *         return iter(self._entries[self._offset:])
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         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__134)); if (unlikely(!__pyx_t_7)) __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__134)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 477, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 477, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":483
+  /* "src/lxml/xmlerror.pxi":487
  *         self._accepted_domains = tuple(domains)
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         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__136)); if (unlikely(!__pyx_t_7)) __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__136)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 487, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__DomainErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 487, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__DomainErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":493
+  /* "src/lxml/xmlerror.pxi":497
  *         self._max_len = max_len
  * 
  *     cpdef receive(self, _LogEntry entry):             # <<<<<<<<<<<<<<
  *         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__138)); if (unlikely(!__pyx_t_7)) __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__138)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 497, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 497, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__RotatingErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":544
+  /* "src/lxml/xmlerror.pxi":548
  *         self._log = logger.log
  * 
  *     cpdef copy(self):             # <<<<<<<<<<<<<<
  *         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__140)); if (unlikely(!__pyx_t_7)) __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__140)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 548, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_copy, __pyx_t_7) < 0) __PYX_ERR(1, 548, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_PyErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":549
+  /* "src/lxml/xmlerror.pxi":553
  *         return _ListErrorLog([], None, None)
  * 
  *     def log(self, log_entry, message, *args):             # <<<<<<<<<<<<<<
  *         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__142)); if (unlikely(!__pyx_t_7)) __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__142)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 553, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_log, __pyx_t_7) < 0) __PYX_ERR(1, 553, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_PyErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":566
+  /* "src/lxml/xmlerror.pxi":570
  *             )
  * 
  *     cpdef receive(self, _LogEntry log_entry):             # <<<<<<<<<<<<<<
  *         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__144)); if (unlikely(!__pyx_t_7)) __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__144)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 570, __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)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree_PyErrorLog->tp_dict, __pyx_n_s_receive, __pyx_t_7) < 0) __PYX_ERR(1, 570, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_PyErrorLog);
 
-  /* "src/lxml/xmlerror.pxi":582
+  /* "src/lxml/xmlerror.pxi":586
  * # libxml2/libxslt
  * 
  * cdef _BaseErrorLog __GLOBAL_ERROR_LOG = _RotatingErrorLog(__MAX_LOG_SIZE)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 582, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_5etree__RotatingErrorLog), __pyx_tuple__19, NULL); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 586, __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));
   __Pyx_GIVEREF(__pyx_t_7);
   __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":616
+  /* "src/lxml/xmlerror.pxi":620
  * 
  * 
  * def use_global_python_log(PyErrorLog log not None):             # <<<<<<<<<<<<<<
  *     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__146)); if (unlikely(!__pyx_t_7)) __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__146)); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 620, __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)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_use_global_python_log, __pyx_t_7) < 0) __PYX_ERR(1, 620, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":804
+  /* "src/lxml/xmlerror.pxi":808
  * 
  * 
  * class ErrorLevels(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error levels"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__147); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 804, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__147); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 808, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__147, __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__147, __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, 808, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorLevels, __pyx_tuple__147, __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__147, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 808, __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)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorLevels, __pyx_t_1) < 0) __PYX_ERR(1, 808, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":807
+  /* "src/lxml/xmlerror.pxi":811
  *     u"Libxml2 error levels"
  * 
  * class ErrorDomains(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error domains"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__148); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 807, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__148); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 811, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__148, __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__148, __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, 811, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorDomains, __pyx_tuple__148, __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__148, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 811, __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)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorDomains, __pyx_t_1) < 0) __PYX_ERR(1, 811, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":810
+  /* "src/lxml/xmlerror.pxi":814
  *     u"Libxml2 error domains"
  * 
  * class ErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 error types"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__149); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 810, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__149); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 814, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__149, __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__149, __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, 814, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_ErrorTypes, __pyx_tuple__149, __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__149, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 814, __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)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ErrorTypes, __pyx_t_1) < 0) __PYX_ERR(1, 814, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":813
+  /* "src/lxml/xmlerror.pxi":817
  *     u"Libxml2 error types"
  * 
  * class RelaxNGErrorTypes(object):             # <<<<<<<<<<<<<<
  *     u"Libxml2 RelaxNG error types"
  * 
  */
-  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__150); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 813, __pyx_L1_error)
+  __pyx_t_7 = __Pyx_CalculateMetaclass(NULL, __pyx_tuple__150); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
-  __pyx_t_2 = __Pyx_Py3MetaclassPrepare(__pyx_t_7, __pyx_tuple__150, __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__150, __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, 817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_Py3ClassCreate(__pyx_t_7, __pyx_n_s_RelaxNGErrorTypes, __pyx_tuple__150, __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__150, __pyx_t_2, NULL, 0, 1); if (unlikely(!__pyx_t_1)) __PYX_ERR(1, 817, __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)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_RelaxNGErrorTypes, __pyx_t_1) < 0) __PYX_ERR(1, 817, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-  /* "src/lxml/xmlerror.pxi":820
+  /* "src/lxml/xmlerror.pxi":824
  * # This section is generated by the script 'update-error-constants.py'.
  * 
  * cdef object __ERROR_LEVELS = """\             # <<<<<<<<<<<<<<
@@ -234642,7 +234973,7 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_LEVELS, __pyx_kp_s_NONE_0_WARNING_1_ERROR_2_FATAL_3);
   __Pyx_GIVEREF(__pyx_kp_s_NONE_0_WARNING_1_ERROR_2_FATAL_3);
 
-  /* "src/lxml/xmlerror.pxi":827
+  /* "src/lxml/xmlerror.pxi":831
  * """
  * 
  * cdef object __ERROR_DOMAINS = """\             # <<<<<<<<<<<<<<
@@ -234654,7 +234985,7 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___ERROR_DOMAINS, __pyx_kp_s_NONE_0_PARSER_1_TREE_2_NAMESPACE);
   __Pyx_GIVEREF(__pyx_kp_s_NONE_0_PARSER_1_TREE_2_NAMESPACE);
 
-  /* "src/lxml/xmlerror.pxi":861
+  /* "src/lxml/xmlerror.pxi":865
  * """
  * 
  * cdef object __PARSER_ERROR_TYPES = """\             # <<<<<<<<<<<<<<
@@ -234666,7 +234997,7 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___PARSER_ERROR_TYPES, __pyx_kp_s_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER);
   __Pyx_GIVEREF(__pyx_kp_s_ERR_OK_0_ERR_INTERNAL_ERROR_1_ER);
 
-  /* "src/lxml/xmlerror.pxi":1598
+  /* "src/lxml/xmlerror.pxi":1602
  * """
  * 
  * cdef object __RELAXNG_ERROR_TYPES = """\             # <<<<<<<<<<<<<<
@@ -234678,12 +235009,12 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_5etree___RELAXNG_ERROR_TYPES, __pyx_kp_s_RELAXNG_OK_0_RELAXNG_ERR_MEMORY);
   __Pyx_GIVEREF(__pyx_kp_s_RELAXNG_OK_0_RELAXNG_ERR_MEMORY);
 
-  /* "src/lxml/xmlerror.pxi":1642
+  /* "src/lxml/xmlerror.pxi":1646
  * # --- END: GENERATED CONSTANTS ---
  * 
  * __initErrorConstants()             # <<<<<<<<<<<<<<
  */
-  __pyx_t_7 = __pyx_f_4lxml_5etree___initErrorConstants(); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1642, __pyx_L1_error)
+  __pyx_t_7 = __pyx_f_4lxml_5etree___initErrorConstants(); if (unlikely(!__pyx_t_7)) __PYX_ERR(1, 1646, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_7);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
@@ -235041,304 +235372,304 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1394
+  /* "lxml/etree.pyx":1399
  *         return SiblingsIterator(self, tags, preceding=preceding)
  * 
  *     def iterancestors(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__201)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1394, __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__201)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1399, __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, 1394, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterancestors, __pyx_t_7) < 0) __PYX_ERR(0, 1399, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1406
+  /* "lxml/etree.pyx":1413
  *         return AncestorsIterator(self, tags)
  * 
  *     def iterdescendants(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__203)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1406, __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__203)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1413, __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, 1406, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterdescendants, __pyx_t_7) < 0) __PYX_ERR(0, 1413, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1419
+  /* "lxml/etree.pyx":1428
  *         return ElementDepthFirstIterator(self, tags, inclusive=False)
  * 
  *     def iterchildren(self, tag=None, *tags, reversed=False):             # <<<<<<<<<<<<<<
  *         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__205)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1419, __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__205)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1428, __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, 1419, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterchildren, __pyx_t_7) < 0) __PYX_ERR(0, 1428, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1432
+  /* "lxml/etree.pyx":1443
  *         return ElementChildIterator(self, tags, reversed=reversed)
  * 
  *     def getroottree(self):             # <<<<<<<<<<<<<<
  *         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__207)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1432, __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__207)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1443, __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, 1432, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getroottree, __pyx_t_7) < 0) __PYX_ERR(0, 1443, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1444
+  /* "lxml/etree.pyx":1455
  *         return _elementTreeFactory(self._doc, None)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__209)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1444, __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__209)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1455, __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, 1444, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_getiterator, __pyx_t_7) < 0) __PYX_ERR(0, 1455, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1466
+  /* "lxml/etree.pyx":1477
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__211)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1466, __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__211)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1477, __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, 1466, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iter, __pyx_t_7) < 0) __PYX_ERR(0, 1477, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1490
+  /* "lxml/etree.pyx":1501
  *         return ElementDepthFirstIterator(self, tags)
  * 
  *     def itertext(self, tag=None, *tags, with_tail=True):             # <<<<<<<<<<<<<<
  *         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__213)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1490, __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__213)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1501, __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, 1490, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_itertext, __pyx_t_7) < 0) __PYX_ERR(0, 1501, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1505
+  /* "lxml/etree.pyx":1516
  *         return ElementTextIterator(self, tags, with_tail=with_tail)
  * 
  *     def makeelement(self, _tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *         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__215)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1505, __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__215)); 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_makeelement, __pyx_t_7) < 0) __PYX_ERR(0, 1505, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_makeelement, __pyx_t_7) < 0) __PYX_ERR(0, 1516, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1514
+  /* "lxml/etree.pyx":1525
  *                             attrib, nsmap, _extra)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__217)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1514, __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__217)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1525, __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, 1514, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_find, __pyx_t_7) < 0) __PYX_ERR(0, 1525, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1527
+  /* "lxml/etree.pyx":1538
  *         return _elementpath.find(self, path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__219)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1527, __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__219)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1538, __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, 1527, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_findtext, __pyx_t_7) < 0) __PYX_ERR(0, 1538, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1540
+  /* "lxml/etree.pyx":1551
  *         return _elementpath.findtext(self, path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__221)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1540, __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__221)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1551, __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, 1540, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_findall, __pyx_t_7) < 0) __PYX_ERR(0, 1551, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1553
+  /* "lxml/etree.pyx":1564
  *         return _elementpath.findall(self, path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__223)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1553, __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__223)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1564, __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, 1553, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_iterfind, __pyx_t_7) < 0) __PYX_ERR(0, 1564, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1566
+  /* "lxml/etree.pyx":1577
  *         return _elementpath.iterfind(self, path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
  *               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__225)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1566, __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__225)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1577, __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, 1566, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_xpath, __pyx_t_7) < 0) __PYX_ERR(0, 1577, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1577
+  /* "lxml/etree.pyx":1588
  *         return evaluator(_path, **_variables)
  * 
  *     def cssselect(self, expr, *, translator='xml'):             # <<<<<<<<<<<<<<
  *         """
  *         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__227)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1577, __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__227)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1588, __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, 1577, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Element->tp_dict, __pyx_n_s_cssselect, __pyx_t_7) < 0) __PYX_ERR(0, 1588, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Element);
 
-  /* "lxml/etree.pyx":1627
+  /* "lxml/etree.pyx":1638
  *         raise TypeError, u"this element does not have children or attributes"
  * 
  *     def set(self, key, value):             # <<<<<<<<<<<<<<
  *         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__229)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1627, __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__229)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1638, __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, 1627, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_set, __pyx_t_7) < 0) __PYX_ERR(0, 1638, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1631
+  /* "lxml/etree.pyx":1642
  *         self._raiseImmutable()
  * 
  *     def append(self, value):             # <<<<<<<<<<<<<<
  *         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__231)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1631, __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__231)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1642, __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, 1631, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_append, __pyx_t_7) < 0) __PYX_ERR(0, 1642, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1635
+  /* "lxml/etree.pyx":1646
  *         self._raiseImmutable()
  * 
  *     def insert(self, index, value):             # <<<<<<<<<<<<<<
  *         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__233)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1635, __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__233)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1646, __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, 1635, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_insert, __pyx_t_7) < 0) __PYX_ERR(0, 1646, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1674
+  /* "lxml/etree.pyx":1685
  *         return 0
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         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__235)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1674, __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__235)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1685, __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, 1674, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 1685, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1678
+  /* "lxml/etree.pyx":1689
  *         return None
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
  *         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__237)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1678, __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__237)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1689, __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, 1678, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_keys, __pyx_t_7) < 0) __PYX_ERR(0, 1689, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1682
+  /* "lxml/etree.pyx":1693
  *         return []
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
  *         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__239)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1682, __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__239)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1693, __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, 1682, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_items, __pyx_t_7) < 0) __PYX_ERR(0, 1693, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1686
+  /* "lxml/etree.pyx":1697
  *         return []
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
  *         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__241)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1686, __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__241)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1697, __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, 1686, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree___ContentOnlyElement->tp_dict, __pyx_n_s_values, __pyx_t_7) < 0) __PYX_ERR(0, 1697, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree___ContentOnlyElement);
 
-  /* "lxml/etree.pyx":1723
+  /* "lxml/etree.pyx":1734
  *             return "<?%s?>" % strrepr(self.target)
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         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__243)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1723, __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__243)); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1734, __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, 1723, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ProcessingInstruction->tp_dict, __pyx_n_s_get, __pyx_t_7) < 0) __PYX_ERR(0, 1734, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ProcessingInstruction);
 
-  /* "lxml/etree.pyx":1747
- *                      for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+  /* "lxml/etree.pyx":1758
+ *                  for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
  * 
  * cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall             # <<<<<<<<<<<<<<
  * 
  * cdef class _Entity(__ContentOnlyElement):
  */
-  __pyx_t_7 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_compile); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1747, __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, 1758, __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, 1747, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_5etree_re, __pyx_n_s_U); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1747, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1758, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_kp_u_s_w_s_s);
   __Pyx_GIVEREF(__pyx_kp_u_s_w_s_s);
@@ -235346,11 +235677,11 @@ if (!__Pyx_RefNanny) {
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1747, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_7, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1758, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_findall); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1747, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_t_2, __pyx_n_s_findall); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1758, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_XGOTREF(__pyx_v_4lxml_5etree__FIND_PI_ATTRIBUTES);
@@ -235358,775 +235689,775 @@ if (!__Pyx_RefNanny) {
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":1867
+  /* "lxml/etree.pyx":1878
  *         return 0
  * 
  *     def parse(self, source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *         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__245)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1867, __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__245)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1878, __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, 1867, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_parse, __pyx_t_1) < 0) __PYX_ERR(0, 1878, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":1883
+  /* "lxml/etree.pyx":1894
  *         return self._context_node
  * 
  *     def _setroot(self, _Element root not None):             # <<<<<<<<<<<<<<
  *         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__247)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1883, __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__247)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __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, 1883, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_setroot, __pyx_t_1) < 0) __PYX_ERR(0, 1894, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":1894
+  /* "lxml/etree.pyx":1905
  *         self._doc = None
  * 
  *     def getroot(self):             # <<<<<<<<<<<<<<
  *         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__249)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1894, __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__249)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1905, __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, 1894, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getroot, __pyx_t_1) < 0) __PYX_ERR(0, 1905, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":1901
+  /* "lxml/etree.pyx":1912
  *         return self._context_node
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
  *         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__251)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1901, __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__251)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1912, __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, 1901, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_copy_2, __pyx_t_1) < 0) __PYX_ERR(0, 1912, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":1904
+  /* "lxml/etree.pyx":1915
  *         return _elementTreeFactory(self._doc, self._context_node)
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
  *         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__253)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1904, __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__253)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1915, __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, 1904, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(0, 1915, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":1944
- *             return None
+  /* "lxml/etree.pyx":1955
+ *         return None
  * 
  *     def write(self, file, *, encoding=None, method=u"xml",             # <<<<<<<<<<<<<<
  *               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__255)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1944, __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__255)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1955, __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, 1944, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_write, __pyx_t_1) < 0) __PYX_ERR(0, 1955, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2041
+  /* "lxml/etree.pyx":2052
  *                     is_standalone, compression)
  * 
  *     def getpath(self, _Element element not None):             # <<<<<<<<<<<<<<
  *         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__257)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2041, __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__257)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2052, __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, 2041, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getpath, __pyx_t_1) < 0) __PYX_ERR(0, 2052, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2079
+  /* "lxml/etree.pyx":2090
  *         return path
  * 
  *     def getelementpath(self, _Element element not None):             # <<<<<<<<<<<<<<
  *         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__259)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2079, __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__259)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2090, __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, 2079, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getelementpath, __pyx_t_1) < 0) __PYX_ERR(0, 2090, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2143
+  /* "lxml/etree.pyx":2154
  *         return '/'.join(path)
  * 
  *     def getiterator(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__261)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2143, __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__261)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2154, __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, 2143, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_getiterator, __pyx_t_1) < 0) __PYX_ERR(0, 2154, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2167
+  /* "lxml/etree.pyx":2178
  *         return root.getiterator(*tags)
  * 
  *     def iter(self, tag=None, *tags):             # <<<<<<<<<<<<<<
  *         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__263)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2167, __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__263)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2178, __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, 2167, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_iter, __pyx_t_1) < 0) __PYX_ERR(0, 2178, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2185
+  /* "lxml/etree.pyx":2196
  *         return root.iter(*tags)
  * 
  *     def find(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__265)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2185, __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__265)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2196, __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, 2185, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_find, __pyx_t_1) < 0) __PYX_ERR(0, 2196, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2202
+  /* "lxml/etree.pyx":2213
  *         return root.find(path, namespaces)
  * 
  *     def findtext(self, path, default=None, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__267)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2202, __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__267)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2213, __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, 2202, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_findtext, __pyx_t_1) < 0) __PYX_ERR(0, 2213, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2219
+  /* "lxml/etree.pyx":2230
  *         return root.findtext(path, default, namespaces)
  * 
  *     def findall(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__269)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2219, __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__269)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2230, __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, 2219, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_findall, __pyx_t_1) < 0) __PYX_ERR(0, 2230, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2236
+  /* "lxml/etree.pyx":2247
  *         return root.findall(path, namespaces)
  * 
  *     def iterfind(self, path, namespaces=None):             # <<<<<<<<<<<<<<
  *         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__271)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2236, __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__271)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2247, __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, 2236, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_iterfind, __pyx_t_1) < 0) __PYX_ERR(0, 2247, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2253
+  /* "lxml/etree.pyx":2264
  *         return root.iterfind(path, namespaces)
  * 
  *     def xpath(self, _path, *, namespaces=None, extensions=None,             # <<<<<<<<<<<<<<
  *               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__273)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2253, __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__273)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2264, __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, 2253, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xpath, __pyx_t_1) < 0) __PYX_ERR(0, 2264, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2278
+  /* "lxml/etree.pyx":2289
  *         return evaluator(_path, **_variables)
  * 
  *     def xslt(self, _xslt, extensions=None, access_control=None, **_kw):             # <<<<<<<<<<<<<<
  *         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__275)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2278, __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__275)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2289, __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, 2278, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xslt_3, __pyx_t_1) < 0) __PYX_ERR(0, 2289, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2297
+  /* "lxml/etree.pyx":2308
  *         return style(self, **_kw)
  * 
  *     def relaxng(self, relaxng):             # <<<<<<<<<<<<<<
  *         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__277)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2297, __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__277)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2308, __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, 2297, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_relaxng, __pyx_t_1) < 0) __PYX_ERR(0, 2308, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2315
+  /* "lxml/etree.pyx":2326
  *         return schema.validate(self)
  * 
  *     def xmlschema(self, xmlschema):             # <<<<<<<<<<<<<<
  *         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__279)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2315, __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__279)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2326, __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, 2315, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xmlschema, __pyx_t_1) < 0) __PYX_ERR(0, 2326, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2333
+  /* "lxml/etree.pyx":2344
  *         return schema.validate(self)
  * 
  *     def xinclude(self):             # <<<<<<<<<<<<<<
  *         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__281)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2333, __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__281)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2344, __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, 2333, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_xinclude, __pyx_t_1) < 0) __PYX_ERR(0, 2344, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2348
+  /* "lxml/etree.pyx":2359
  *         XInclude()(self._context_node)
  * 
  *     def write_c14n(self, file, *, exclusive=False, with_comments=True,             # <<<<<<<<<<<<<<
  *                    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__283)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2348, __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__283)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2359, __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, 2348, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__ElementTree->tp_dict, __pyx_n_s_write_c14n, __pyx_t_1) < 0) __PYX_ERR(0, 2359, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__ElementTree);
 
-  /* "lxml/etree.pyx":2412
+  /* "lxml/etree.pyx":2423
  *         _delAttribute(self._element, key)
  * 
  *     def update(self, sequence_or_dict):             # <<<<<<<<<<<<<<
  *         _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__285)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2412, __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__285)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2423, __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, 2412, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_update, __pyx_t_1) < 0) __PYX_ERR(0, 2423, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2419
+  /* "lxml/etree.pyx":2430
  *             _setAttributeValue(self._element, key, value)
  * 
  *     def pop(self, key, *default):             # <<<<<<<<<<<<<<
  *         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__287)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2419, __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__287)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2430, __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, 2419, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_pop, __pyx_t_1) < 0) __PYX_ERR(0, 2430, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2432
+  /* "lxml/etree.pyx":2443
  *         return result
  * 
  *     def clear(self):             # <<<<<<<<<<<<<<
  *         _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__289)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2432, __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__289)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __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, 2432, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_clear, __pyx_t_1) < 0) __PYX_ERR(0, 2443, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2443
+  /* "lxml/etree.pyx":2454
  *         return repr(dict( _collectAttributes(self._element._c_node, 3) ))
  * 
  *     def __copy__(self):             # <<<<<<<<<<<<<<
  *         _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__291)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2443, __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__291)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2454, __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, 2443, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_copy_2, __pyx_t_1) < 0) __PYX_ERR(0, 2454, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2447
+  /* "lxml/etree.pyx":2458
  *         return dict(_collectAttributes(self._element._c_node, 3))
  * 
  *     def __deepcopy__(self, memo):             # <<<<<<<<<<<<<<
  *         _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__293)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2447, __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__293)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2458, __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, 2447, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_deepcopy, __pyx_t_1) < 0) __PYX_ERR(0, 2458, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2477
+  /* "lxml/etree.pyx":2488
  *         return c
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         _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__295)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2477, __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__295)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2488, __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, 2477, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_get, __pyx_t_1) < 0) __PYX_ERR(0, 2488, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2481
+  /* "lxml/etree.pyx":2492
  *         return _getAttributeValue(self._element, key, default)
  * 
  *     def keys(self):             # <<<<<<<<<<<<<<
  *         _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__297)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2481, __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__297)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2492, __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, 2481, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_keys, __pyx_t_1) < 0) __PYX_ERR(0, 2492, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2489
+  /* "lxml/etree.pyx":2500
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def iterkeys(self):             # <<<<<<<<<<<<<<
  *         _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__299)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2489, __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__299)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2500, __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, 2489, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_iterkeys, __pyx_t_1) < 0) __PYX_ERR(0, 2500, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2493
+  /* "lxml/etree.pyx":2504
  *         return iter(_collectAttributes(self._element._c_node, 1))
  * 
  *     def values(self):             # <<<<<<<<<<<<<<
  *         _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__301)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2493, __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__301)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2504, __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, 2493, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_values, __pyx_t_1) < 0) __PYX_ERR(0, 2504, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2497
+  /* "lxml/etree.pyx":2508
  *         return _collectAttributes(self._element._c_node, 2)
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _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__303)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2497, __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__303)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2508, __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, 2497, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_itervalues, __pyx_t_1) < 0) __PYX_ERR(0, 2508, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2501
+  /* "lxml/etree.pyx":2512
  *         return iter(_collectAttributes(self._element._c_node, 2))
  * 
  *     def items(self):             # <<<<<<<<<<<<<<
  *         _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__305)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2501, __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__305)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2512, __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, 2501, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_items, __pyx_t_1) < 0) __PYX_ERR(0, 2512, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2505
+  /* "lxml/etree.pyx":2516
  *         return _collectAttributes(self._element._c_node, 3)
  * 
  *     def iteritems(self):             # <<<<<<<<<<<<<<
  *         _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__307)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2505, __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__307)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2516, __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, 2505, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_iteritems, __pyx_t_1) < 0) __PYX_ERR(0, 2516, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2509
+  /* "lxml/etree.pyx":2520
  *         return iter(_collectAttributes(self._element._c_node, 3))
  * 
  *     def has_key(self, key):             # <<<<<<<<<<<<<<
  *         _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__309)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2509, __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__309)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2520, __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, 2509, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Attrib->tp_dict, __pyx_n_s_has_key, __pyx_t_1) < 0) __PYX_ERR(0, 2520, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Attrib);
 
-  /* "lxml/etree.pyx":2986
+  /* "lxml/etree.pyx":2997
  * # module-level API for ElementTree
  * 
  * def Element(_tag, attrib=None, nsmap=None, **_extra):             # <<<<<<<<<<<<<<
  *     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__311)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2986, __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__311)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 2997, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__312);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 2986, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 2997, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3000
+  /* "lxml/etree.pyx":3011
  * 
  * 
  * def Comment(text=None):             # <<<<<<<<<<<<<<
  *     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__314)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3000, __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__314)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__315);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Comment, __pyx_t_1) < 0) __PYX_ERR(0, 3000, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Comment, __pyx_t_1) < 0) __PYX_ERR(0, 3011, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3024
+  /* "lxml/etree.pyx":3035
  * 
  * 
  * def ProcessingInstruction(target, text=None):             # <<<<<<<<<<<<<<
  *     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__317)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3024, __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__317)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__318);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ProcessingInstruction, __pyx_t_1) < 0) __PYX_ERR(0, 3024, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ProcessingInstruction, __pyx_t_1) < 0) __PYX_ERR(0, 3035, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3052
+  /* "lxml/etree.pyx":3063
  *     return _elementFactory(doc, c_node)
  * 
  * PI = ProcessingInstruction             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3052, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_ProcessingInstruction); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3063, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PI, __pyx_t_1) < 0) __PYX_ERR(0, 3052, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_PI, __pyx_t_1) < 0) __PYX_ERR(0, 3063, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3077
+  /* "lxml/etree.pyx":3088
  * 
  * 
  * def Entity(name):             # <<<<<<<<<<<<<<
  *     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__320)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3077, __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__320)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3088, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Entity, __pyx_t_1) < 0) __PYX_ERR(0, 3077, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Entity, __pyx_t_1) < 0) __PYX_ERR(0, 3088, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3103
+  /* "lxml/etree.pyx":3114
  * 
  * 
  * def SubElement(_Element _parent not None, _tag,             # <<<<<<<<<<<<<<
  *                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__322)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3103, __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__322)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3114, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__323);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 3103, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 3114, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3113
+  /* "lxml/etree.pyx":3124
  * 
  * 
  * def ElementTree(_Element element=None, *, file=None, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     u"""ElementTree(element=None, file=None, parser=None)
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3113, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3124, __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, 3113, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_parser, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3113, __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__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3113, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_file, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3124, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_parser, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3124, __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__325)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3124, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__326);
   __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, 3113, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_ElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 3124, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3139
+  /* "lxml/etree.pyx":3150
  * 
  * 
  * def HTML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""HTML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3139, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3150, __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, 3139, __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__328)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3139, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3150, __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__328)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3150, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__329);
   __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, 3139, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_HTML, __pyx_t_1) < 0) __PYX_ERR(0, 3150, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3165
+  /* "lxml/etree.pyx":3176
  * 
  * 
  * def XML(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(text, parser=None, base_url=None)
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3165, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3176, __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, 3165, __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__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3165, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3176, __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__331)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3176, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__332);
   __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, 3165, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_2) < 0) __PYX_ERR(0, 3176, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3196
+  /* "lxml/etree.pyx":3207
  * 
  * 
  * def fromstring(text, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(text, parser=None, base_url=None)
  * 
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3196, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3207, __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, 3196, __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__334)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3196, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3207, __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__334)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3207, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__335);
   __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, 3196, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_1) < 0) __PYX_ERR(0, 3207, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3217
+  /* "lxml/etree.pyx":3228
  * 
  * 
  * def fromstringlist(strings, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     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__337)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3217, __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__337)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3228, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__338);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3217, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3228, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3238
+  /* "lxml/etree.pyx":3249
  * 
  * 
  * def iselement(element):             # <<<<<<<<<<<<<<
  *     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__340)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3238, __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__340)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3249, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_iselement, __pyx_t_1) < 0) __PYX_ERR(0, 3238, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_iselement, __pyx_t_1) < 0) __PYX_ERR(0, 3249, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3246
+  /* "lxml/etree.pyx":3257
  * 
  * 
  * def dump(_Element elem not None, *, bint pretty_print=True, with_tail=True):             # <<<<<<<<<<<<<<
  *     u"""dump(elem, pretty_print=True, with_tail=True)
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3246, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3246, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3257, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pretty_print, __pyx_t_2) < 0) __PYX_ERR(0, 3246, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pretty_print, __pyx_t_2) < 0) __PYX_ERR(0, 3257, __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, 3246, __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__342)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3246, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_with_tail, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 3257, __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__342)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3257, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 3246, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 3257, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3259
+  /* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3259, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(10); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3270, __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, 3259, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, ((PyObject*)__pyx_n_s_xml)) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xml_declaration, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_encoding, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_method, ((PyObject*)__pyx_n_s_xml)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xml_declaration, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3260
+  /* "lxml/etree.pyx":3271
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,             # <<<<<<<<<<<<<<
  *              standalone=None, doctype=None,
  *              bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None):
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3260, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3271, __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, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pretty_print, __pyx_t_1) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3260, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3271, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_tail, __pyx_t_1) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_tail, __pyx_t_1) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_standalone, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_doctype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_standalone, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_doctype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3262
+  /* "lxml/etree.pyx":3273
  *              xml_declaration=None, bint pretty_print=False, bint with_tail=True,
  *              standalone=None, doctype=None,
  *              bint exclusive=False, bint with_comments=True, inclusive_ns_prefixes=None):             # <<<<<<<<<<<<<<
  *     u"""tostring(element_or_tree, encoding=None, method="xml",
  *                  xml_declaration=None, pretty_print=False, with_tail=True,
  */
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __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, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_exclusive, __pyx_t_1) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3262, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3273, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_comments, __pyx_t_1) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_with_comments, __pyx_t_1) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_inclusive_ns_prefixes, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_inclusive_ns_prefixes, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3259
+  /* "lxml/etree.pyx":3270
  * 
  * 
  * def tostring(element_or_tree, *, encoding=None, method="xml",             # <<<<<<<<<<<<<<
  *              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__344)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3259, __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__344)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3270, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostring, __pyx_t_1) < 0) __PYX_ERR(0, 3259, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostring, __pyx_t_1) < 0) __PYX_ERR(0, 3270, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3352
+  /* "lxml/etree.pyx":3363
  * 
  * 
  * def tostringlist(element_or_tree, *args, **kwargs):             # <<<<<<<<<<<<<<
  *     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__346)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3352, __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__346)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3363, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3352, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tostringlist, __pyx_t_1) < 0) __PYX_ERR(0, 3363, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3364
+  /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
  *               bint with_tail=True, doctype=None):
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3364, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3375, __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, 3364, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_method, ((PyObject*)__pyx_n_u_xml)) < 0) __PYX_ERR(0, 3375, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3375, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pretty_print, __pyx_t_2) < 0) __PYX_ERR(0, 3364, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pretty_print, __pyx_t_2) < 0) __PYX_ERR(0, 3375, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3365
+  /* "lxml/etree.pyx":3376
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,
  *               bint with_tail=True, doctype=None):             # <<<<<<<<<<<<<<
  *     u"""tounicode(element_or_tree, method="xml", pretty_print=False,
  *                   with_tail=True, doctype=None)
  */
-  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3365, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3376, __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, 3364, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_with_tail, __pyx_t_2) < 0) __PYX_ERR(0, 3375, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_doctype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3364, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_doctype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3375, __pyx_L1_error)
 
-  /* "lxml/etree.pyx":3364
+  /* "lxml/etree.pyx":3375
  * 
  * 
  * def tounicode(element_or_tree, *, method=u"xml", bint pretty_print=False,             # <<<<<<<<<<<<<<
  *               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__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3364, __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__348)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3375, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tounicode, __pyx_t_2) < 0) __PYX_ERR(0, 3364, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_tounicode, __pyx_t_2) < 0) __PYX_ERR(0, 3375, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/etree.pyx":3398
+  /* "lxml/etree.pyx":3409
  * 
  * 
  * def parse(source, _BaseParser parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(source, parser=None, base_url=None)
  * 
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3398, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 3409, __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, 3398, __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__350)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3398, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 3409, __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__350)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3409, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__351);
   __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, 3398, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_1) < 0) __PYX_ERR(0, 3409, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/etree.pyx":3430
+  /* "lxml/etree.pyx":3441
  * 
  * 
  * def adopt_external_document(capsule, _BaseParser parser=None):             # <<<<<<<<<<<<<<
  *     """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__353)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3430, __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__353)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 3441, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__354);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_adopt_external_document, __pyx_t_1) < 0) __PYX_ERR(0, 3430, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_adopt_external_document, __pyx_t_1) < 0) __PYX_ERR(0, 3441, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
   /* "src/lxml/readonlytree.pxi":160
@@ -236221,7 +236552,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree__ReadOnlyProxy);
 
   /* "src/lxml/readonlytree.pxi":293
- *             return None
+ *         return None
  * 
  *     def get(self, key, default=None):             # <<<<<<<<<<<<<<
  *         u"""Gets an element attribute.
@@ -236839,7 +237170,7 @@ if (!__Pyx_RefNanny) {
   xmlSetExternalEntityLoader(((xmlExternalEntityLoader)__pyx_f_4lxml_5etree__local_resolver));
 
   /* "src/lxml/parser.pxi":961
- *             return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+ *         return u"libxml2 %d.%d.%d" % LIBXML_VERSION
  * 
  *     def setElementClassLookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
@@ -236891,7 +237222,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree__BaseParser);
 
   /* "src/lxml/parser.pxi":1242
- *             return self._getPushParserContext()._error_log.copy()
+ *         return self._getPushParserContext()._error_log.copy()
  * 
  *     cpdef feed(self, data):             # <<<<<<<<<<<<<<
  *         u"""feed(self, data)
@@ -237671,7 +238002,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree__MethodChanger);
 
   /* "src/lxml/iterparse.pxi":148
- *             return self._parser.version
+ *         return self._parser.version
  * 
  *     def set_element_class_lookup(self, ElementClassLookup lookup = None):             # <<<<<<<<<<<<<<
  *         u"""set_element_class_lookup(self, lookup = None)
@@ -238637,7 +238968,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree_XSLT);
 
   /* "src/lxml/xslt.pxi":435
- *             return self._error_log.copy()
+ *         return self._error_log.copy()
  * 
  *     @staticmethod             # <<<<<<<<<<<<<<
  *     def strparam(strval):
@@ -238899,73 +239230,73 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree_XSLTExtension);
 
-  /* "lxml/etree.pyx":3511
+  /* "lxml/etree.pyx":3522
  *         self._error_log = _ErrorLog()
  * 
  *     def validate(self, etree):             # <<<<<<<<<<<<<<
  *         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__609)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3511, __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__609)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3522, __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, 3511, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_validate, __pyx_t_15) < 0) __PYX_ERR(0, 3522, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Validator);
 
-  /* "lxml/etree.pyx":3520
+  /* "lxml/etree.pyx":3531
  *         return self(etree)
  * 
  *     def assertValid(self, etree):             # <<<<<<<<<<<<<<
  *         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__611)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3520, __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__611)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3531, __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, 3520, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_assertValid, __pyx_t_15) < 0) __PYX_ERR(0, 3531, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Validator);
 
-  /* "lxml/etree.pyx":3530
+  /* "lxml/etree.pyx":3541
  *                                   self._error_log)
  * 
  *     def assert_(self, etree):             # <<<<<<<<<<<<<<
  *         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__613)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3530, __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__613)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3541, __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, 3530, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_assert, __pyx_t_15) < 0) __PYX_ERR(0, 3541, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Validator);
 
-  /* "lxml/etree.pyx":3539
+  /* "lxml/etree.pyx":3550
  *                 u"Document does not comply with schema")
  * 
  *     cpdef _append_log_message(self, int domain, int type, int level, int line,             # <<<<<<<<<<<<<<
  *                               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__615)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3539, __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__615)); 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_append_log_message, __pyx_t_15) < 0) __PYX_ERR(0, 3539, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_append_log_message, __pyx_t_15) < 0) __PYX_ERR(0, 3550, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Validator);
 
-  /* "lxml/etree.pyx":3544
+  /* "lxml/etree.pyx":3555
  *                                         filename)
  * 
  *     cpdef _clear_error_log(self):             # <<<<<<<<<<<<<<
  *         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__617)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3544, __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__617)); if (unlikely(!__pyx_t_15)) __PYX_ERR(0, 3555, __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, 3544, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_5etree__Validator->tp_dict, __pyx_n_s_clear_error_log, __pyx_t_15) < 0) __PYX_ERR(0, 3555, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_15); __pyx_t_15 = 0;
   PyType_Modified(__pyx_ptype_4lxml_5etree__Validator);
 
   /* "src/lxml/dtd.pxi":163
- *            return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
+ *        return funicode(self._c_node.defaultValue) if self._c_node.defaultValue is not NULL else None
  * 
  *     def itervalues(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -238991,7 +239322,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree__DTDAttributeDecl);
 
   /* "src/lxml/dtd.pxi":223
- *                return None
+ *            return None
  * 
  *     def iterattributes(self):             # <<<<<<<<<<<<<<
  *         _assertValidDTDNode(self, self._c_node)
@@ -239017,7 +239348,7 @@ if (!__Pyx_RefNanny) {
   PyType_Modified(__pyx_ptype_4lxml_5etree__DTDElementDecl);
 
   /* "src/lxml/dtd.pxi":314
- *            return funicodeOrNone(self._c_dtd.SystemID)
+ *        return funicodeOrNone(self._c_dtd.SystemID)
  * 
  *     def iterelements(self):             # <<<<<<<<<<<<<<
  *         cdef tree.xmlNode *c_node = self._c_dtd.children if self._c_dtd is not NULL else NULL
@@ -239316,7 +239647,7 @@ if (!__Pyx_RefNanny) {
  */
   __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_3165, __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_XML_line_3176, __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;
@@ -241782,6 +242113,9 @@ done_or_error:
 #else
    #include <stdint.h>
 #endif
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define GCC_DIAGNOSTIC
+#endif
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlElementType(xmlElementType value, Py_ssize_t width, char padding_char, char format_char) {
     char digits[sizeof(xmlElementType)*3+2];
     char *dpos, *end = digits + sizeof(xmlElementType)*3+2;
@@ -241789,12 +242123,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlElementType(xmlElementTyp
     Py_ssize_t length, ulength;
     int prepend_sign, last_one_off;
     xmlElementType remaining;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wconversion"
 #endif
     const xmlElementType neg_one = (xmlElementType) -1, const_zero = (xmlElementType) 0;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic pop
 #endif
     const int is_unsigned = neg_one > const_zero;
@@ -242177,6 +242511,9 @@ static CYTHON_INLINE Py_ssize_t __Pyx_div_Py_ssize_t(Py_ssize_t a, Py_ssize_t b)
 #else
    #include <stdint.h>
 #endif
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define GCC_DIAGNOSTIC
+#endif
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) {
     char digits[sizeof(Py_ssize_t)*3+2];
     char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
@@ -242184,12 +242521,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     Py_ssize_t length, ulength;
     int prepend_sign, last_one_off;
     Py_ssize_t remaining;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wconversion"
 #endif
     const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic pop
 #endif
     const int is_unsigned = neg_one > const_zero;
@@ -242371,6 +242708,9 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_FormatAndDecref(PyObject* s, PyObj
 #else
    #include <stdint.h>
 #endif
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define GCC_DIAGNOSTIC
+#endif
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t width, char padding_char, char format_char) {
     char digits[sizeof(int)*3+2];
     char *dpos, *end = digits + sizeof(int)*3+2;
@@ -242378,12 +242718,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
     Py_ssize_t length, ulength;
     int prepend_sign, last_one_off;
     int remaining;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wconversion"
 #endif
     const int neg_one = (int) -1, const_zero = (int) 0;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic pop
 #endif
     const int is_unsigned = neg_one > const_zero;
@@ -242446,22 +242786,26 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_int(int value, Py_ssize_t wi
 }
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
@@ -245027,6 +245371,9 @@ static CYTHON_INLINE int __Pyx_set_iter_next(
 #else
    #include <stdint.h>
 #endif
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define GCC_DIAGNOSTIC
+#endif
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlXPathObjectType(xmlXPathObjectType value, Py_ssize_t width, char padding_char, char format_char) {
     char digits[sizeof(xmlXPathObjectType)*3+2];
     char *dpos, *end = digits + sizeof(xmlXPathObjectType)*3+2;
@@ -245034,12 +245381,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_xmlXPathObjectType(xmlXPathO
     Py_ssize_t length, ulength;
     int prepend_sign, last_one_off;
     xmlXPathObjectType remaining;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wconversion"
 #endif
     const xmlXPathObjectType neg_one = (xmlXPathObjectType) -1, const_zero = (xmlXPathObjectType) 0;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic pop
 #endif
     const int is_unsigned = neg_one > const_zero;
index b678f70..c30f96a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 #ifndef __PYX_HAVE__lxml__etree
 #define __PYX_HAVE__lxml__etree
@@ -51,7 +51,7 @@ struct LxmlElement {
   PyObject *_tag;
 };
 
-/* "lxml/etree.pyx":1847
+/* "lxml/etree.pyx":1858
  * 
  * 
  * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
@@ -65,7 +65,7 @@ struct LxmlElementTree {
   struct LxmlElement *_context_node;
 };
 
-/* "lxml/etree.pyx":2574
+/* "lxml/etree.pyx":2585
  * 
  * 
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
@@ -81,7 +81,7 @@ struct LxmlElementTagMatcher {
   char *_name;
 };
 
-/* "lxml/etree.pyx":2605
+/* "lxml/etree.pyx":2616
  *                 self._name = NULL
  * 
  * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
index 3ba5079..ffff950 100644 (file)
@@ -515,15 +515,15 @@ cdef class DocInfo:
         if not root_name and (public_id or system_url):
             raise ValueError, u"Could not find root node"
 
-    property root_name:
-        u"Returns the name of the root node as defined by the DOCTYPE."
-        def __get__(self):
-            root_name, public_id, system_url = self._doc.getdoctype()
-            return root_name
+    @property
+    def root_name(self):
+        """Returns the name of the root node as defined by the DOCTYPE."""
+        root_name, public_id, system_url = self._doc.getdoctype()
+        return root_name
 
     @cython.final
     cdef tree.xmlDtd* _get_c_dtd(self):
-        u"""Return the DTD. Create it if it does not yet exist."""
+        """"Return the DTD. Create it if it does not yet exist."""
         cdef xmlDoc* c_doc = self._doc._c_doc
         cdef xmlNode* c_root_node
         cdef const_xmlChar* c_name
@@ -604,28 +604,28 @@ cdef class DocInfo:
                 tree.xmlFree(<void*>c_dtd.SystemID)
             c_dtd.SystemID = c_value
 
-    property xml_version:
-        u"Returns the XML version as declared by the document."
-        def __get__(self):
-            xml_version, encoding = self._doc.getxmlinfo()
-            return xml_version
-
-    property encoding:
-        u"Returns the encoding name as declared by the document."
-        def __get__(self):
-            xml_version, encoding = self._doc.getxmlinfo()
-            return encoding
-
-    property standalone:
-        u"""Returns the standalone flag as declared by the document.  The possible
+    @property
+    def xml_version(self):
+        """Returns the XML version as declared by the document."""
+        xml_version, encoding = self._doc.getxmlinfo()
+        return xml_version
+
+    @property
+    def encoding(self):
+        """Returns the encoding name as declared by the document."""
+        xml_version, encoding = self._doc.getxmlinfo()
+        return encoding
+
+    @property
+    def standalone(self):
+        """Returns the standalone flag as declared by the document.  The possible
         values are True (``standalone='yes'``), False
         (``standalone='no'`` or flag not provided in the declaration),
         and None (unknown or no declaration found).  Note that a
         normal truth test on this value will always tell if the
         ``standalone`` flag was set to ``'yes'`` or not.
         """
-        def __get__(self):
-            return self._doc.isstandalone()
+        return self._doc.isstandalone()
 
     property URL:
         u"The source URL of the document (or None if unknown)."
@@ -643,40 +643,40 @@ cdef class DocInfo:
             if c_oldurl is not NULL:
                 tree.xmlFree(<void*>c_oldurl)
 
-    property doctype:
-        u"Returns a DOCTYPE declaration string for the document."
-        def __get__(self):
-            root_name, public_id, system_url = self._doc.getdoctype()
+    @property
+    def doctype(self):
+        """Returns a DOCTYPE declaration string for the document."""
+        root_name, public_id, system_url = self._doc.getdoctype()
+        if system_url:
+            # If '"' in system_url, we must escape it with single
+            # quotes, otherwise escape with double quotes. If url
+            # contains both a single quote and a double quote, XML
+            # standard is being violated.
+            if '"' in system_url:
+                quoted_system_url = f"'{system_url}'"
+            else:
+                quoted_system_url = f'"{system_url}"'
+        if public_id:
             if system_url:
-                # If '"' in system_url, we must escape it with single
-                # quotes, otherwise escape with double quotes. If url
-                # contains both a single quote and a double quote, XML
-                # standard is being violated.
-                if '"' in system_url:
-                    quoted_system_url = f"'{system_url}'"
-                else:
-                    quoted_system_url = f'"{system_url}"'
-            if public_id:
-                if system_url:
-                    return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
-                else:
-                    return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
-            elif system_url:
-                return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
-            elif self._doc.hasdoctype():
-                return f'<!DOCTYPE {root_name}>'
+                return f'<!DOCTYPE {root_name} PUBLIC "{public_id}" {quoted_system_url}>'
             else:
-                return u''
+                return f'<!DOCTYPE {root_name} PUBLIC "{public_id}">'
+        elif system_url:
+            return f'<!DOCTYPE {root_name} SYSTEM {quoted_system_url}>'
+        elif self._doc.hasdoctype():
+            return f'<!DOCTYPE {root_name}>'
+        else:
+            return u''
 
-    property internalDTD:
-        u"Returns a DTD validator based on the internal subset of the document."
-        def __get__(self):
-            return _dtdFactory(self._doc._c_doc.intSubset)
+    @property
+    def internalDTD(self):
+        """Returns a DTD validator based on the internal subset of the document."""
+        return _dtdFactory(self._doc._c_doc.intSubset)
 
-    property externalDTD:
-        u"Returns a DTD validator based on the external subset of the document."
-        def __get__(self):
-            return _dtdFactory(self._doc._c_doc.extSubset)
+    @property
+    def externalDTD(self):
+        """Returns a DTD validator based on the external subset of the document."""
+        return _dtdFactory(self._doc._c_doc.extSubset)
 
 
 @cython.no_gc_clear
@@ -996,12 +996,12 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
             else:
                 self._doc._setNodeNs(self._c_node, _xcstr(ns))
 
-    property attrib:
-        u"""Element attribute dictionary. Where possible, use get(), set(),
+    @property
+    def attrib(self):
+        """Element attribute dictionary. Where possible, use get(), set(),
         keys(), values() and items() to access element attributes.
         """
-        def __get__(self):
-            return _Attrib.__new__(_Attrib, self)
+        return _Attrib.__new__(_Attrib, self)
 
     property text:
         u"""Text before the first subelement. This is either a string or
@@ -1039,14 +1039,14 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
         #    _setTailText(self._c_node, None)
 
     # not in ElementTree, read-only
-    property prefix:
-        u"""Namespace prefix or None.
+    @property
+    def prefix(self):
+        """Namespace prefix or None.
         """
-        def __get__(self):
-            if self._c_node.ns is not NULL:
-                if self._c_node.ns.prefix is not NULL:
-                    return funicode(self._c_node.ns.prefix)
-            return None
+        if self._c_node.ns is not NULL:
+            if self._c_node.ns.prefix is not NULL:
+                return funicode(self._c_node.ns.prefix)
+        return None
 
     # not in ElementTree, read-only
     property sourceline:
@@ -1066,28 +1066,28 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
                 self._c_node.line = line
 
     # not in ElementTree, read-only
-    property nsmap:
-        u"""Namespace prefix->URI mapping known in the context of this
+    @property
+    def nsmap(self):
+        """Namespace prefix->URI mapping known in the context of this
         Element.  This includes all namespace declarations of the
         parents.
 
         Note that changing the returned dict has no effect on the Element.
         """
-        def __get__(self):
-            cdef xmlNode* c_node
-            cdef xmlNs* c_ns
-            _assertValidNode(self)
-            nsmap = {}
-            c_node = self._c_node
-            while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
-                c_ns = c_node.nsDef
-                while c_ns is not NULL:
-                    prefix = funicodeOrNone(c_ns.prefix)
-                    if prefix not in nsmap:
-                        nsmap[prefix] = funicodeOrNone(c_ns.href)
-                    c_ns = c_ns.next
-                c_node = c_node.parent
-            return nsmap
+        cdef xmlNode* c_node
+        cdef xmlNs* c_ns
+        _assertValidNode(self)
+        nsmap = {}
+        c_node = self._c_node
+        while c_node is not NULL and c_node.type == tree.XML_ELEMENT_NODE:
+            c_ns = c_node.nsDef
+            while c_ns is not NULL:
+                prefix = funicodeOrNone(c_ns.prefix)
+                if prefix not in nsmap:
+                    nsmap[prefix] = funicodeOrNone(c_ns.href)
+                c_ns = c_ns.next
+            c_node = c_node.parent
+        return nsmap
 
     # not in ElementTree, read-only
     property base:
@@ -1387,6 +1387,11 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
         Can be restricted to find only elements with specific tags,
         see `iter`.
         """
+        if preceding:
+            if self._c_node and not self._c_node.prev:
+                return ITER_EMPTY
+        elif self._c_node and not self._c_node.next:
+            return ITER_EMPTY
         if tag is not None:
             tags += (tag,)
         return SiblingsIterator(self, tags, preceding=preceding)
@@ -1399,6 +1404,8 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
         Can be restricted to find only elements with specific tags,
         see `iter`.
         """
+        if self._c_node and not self._c_node.parent:
+            return ITER_EMPTY
         if tag is not None:
             tags += (tag,)
         return AncestorsIterator(self, tags)
@@ -1412,6 +1419,8 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
         itself.  The returned elements can be restricted to find only elements
         with specific tags, see `iter`.
         """
+        if self._c_node and not self._c_node.children:
+            return ITER_EMPTY
         if tag is not None:
             tags += (tag,)
         return ElementDepthFirstIterator(self, tags, inclusive=False)
@@ -1425,6 +1434,8 @@ cdef public class _Element [ type LxmlElementType, object LxmlElement ]:
         elements can be reversed with the 'reversed' keyword and restricted
         to find only elements with specific tags, see `iter`.
         """
+        if self._c_node and not self._c_node.children:
+            return ITER_EMPTY
         if tag is not None:
             tags += (tag,)
         return ElementChildIterator(self, tags, reversed=reversed)
@@ -1640,9 +1651,9 @@ cdef class __ContentOnlyElement(_Element):
         u"__setitem__(self, index, value)"
         self._raiseImmutable()
 
-    property attrib:
-        def __get__(self):
-            return IMMUTABLE_EMPTY_MAPPING
+    @property
+    def attrib(self):
+        return IMMUTABLE_EMPTY_MAPPING
 
     property text:
         def __get__(self):
@@ -1688,17 +1699,17 @@ cdef class __ContentOnlyElement(_Element):
         return []
 
 cdef class _Comment(__ContentOnlyElement):
-    property tag:
-        def __get__(self):
-            return Comment
+    @property
+    def tag(self):
+        return Comment
 
     def __repr__(self):
         return "<!--%s-->" % strrepr(self.text)
 
 cdef class _ProcessingInstruction(__ContentOnlyElement):
-    property tag:
-        def __get__(self):
-            return ProcessingInstruction
+    @property
+    def tag(self):
+        return ProcessingInstruction
 
     property target:
         # not in ElementTree
@@ -1734,22 +1745,22 @@ cdef class _ProcessingInstruction(__ContentOnlyElement):
         """
         return self.attrib.get(key, default)
 
-    property attrib:
-        u"""Returns a dict containing all pseudo-attributes that can be
+    @property
+    def attrib(self):
+        """Returns a dict containing all pseudo-attributes that can be
         parsed from the text content of this processing instruction.
         Note that modifying the dict currently has no effect on the
         XML node, although this is not guaranteed to stay this way.
         """
-        def __get__(self):
-            return { attr : (value1 or value2)
-                     for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
+        return { attr : (value1 or value2)
+                 for attr, value1, value2 in _FIND_PI_ATTRIBUTES(u' ' + self.text) }
 
 cdef object _FIND_PI_ATTRIBUTES = re.compile(ur'\s+(\w+)\s*=\s*(?:\'([^\']*)\'|"([^"]*)")', re.U).findall
 
 cdef class _Entity(__ContentOnlyElement):
-    property tag:
-        def __get__(self):
-            return Entity
+    @property
+    def tag(self):
+        return Entity
 
     property name:
         # not in ElementTree
@@ -1764,12 +1775,12 @@ cdef class _Entity(__ContentOnlyElement):
                 raise ValueError, f"Invalid entity name '{value}'"
             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
 
-    property text:
+    @property
+    def text(self):
         # FIXME: should this be None or '&[VALUE];' or the resolved
         # entity value ?
-        def __get__(self):
-            _assertValidNode(self)
-            return f'&{funicode(self._c_node.name)};'
+        _assertValidNode(self)
+        return f'&{funicode(self._c_node.name)};'
 
     def __repr__(self):
         return "&%s;" % strrepr(self.name)
@@ -1923,23 +1934,23 @@ cdef public class _ElementTree [ type LxmlElementTreeType,
             return self
 
     # not in ElementTree
-    property docinfo:
-        u"""Information about the document provided by parser and DTD."""
-        def __get__(self):
-            self._assertHasRoot()
-            return DocInfo(self._context_node._doc)
+    @property
+    def docinfo(self):
+        """Information about the document provided by parser and DTD."""
+        self._assertHasRoot()
+        return DocInfo(self._context_node._doc)
 
     # not in ElementTree, read-only
-    property parser:
-        u"""The parser that was used to parse the document in this ElementTree.
-        """
-        def __get__(self):
-            if self._context_node is not None and \
-                   self._context_node._doc is not None:
-                return self._context_node._doc._parser
-            if self._doc is not None:
-                return self._doc._parser
-            return None
+    @property
+    def parser(self):
+        """The parser that was used to parse the document in this ElementTree.
+        """
+        if self._context_node is not None and \
+               self._context_node._doc is not None:
+            return self._context_node._doc._parser
+        if self._doc is not None:
+            return self._doc._parser
+        return None
 
     def write(self, file, *, encoding=None, method=u"xml",
               pretty_print=False, xml_declaration=None, with_tail=True,
@@ -3544,11 +3555,11 @@ cdef class _Validator:
     cpdef _clear_error_log(self):
         self._error_log.clear()
 
-    property error_log:
-        u"The log of validation errors and warnings."
-        def __get__(self):
-            assert self._error_log is not None, "XPath evaluator not initialised"
-            return self._error_log.copy()
+    @property
+    def error_log(self):
+        """The log of validation errors and warnings."""
+        assert self._error_log is not None, "XPath evaluator not initialised"
+        return self._error_log.copy()
 
 include "dtd.pxi"        # DTD
 include "relaxng.pxi"    # RelaxNG
index 51397ac..f6de6b1 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 #ifndef __PYX_HAVE_API__lxml__etree
 #define __PYX_HAVE_API__lxml__etree
index d2d059c..35a321b 100644 (file)
@@ -295,27 +295,27 @@ cdef class _BaseContext:
 
     # Python access to the XPath context for extension functions
 
-    property context_node:
-        def __get__(self):
-            cdef xmlNode* c_node
-            if self._xpathCtxt is NULL:
-                raise XPathError, \
-                    u"XPath context is only usable during the evaluation"
-            c_node = self._xpathCtxt.node
-            if c_node is NULL:
-                raise XPathError, u"no context node"
-            if c_node.doc != self._xpathCtxt.doc:
-                raise XPathError, \
-                    u"document-external context nodes are not supported"
-            if self._doc is None:
-                raise XPathError, u"document context is missing"
-            return _elementFactory(self._doc, c_node)
-
-    property eval_context:
-        def __get__(self):
-            if self._eval_context_dict is None:
-                self._eval_context_dict = {}
-            return self._eval_context_dict
+    @property
+    def context_node(self):
+        cdef xmlNode* c_node
+        if self._xpathCtxt is NULL:
+            raise XPathError, \
+                u"XPath context is only usable during the evaluation"
+        c_node = self._xpathCtxt.node
+        if c_node is NULL:
+            raise XPathError, u"no context node"
+        if c_node.doc != self._xpathCtxt.doc:
+            raise XPathError, \
+                u"document-external context nodes are not supported"
+        if self._doc is None:
+            raise XPathError, u"document context is missing"
+        return _elementFactory(self._doc, c_node)
+
+    @property
+    def eval_context(self):
+        if self._eval_context_dict is None:
+            self._eval_context_dict = {}
+        return self._eval_context_dict
 
     # Python reference keeping during XPath function evaluation
 
index 1353495..9baf266 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -33,8 +33,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -626,7 +626,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -916,7 +917,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_GetAttrStr(PyObject* obj, PyObject
 static PyObject *__Pyx_GetBuiltinName(PyObject *name);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -1222,18 +1223,18 @@ static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t
 #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
     (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\
         __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
-        (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
             __Pyx__PyObject_PopIndex(L, py_ix)))
 #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
     __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\
         __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
-        (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
             __Pyx__PyObject_PopIndex(L, py_ix)))
 #else
 #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\
     __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)
 #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
-    (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+    (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
         __Pyx__PyObject_PopIndex(L, py_ix))
 #endif
 
@@ -16357,22 +16358,26 @@ static PyObject *__Pyx_GetBuiltinName(PyObject *name) {
 }
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
index 5e19fe0..7dd9b02 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -33,8 +33,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 1
 #include <stddef.h>
 #ifndef offsetof
@@ -626,7 +626,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -994,7 +995,7 @@ static int __Pyx_ParseOptionalKeywords(PyObject *kwds, PyObject **argnames[],\
     const char* function_name);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -1385,18 +1386,18 @@ static PyObject* __Pyx__PyList_PopIndex(PyObject* L, PyObject* py_ix, Py_ssize_t
 #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
     (likely(PyList_CheckExact(L) && __Pyx_fits_Py_ssize_t(ix, type, is_signed))) ?\
         __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
-        (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
             __Pyx__PyObject_PopIndex(L, py_ix)))
 #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
     __Pyx_fits_Py_ssize_t(ix, type, is_signed) ?\
         __Pyx__PyList_PopIndex(L, py_ix, ix) : (\
-        (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+        (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
             __Pyx__PyObject_PopIndex(L, py_ix)))
 #else
 #define __Pyx_PyList_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)\
     __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func)
 #define __Pyx_PyObject_PopIndex(L, py_ix, ix, is_signed, type, to_py_func) (\
-    (unlikely(py_ix == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
+    (unlikely((py_ix) == Py_None)) ? __Pyx__PyObject_PopNewIndex(L, to_py_func(ix)) :\
         __Pyx__PyObject_PopIndex(L, py_ix))
 #endif
 
@@ -21442,22 +21443,26 @@ bad:
 }
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
index 134cc35..3aac423 100644 (file)
@@ -1,3 +1,3 @@
 #ifndef LXML_VERSION_STRING
-#define LXML_VERSION_STRING "4.3.1"
+#define LXML_VERSION_STRING "4.3.2"
 #endif
index 3a64a27..f0502e6 100644 (file)
@@ -128,22 +128,22 @@ cdef class iterparse:
         self._parser = parser
         self._source = source
 
-    property error_log:
-        u"""The error log of the last (or current) parser run.
+    @property
+    def error_log(self):
+        """The error log of the last (or current) parser run.
         """
-        def __get__(self):
-            return self._parser.feed_error_log
+        return self._parser.feed_error_log
 
-    property resolvers:
-        u"""The custom resolver registry of the last (or current) parser run.
+    @property
+    def resolvers(self):
+        """The custom resolver registry of the last (or current) parser run.
         """
-        def __get__(self):
-            return self._parser.resolvers
+        return self._parser.resolvers
 
-    property version:
-        u"""The version of the underlying XML parser."""
-        def __get__(self):
-            return self._parser.version
+    @property
+    def version(self):
+        """The version of the underlying XML parser."""
+        return self._parser.version
 
     def set_element_class_lookup(self, ElementClassLookup lookup = None):
         u"""set_element_class_lookup(self, lookup = None)
index b678f70..c30f96a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 #ifndef __PYX_HAVE__lxml__etree
 #define __PYX_HAVE__lxml__etree
@@ -51,7 +51,7 @@ struct LxmlElement {
   PyObject *_tag;
 };
 
-/* "lxml/etree.pyx":1847
+/* "lxml/etree.pyx":1858
  * 
  * 
  * cdef public class _ElementTree [ type LxmlElementTreeType,             # <<<<<<<<<<<<<<
@@ -65,7 +65,7 @@ struct LxmlElementTree {
   struct LxmlElement *_context_node;
 };
 
-/* "lxml/etree.pyx":2574
+/* "lxml/etree.pyx":2585
  * 
  * 
  * cdef public class _ElementTagMatcher [ object LxmlElementTagMatcher,             # <<<<<<<<<<<<<<
@@ -81,7 +81,7 @@ struct LxmlElementTagMatcher {
   char *_name;
 };
 
-/* "lxml/etree.pyx":2605
+/* "lxml/etree.pyx":2616
  *                 self._name = NULL
  * 
  * cdef public class _ElementIterator(_ElementTagMatcher) [             # <<<<<<<<<<<<<<
index 00a9630..aa3600d 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 #ifndef __PYX_HAVE_API__lxml__etree
 #define __PYX_HAVE_API__lxml__etree
index 7dcc45b..0bc0b63 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -75,8 +75,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -689,7 +689,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -1017,8 +1018,8 @@ struct __pyx_obj_4lxml_9objectify_NoneElement {
 };
 
 
-/* "lxml/objectify.pyx":809
- *             return None
+/* "lxml/objectify.pyx":810
+ * 
  * 
  * cdef class BoolElement(IntElement):             # <<<<<<<<<<<<<<
  *     u"""Boolean type base on string values: 'true' or 'false'.
@@ -1029,7 +1030,7 @@ struct __pyx_obj_4lxml_9objectify_BoolElement {
 };
 
 
-/* "lxml/objectify.pyx":895
+/* "lxml/objectify.pyx":896
  * # Python type registry
  * 
  * cdef class PyType:             # <<<<<<<<<<<<<<
@@ -1046,7 +1047,7 @@ struct __pyx_obj_4lxml_9objectify_PyType {
 };
 
 
-/* "lxml/objectify.pyx":1125
+/* "lxml/objectify.pyx":1126
  * @cython.final
  * @cython.internal
  * cdef class _ObjectifyElementMakerCaller:             # <<<<<<<<<<<<<<
@@ -1062,7 +1063,7 @@ struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller {
 };
 
 
-/* "lxml/objectify.pyx":1215
+/* "lxml/objectify.pyx":1216
  *         cetree.setNodeText(elem._c_node, text)
  * 
  * cdef class ElementMaker:             # <<<<<<<<<<<<<<
@@ -1080,7 +1081,7 @@ struct __pyx_obj_4lxml_9objectify_ElementMaker {
 };
 
 
-/* "lxml/objectify.pyx":1371
+/* "lxml/objectify.pyx":1372
  * # Element class lookup
  * 
  * cdef class ObjectifyElementClassLookup(ElementClassLookup):             # <<<<<<<<<<<<<<
@@ -1112,7 +1113,7 @@ struct __pyx_obj_4lxml_9objectify_ObjectPath {
 
 
 
-/* "lxml/objectify.pyx":1215
+/* "lxml/objectify.pyx":1216
  *         cetree.setNodeText(elem._c_node, text)
  * 
  * cdef class ElementMaker:             # <<<<<<<<<<<<<<
@@ -1307,7 +1308,7 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func);
 #endif
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -3778,7 +3779,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4__reduce__(stru
  *     def __reduce__(self):
  *         return fromstring, (etree.tostring(self),)             # <<<<<<<<<<<<<<
  * 
- *     property text:
+ *     @property
  */
   __Pyx_XDECREF(__pyx_r);
   __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 163, __pyx_L1_error)
@@ -3841,9 +3842,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4__reduce__(stru
 
 /* "lxml/objectify.pyx":166
  * 
- *     property text:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node)
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node)
  * 
  */
 
@@ -3867,11 +3868,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(st
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":167
- *     property text:
- *         def __get__(self):
- *             return textOf(self._c_node)             # <<<<<<<<<<<<<<
+ *     @property
+ *     def text(self):
+ *         return textOf(self._c_node)             # <<<<<<<<<<<<<<
  * 
- *     property __dict__:
+ *     @property
  */
   __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, 167, __pyx_L1_error)
@@ -3882,9 +3883,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(st
 
   /* "lxml/objectify.pyx":166
  * 
- *     property text:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node)
+ *     @property
+ *     def text(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node)
  * 
  */
 
@@ -3899,12 +3900,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_4text___get__(st
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":174
- *         Note that this only considers the first child with a given name.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef _Element child
- *             cdef dict children
+/* "lxml/objectify.pyx":170
+ * 
+ *     @property
+ *     def __dict__(self):             # <<<<<<<<<<<<<<
+ *         """A fake implementation for __dict__ to support dir() etc.
+ * 
  */
 
 /* Python wrapper */
@@ -3939,20 +3940,20 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":177
- *             cdef _Element child
- *             cdef dict children
- *             c_ns = tree._getNs(self._c_node)             # <<<<<<<<<<<<<<
- *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
- *             children = {}
+ *         cdef _Element child
+ *         cdef dict children
+ *         c_ns = tree._getNs(self._c_node)             # <<<<<<<<<<<<<<
+ *         tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
+ *         children = {}
  */
   __pyx_v_c_ns = _getNs(__pyx_v_self->__pyx_base.__pyx_base._c_node);
 
   /* "lxml/objectify.pyx":178
- *             cdef dict children
- *             c_ns = tree._getNs(self._c_node)
- *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None             # <<<<<<<<<<<<<<
- *             children = {}
- *             for child in etree.ElementChildIterator(self, tag=tag):
+ *         cdef dict children
+ *         c_ns = tree._getNs(self._c_node)
+ *         tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None             # <<<<<<<<<<<<<<
+ *         children = {}
+ *         for child in etree.ElementChildIterator(self, tag=tag):
  */
   if (((__pyx_v_c_ns != NULL) != 0)) {
     __pyx_t_2 = pyunicode(__pyx_v_c_ns); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 178, __pyx_L1_error)
@@ -3970,11 +3971,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   __pyx_t_1 = 0;
 
   /* "lxml/objectify.pyx":179
- *             c_ns = tree._getNs(self._c_node)
- *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
- *             children = {}             # <<<<<<<<<<<<<<
- *             for child in etree.ElementChildIterator(self, tag=tag):
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+ *         c_ns = tree._getNs(self._c_node)
+ *         tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
+ *         children = {}             # <<<<<<<<<<<<<<
+ *         for child in etree.ElementChildIterator(self, tag=tag):
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
  */
   __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 179, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -3982,11 +3983,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   __pyx_t_1 = 0;
 
   /* "lxml/objectify.pyx":180
- *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
- *             children = {}
- *             for child in etree.ElementChildIterator(self, tag=tag):             # <<<<<<<<<<<<<<
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
- *                     continue
+ *         tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
+ *         children = {}
+ *         for child in etree.ElementChildIterator(self, tag=tag):             # <<<<<<<<<<<<<<
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+ *                 continue
  */
   __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementChildIterator); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 180, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
@@ -4048,11 +4049,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
     __pyx_t_4 = 0;
 
     /* "lxml/objectify.pyx":181
- *             children = {}
- *             for child in etree.ElementChildIterator(self, tag=tag):
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:             # <<<<<<<<<<<<<<
- *                     continue
- *                 name = pyunicode(child._c_node.name)
+ *         children = {}
+ *         for child in etree.ElementChildIterator(self, tag=tag):
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:             # <<<<<<<<<<<<<<
+ *                 continue
+ *             name = pyunicode(child._c_node.name)
  */
     __pyx_t_8 = ((__pyx_v_c_ns == NULL) != 0);
     if (__pyx_t_8) {
@@ -4066,29 +4067,29 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
     if (__pyx_t_7) {
 
       /* "lxml/objectify.pyx":182
- *             for child in etree.ElementChildIterator(self, tag=tag):
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
- *                     continue             # <<<<<<<<<<<<<<
- *                 name = pyunicode(child._c_node.name)
- *                 if name not in children:
+ *         for child in etree.ElementChildIterator(self, tag=tag):
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+ *                 continue             # <<<<<<<<<<<<<<
+ *             name = pyunicode(child._c_node.name)
+ *             if name not in children:
  */
       goto __pyx_L3_continue;
 
       /* "lxml/objectify.pyx":181
- *             children = {}
- *             for child in etree.ElementChildIterator(self, tag=tag):
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:             # <<<<<<<<<<<<<<
- *                     continue
- *                 name = pyunicode(child._c_node.name)
+ *         children = {}
+ *         for child in etree.ElementChildIterator(self, tag=tag):
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:             # <<<<<<<<<<<<<<
+ *                 continue
+ *             name = pyunicode(child._c_node.name)
  */
     }
 
     /* "lxml/objectify.pyx":183
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
- *                     continue
- *                 name = pyunicode(child._c_node.name)             # <<<<<<<<<<<<<<
- *                 if name not in children:
- *                     children[name] = child
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+ *                 continue
+ *             name = pyunicode(child._c_node.name)             # <<<<<<<<<<<<<<
+ *             if name not in children:
+ *                 children[name] = child
  */
     __pyx_t_4 = pyunicode(__pyx_v_child->_c_node->name); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 183, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
@@ -4096,49 +4097,49 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
     __pyx_t_4 = 0;
 
     /* "lxml/objectify.pyx":184
- *                     continue
- *                 name = pyunicode(child._c_node.name)
- *                 if name not in children:             # <<<<<<<<<<<<<<
- *                     children[name] = child
- *             return children
+ *                 continue
+ *             name = pyunicode(child._c_node.name)
+ *             if name not in children:             # <<<<<<<<<<<<<<
+ *                 children[name] = child
+ *         return children
  */
     __pyx_t_7 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_children, Py_NE)); if (unlikely(__pyx_t_7 < 0)) __PYX_ERR(0, 184, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_7 != 0);
     if (__pyx_t_8) {
 
       /* "lxml/objectify.pyx":185
- *                 name = pyunicode(child._c_node.name)
- *                 if name not in children:
- *                     children[name] = child             # <<<<<<<<<<<<<<
- *             return children
+ *             name = pyunicode(child._c_node.name)
+ *             if name not in children:
+ *                 children[name] = child             # <<<<<<<<<<<<<<
+ *         return children
  * 
  */
       if (unlikely(PyDict_SetItem(__pyx_v_children, __pyx_v_name, ((PyObject *)__pyx_v_child)) < 0)) __PYX_ERR(0, 185, __pyx_L1_error)
 
       /* "lxml/objectify.pyx":184
- *                     continue
- *                 name = pyunicode(child._c_node.name)
- *                 if name not in children:             # <<<<<<<<<<<<<<
- *                     children[name] = child
- *             return children
+ *                 continue
+ *             name = pyunicode(child._c_node.name)
+ *             if name not in children:             # <<<<<<<<<<<<<<
+ *                 children[name] = child
+ *         return children
  */
     }
 
     /* "lxml/objectify.pyx":180
- *             tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
- *             children = {}
- *             for child in etree.ElementChildIterator(self, tag=tag):             # <<<<<<<<<<<<<<
- *                 if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
- *                     continue
+ *         tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
+ *         children = {}
+ *         for child in etree.ElementChildIterator(self, tag=tag):             # <<<<<<<<<<<<<<
+ *             if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+ *                 continue
  */
     __pyx_L3_continue:;
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "lxml/objectify.pyx":186
- *                 if name not in children:
- *                     children[name] = child
- *             return children             # <<<<<<<<<<<<<<
+ *             if name not in children:
+ *                 children[name] = child
+ *         return children             # <<<<<<<<<<<<<<
  * 
  *     def __len__(self):
  */
@@ -4147,12 +4148,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
   __pyx_r = __pyx_v_children;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":174
- *         Note that this only considers the first child with a given name.
- *         """
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             cdef _Element child
- *             cdef dict children
+  /* "lxml/objectify.pyx":170
+ * 
+ *     @property
+ *     def __dict__(self):             # <<<<<<<<<<<<<<
+ *         """A fake implementation for __dict__ to support dir() etc.
+ * 
  */
 
   /* function exit code */
@@ -4174,7 +4175,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18ObjectifiedElement_8__dict_____get_
 }
 
 /* "lxml/objectify.pyx":188
- *             return children
+ *         return children
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
  *         u"""Count self and siblings with the same tag.
@@ -4214,7 +4215,7 @@ static Py_ssize_t __pyx_pf_4lxml_9objectify_18ObjectifiedElement_6__len__(struct
   goto __pyx_L0;
 
   /* "lxml/objectify.pyx":188
- *             return children
+ *         return children
  * 
  *     def __len__(self):             # <<<<<<<<<<<<<<
  *         u"""Count self and siblings with the same tag.
@@ -9311,9 +9312,9 @@ static PyObject *__pyx_f_4lxml_9objectify__setSlice(PyObject *__pyx_v_sliceobjec
 
 /* "lxml/objectify.pyx":598
  *     """
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node)
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node)
  * 
  */
 
@@ -9337,9 +9338,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":599
- *     property pyval:
- *         def __get__(self):
- *             return textOf(self._c_node)             # <<<<<<<<<<<<<<
+ *     @property
+ *     def pyval(self):
+ *         return textOf(self._c_node)             # <<<<<<<<<<<<<<
  * 
  *     def __str__(self):
  */
@@ -9352,9 +9353,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get
 
   /* "lxml/objectify.pyx":598
  *     """
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node)
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node)
  * 
  */
 
@@ -9370,7 +9371,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement_5pyval___get
 }
 
 /* "lxml/objectify.pyx":601
- *             return textOf(self._c_node)
+ *         return textOf(self._c_node)
  * 
  *     def __str__(self):             # <<<<<<<<<<<<<<
  *         return textOf(self._c_node) or ''
@@ -9425,7 +9426,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22ObjectifiedDataElement___str__(stru
   goto __pyx_L0;
 
   /* "lxml/objectify.pyx":601
- *             return textOf(self._c_node)
+ *         return textOf(self._c_node)
  * 
  *     def __str__(self):             # <<<<<<<<<<<<<<
  *         return textOf(self._c_node) or ''
@@ -9613,7 +9614,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement__setValueParser(struc
  *         """
  *         self._parse_value = function             # <<<<<<<<<<<<<<
  * 
- *     property pyval:
+ *     @property
  */
   __Pyx_INCREF(__pyx_v_function);
   __Pyx_GIVEREF(__pyx_v_function);
@@ -9638,9 +9639,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement__setValueParser(struc
 
 /* "lxml/objectify.pyx":623
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _parseNumber(self)
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return _parseNumber(self)
  * 
  */
 
@@ -9664,9 +9665,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":624
- *     property pyval:
- *         def __get__(self):
- *             return _parseNumber(self)             # <<<<<<<<<<<<<<
+ *     @property
+ *     def pyval(self):
+ *         return _parseNumber(self)             # <<<<<<<<<<<<<<
  * 
  *     def __int__(self):
  */
@@ -9679,9 +9680,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct
 
   /* "lxml/objectify.pyx":623
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return _parseNumber(self)
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return _parseNumber(self)
  * 
  */
 
@@ -9697,7 +9698,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_5pyval___get__(struct
 }
 
 /* "lxml/objectify.pyx":626
- *             return _parseNumber(self)
+ *         return _parseNumber(self)
  * 
  *     def __int__(self):             # <<<<<<<<<<<<<<
  *         return int(_parseNumber(self))
@@ -9742,7 +9743,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13NumberElement_2__int__(struct __pyx
   goto __pyx_L0;
 
   /* "lxml/objectify.pyx":626
- *             return _parseNumber(self)
+ *         return _parseNumber(self)
  * 
  *     def __int__(self):             # <<<<<<<<<<<<<<
  *         return int(_parseNumber(self))
@@ -11725,9 +11726,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_12FloatElement__init(struct __pyx_obj
 
 /* "lxml/objectify.pyx":730
  *     """
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node) or u''
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node) or u''
  * 
  */
 
@@ -11753,9 +11754,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":731
- *     property pyval:
- *         def __get__(self):
- *             return textOf(self._c_node) or u''             # <<<<<<<<<<<<<<
+ *     @property
+ *     def pyval(self):
+ *         return textOf(self._c_node) or u''             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
@@ -11780,9 +11781,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
 
   /* "lxml/objectify.pyx":730
  *     """
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return textOf(self._c_node) or u''
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return textOf(self._c_node) or u''
  * 
  */
 
@@ -11799,7 +11800,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement_5pyval___get__(struct
 }
 
 /* "lxml/objectify.pyx":733
- *             return textOf(self._c_node) or u''
+ *         return textOf(self._c_node) or u''
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return repr(textOf(self._c_node) or u'')
@@ -11857,7 +11858,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_13StringElement___repr__(struct __pyx
   goto __pyx_L0;
 
   /* "lxml/objectify.pyx":733
- *             return textOf(self._c_node) or u''
+ *         return textOf(self._c_node) or u''
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
  *         return repr(textOf(self._c_node) or u'')
@@ -13143,7 +13144,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED
  *     def __hash__(self):
  *         return hash(None)             # <<<<<<<<<<<<<<
  * 
- *     property pyval:
+ *     @property
  */
   __pyx_t_1 = PyObject_Hash(Py_None); if (unlikely(__pyx_t_1 == ((Py_hash_t)-1))) __PYX_ERR(0, 803, __pyx_L1_error)
   __pyx_r = __pyx_t_1;
@@ -13169,9 +13170,9 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11NoneElement_8__hash__(CYTHON_UNUSED
 
 /* "lxml/objectify.pyx":806
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return None
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return None
  * 
  */
 
@@ -13194,11 +13195,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_U
   __Pyx_RefNannySetupContext("__get__", 0);
 
   /* "lxml/objectify.pyx":807
- *     property pyval:
- *         def __get__(self):
- *             return None             # <<<<<<<<<<<<<<
+ *     @property
+ *     def pyval(self):
+ *         return None             # <<<<<<<<<<<<<<
+ * 
  * 
- * cdef class BoolElement(IntElement):
  */
   __Pyx_XDECREF(__pyx_r);
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
@@ -13206,9 +13207,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_U
 
   /* "lxml/objectify.pyx":806
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return None
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return None
  * 
  */
 
@@ -13219,7 +13220,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11NoneElement_5pyval___get__(CYTHON_U
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":815
+/* "lxml/objectify.pyx":816
  *     Python's bool type.
  *     """
  *     def _init(self):             # <<<<<<<<<<<<<<
@@ -13247,14 +13248,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("_init", 0);
 
-  /* "lxml/objectify.pyx":816
+  /* "lxml/objectify.pyx":817
  *     """
  *     def _init(self):
  *         self._parse_value = __parseBool             # <<<<<<<<<<<<<<
  * 
  *     def __nonzero__(self):
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_parseBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_parseBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 817, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __Pyx_GOTREF(__pyx_v_self->__pyx_base.__pyx_base._parse_value);
@@ -13262,7 +13263,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_
   __pyx_v_self->__pyx_base.__pyx_base._parse_value = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":815
+  /* "lxml/objectify.pyx":816
  *     Python's bool type.
  *     """
  *     def _init(self):             # <<<<<<<<<<<<<<
@@ -13283,7 +13284,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement__init(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":818
+/* "lxml/objectify.pyx":819
  *         self._parse_value = __parseBool
  * 
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -13311,21 +13312,21 @@ static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__nonzero__", 0);
 
-  /* "lxml/objectify.pyx":819
+  /* "lxml/objectify.pyx":820
  * 
  *     def __nonzero__(self):
  *         return __parseBool(textOf(self._c_node))             # <<<<<<<<<<<<<<
  * 
  *     def __richcmp__(self, other, int op):
  */
-  __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, 819, __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, 820, __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, 819, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 820, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_2;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":818
+  /* "lxml/objectify.pyx":819
  *         self._parse_value = __parseBool
  * 
  *     def __nonzero__(self):             # <<<<<<<<<<<<<<
@@ -13343,7 +13344,7 @@ static int __pyx_pf_4lxml_9objectify_11BoolElement_2__nonzero__(struct __pyx_obj
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":821
+/* "lxml/objectify.pyx":822
  *         return __parseBool(textOf(self._c_node))
  * 
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -13370,7 +13371,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __p
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("__richcmp__", 0);
 
-  /* "lxml/objectify.pyx":822
+  /* "lxml/objectify.pyx":823
  * 
  *     def __richcmp__(self, other, int op):
  *         return _richcmpPyvals(self, other, op)             # <<<<<<<<<<<<<<
@@ -13378,13 +13379,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __p
  *     def __hash__(self):
  */
   __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, 822, __pyx_L1_error)
+  __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, 823, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":821
+  /* "lxml/objectify.pyx":822
  *         return __parseBool(textOf(self._c_node))
  * 
  *     def __richcmp__(self, other, int op):             # <<<<<<<<<<<<<<
@@ -13403,7 +13404,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_4__richcmp__(struct __p
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":824
+/* "lxml/objectify.pyx":825
  *         return _richcmpPyvals(self, other, op)
  * 
  *     def __hash__(self):             # <<<<<<<<<<<<<<
@@ -13432,25 +13433,25 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_
   Py_hash_t __pyx_t_3;
   __Pyx_RefNannySetupContext("__hash__", 0);
 
-  /* "lxml/objectify.pyx":825
+  /* "lxml/objectify.pyx":826
  * 
  *     def __hash__(self):
  *         return hash(__parseBool(textOf(self._c_node)))             # <<<<<<<<<<<<<<
  * 
  *     def __str__(self):
  */
-  __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, 825, __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, 826, __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, 825, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 826, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 825, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 826, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 825, __pyx_L1_error)
+  __pyx_t_3 = PyObject_Hash(__pyx_t_1); if (unlikely(__pyx_t_3 == ((Py_hash_t)-1))) __PYX_ERR(0, 826, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":824
+  /* "lxml/objectify.pyx":825
  *         return _richcmpPyvals(self, other, op)
  * 
  *     def __hash__(self):             # <<<<<<<<<<<<<<
@@ -13469,7 +13470,7 @@ static Py_hash_t __pyx_pf_4lxml_9objectify_11BoolElement_6__hash__(struct __pyx_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":827
+/* "lxml/objectify.pyx":828
  *         return hash(__parseBool(textOf(self._c_node)))
  * 
  *     def __str__(self):             # <<<<<<<<<<<<<<
@@ -13498,7 +13499,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_o
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__str__", 0);
 
-  /* "lxml/objectify.pyx":828
+  /* "lxml/objectify.pyx":829
  * 
  *     def __str__(self):
  *         return unicode(__parseBool(textOf(self._c_node)))             # <<<<<<<<<<<<<<
@@ -13506,20 +13507,20 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_o
  *     def __repr__(self):
  */
   __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, 828, __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, 829, __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, 828, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 828, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 828, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 829, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":827
+  /* "lxml/objectify.pyx":828
  *         return hash(__parseBool(textOf(self._c_node)))
  * 
  *     def __str__(self):             # <<<<<<<<<<<<<<
@@ -13539,7 +13540,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_8__str__(struct __pyx_o
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":830
+/* "lxml/objectify.pyx":831
  *         return unicode(__parseBool(textOf(self._c_node)))
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -13568,28 +13569,28 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/objectify.pyx":831
+  /* "lxml/objectify.pyx":832
  * 
  *     def __repr__(self):
  *         return repr(__parseBool(textOf(self._c_node)))             # <<<<<<<<<<<<<<
  * 
- *     property pyval:
+ *     @property
  */
   __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, 831, __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, 832, __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, 831, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 831, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 831, __pyx_L1_error)
+  __pyx_t_3 = PyObject_Repr(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 832, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":830
+  /* "lxml/objectify.pyx":831
  *         return unicode(__parseBool(textOf(self._c_node)))
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -13609,11 +13610,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_10__repr__(struct __pyx
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":834
+/* "lxml/objectify.pyx":835
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return __parseBool(textOf(self._c_node))
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return __parseBool(textOf(self._c_node))
  * 
  */
 
@@ -13637,29 +13638,29 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct _
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/objectify.pyx":835
- *     property pyval:
- *         def __get__(self):
- *             return __parseBool(textOf(self._c_node))             # <<<<<<<<<<<<<<
+  /* "lxml/objectify.pyx":836
+ *     @property
+ *     def pyval(self):
+ *         return __parseBool(textOf(self._c_node))             # <<<<<<<<<<<<<<
  * 
  * def __checkBool(s):
  */
   __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, 835, __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, 836, __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, 835, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify___parseBool(__pyx_t_1, 0); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 835, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 836, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":834
+  /* "lxml/objectify.pyx":835
  * 
- *     property pyval:
- *         def __get__(self):             # <<<<<<<<<<<<<<
- *             return __parseBool(textOf(self._c_node))
+ *     @property
+ *     def pyval(self):             # <<<<<<<<<<<<<<
+ *         return __parseBool(textOf(self._c_node))
  * 
  */
 
@@ -13674,8 +13675,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_11BoolElement_5pyval___get__(struct _
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":837
- *             return __parseBool(textOf(self._c_node))
+/* "lxml/objectify.pyx":838
+ *         return __parseBool(textOf(self._c_node))
  * 
  * def __checkBool(s):             # <<<<<<<<<<<<<<
  *     cdef int value = -1
@@ -13705,7 +13706,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("__checkBool", 0);
 
-  /* "lxml/objectify.pyx":838
+  /* "lxml/objectify.pyx":839
  * 
  * def __checkBool(s):
  *     cdef int value = -1             # <<<<<<<<<<<<<<
@@ -13714,7 +13715,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  */
   __pyx_v_value = -1;
 
-  /* "lxml/objectify.pyx":839
+  /* "lxml/objectify.pyx":840
  * def __checkBool(s):
  *     cdef int value = -1
  *     if s is not None:             # <<<<<<<<<<<<<<
@@ -13725,17 +13726,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":840
+    /* "lxml/objectify.pyx":841
  *     cdef int value = -1
  *     if s is not None:
  *         value = __parseBoolAsInt(s)             # <<<<<<<<<<<<<<
  *     if value == -1:
  *         raise ValueError
  */
-    __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 840, __pyx_L1_error)
+    __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 841, __pyx_L1_error)
     __pyx_v_value = __pyx_t_3;
 
-    /* "lxml/objectify.pyx":839
+    /* "lxml/objectify.pyx":840
  * def __checkBool(s):
  *     cdef int value = -1
  *     if s is not None:             # <<<<<<<<<<<<<<
@@ -13744,7 +13745,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":841
+  /* "lxml/objectify.pyx":842
  *     if s is not None:
  *         value = __parseBoolAsInt(s)
  *     if value == -1:             # <<<<<<<<<<<<<<
@@ -13754,7 +13755,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
   __pyx_t_2 = ((__pyx_v_value == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/objectify.pyx":842
+    /* "lxml/objectify.pyx":843
  *         value = __parseBoolAsInt(s)
  *     if value == -1:
  *         raise ValueError             # <<<<<<<<<<<<<<
@@ -13762,9 +13763,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  * cpdef bint __parseBool(s) except -1:
  */
     __Pyx_Raise(__pyx_builtin_ValueError, 0, 0, 0);
-    __PYX_ERR(0, 842, __pyx_L1_error)
+    __PYX_ERR(0, 843, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":841
+    /* "lxml/objectify.pyx":842
  *     if s is not None:
  *         value = __parseBoolAsInt(s)
  *     if value == -1:             # <<<<<<<<<<<<<<
@@ -13773,8 +13774,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":837
- *             return __parseBool(textOf(self._c_node))
+  /* "lxml/objectify.pyx":838
+ *         return __parseBool(textOf(self._c_node))
  * 
  * def __checkBool(s):             # <<<<<<<<<<<<<<
  *     cdef int value = -1
@@ -13793,7 +13794,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_2__checkBool(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":844
+/* "lxml/objectify.pyx":845
  *         raise ValueError
  * 
  * cpdef bint __parseBool(s) except -1:             # <<<<<<<<<<<<<<
@@ -13815,7 +13816,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__parseBool", 0);
 
-  /* "lxml/objectify.pyx":846
+  /* "lxml/objectify.pyx":847
  * cpdef bint __parseBool(s) except -1:
  *     cdef int value
  *     if s is None:             # <<<<<<<<<<<<<<
@@ -13826,7 +13827,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":847
+    /* "lxml/objectify.pyx":848
  *     cdef int value
  *     if s is None:
  *         return False             # <<<<<<<<<<<<<<
@@ -13836,7 +13837,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":846
+    /* "lxml/objectify.pyx":847
  * cpdef bint __parseBool(s) except -1:
  *     cdef int value
  *     if s is None:             # <<<<<<<<<<<<<<
@@ -13845,17 +13846,17 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  */
   }
 
-  /* "lxml/objectify.pyx":848
+  /* "lxml/objectify.pyx":849
  *     if s is None:
  *         return False
  *     value = __parseBoolAsInt(s)             # <<<<<<<<<<<<<<
  *     if value == -1:
  *         raise ValueError, f"Invalid boolean value: '{s}'"
  */
-  __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 848, __pyx_L1_error)
+  __pyx_t_3 = __pyx_f_4lxml_9objectify___parseBoolAsInt(__pyx_v_s); if (unlikely(__pyx_t_3 == ((int)-2))) __PYX_ERR(0, 849, __pyx_L1_error)
   __pyx_v_value = __pyx_t_3;
 
-  /* "lxml/objectify.pyx":849
+  /* "lxml/objectify.pyx":850
  *         return False
  *     value = __parseBoolAsInt(s)
  *     if value == -1:             # <<<<<<<<<<<<<<
@@ -13865,14 +13866,14 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   __pyx_t_2 = ((__pyx_v_value == -1L) != 0);
   if (unlikely(__pyx_t_2)) {
 
-    /* "lxml/objectify.pyx":850
+    /* "lxml/objectify.pyx":851
  *     value = __parseBoolAsInt(s)
  *     if value == -1:
  *         raise ValueError, f"Invalid boolean value: '{s}'"             # <<<<<<<<<<<<<<
  *     return value
  * 
  */
-    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 850, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_New(3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 851, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_5 = 0;
     __pyx_t_6 = 127;
@@ -13880,7 +13881,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
     __pyx_t_5 += 24;
     __Pyx_GIVEREF(__pyx_kp_u_Invalid_boolean_value);
     PyTuple_SET_ITEM(__pyx_t_4, 0, __pyx_kp_u_Invalid_boolean_value);
-    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 850, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyObject_FormatSimple(__pyx_v_s, __pyx_empty_unicode); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 851, __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);
@@ -13891,14 +13892,14 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
     __pyx_t_5 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__4);
     PyTuple_SET_ITEM(__pyx_t_4, 2, __pyx_kp_u__4);
-    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 850, __pyx_L1_error)
+    __pyx_t_7 = __Pyx_PyUnicode_Join(__pyx_t_4, 3, __pyx_t_5, __pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 851, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_t_7, 0, 0);
     __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
-    __PYX_ERR(0, 850, __pyx_L1_error)
+    __PYX_ERR(0, 851, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":849
+    /* "lxml/objectify.pyx":850
  *         return False
  *     value = __parseBoolAsInt(s)
  *     if value == -1:             # <<<<<<<<<<<<<<
@@ -13907,7 +13908,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
  */
   }
 
-  /* "lxml/objectify.pyx":851
+  /* "lxml/objectify.pyx":852
  *     if value == -1:
  *         raise ValueError, f"Invalid boolean value: '{s}'"
  *     return value             # <<<<<<<<<<<<<<
@@ -13917,7 +13918,7 @@ static int __pyx_f_4lxml_9objectify___parseBool(PyObject *__pyx_v_s, CYTHON_UNUS
   __pyx_r = __pyx_v_value;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":844
+  /* "lxml/objectify.pyx":845
  *         raise ValueError
  * 
  * cpdef bint __parseBool(s) except -1:             # <<<<<<<<<<<<<<
@@ -13957,8 +13958,8 @@ static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__parseBool", 0);
   __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, 844, __pyx_L1_error)
-  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 844, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_9objectify___parseBool(__pyx_v_s, 0); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 845, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyBool_FromLong(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_r = __pyx_t_2;
   __pyx_t_2 = 0;
@@ -13975,7 +13976,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_4__parseBool(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":853
+/* "lxml/objectify.pyx":854
  *     return value
  * 
  * cdef inline int __parseBoolAsInt(text) except -2:             # <<<<<<<<<<<<<<
@@ -13989,17 +13990,17 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("__parseBoolAsInt", 0);
 
-  /* "lxml/objectify.pyx":854
+  /* "lxml/objectify.pyx":855
  * 
  * cdef inline int __parseBoolAsInt(text) except -2:
  *     if text == 'false':             # <<<<<<<<<<<<<<
  *         return 0
  *     elif text == 'true':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_false, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 854, __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, 855, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":855
+    /* "lxml/objectify.pyx":856
  * cdef inline int __parseBoolAsInt(text) except -2:
  *     if text == 'false':
  *         return 0             # <<<<<<<<<<<<<<
@@ -14009,7 +14010,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":854
+    /* "lxml/objectify.pyx":855
  * 
  * cdef inline int __parseBoolAsInt(text) except -2:
  *     if text == 'false':             # <<<<<<<<<<<<<<
@@ -14018,17 +14019,17 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":856
+  /* "lxml/objectify.pyx":857
  *     if text == 'false':
  *         return 0
  *     elif text == 'true':             # <<<<<<<<<<<<<<
  *         return 1
  *     elif text == '0':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 856, __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, 857, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":857
+    /* "lxml/objectify.pyx":858
  *         return 0
  *     elif text == 'true':
  *         return 1             # <<<<<<<<<<<<<<
@@ -14038,7 +14039,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":856
+    /* "lxml/objectify.pyx":857
  *     if text == 'false':
  *         return 0
  *     elif text == 'true':             # <<<<<<<<<<<<<<
@@ -14047,17 +14048,17 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":858
+  /* "lxml/objectify.pyx":859
  *     elif text == 'true':
  *         return 1
  *     elif text == '0':             # <<<<<<<<<<<<<<
  *         return 0
  *     elif text == '1':
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_0, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 858, __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, 859, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":859
+    /* "lxml/objectify.pyx":860
  *         return 1
  *     elif text == '0':
  *         return 0             # <<<<<<<<<<<<<<
@@ -14067,7 +14068,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
     __pyx_r = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":858
+    /* "lxml/objectify.pyx":859
  *     elif text == 'true':
  *         return 1
  *     elif text == '0':             # <<<<<<<<<<<<<<
@@ -14076,17 +14077,17 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":860
+  /* "lxml/objectify.pyx":861
  *     elif text == '0':
  *         return 0
  *     elif text == '1':             # <<<<<<<<<<<<<<
  *         return 1
  *     return -1
  */
-  __pyx_t_1 = (__Pyx_PyString_Equals(__pyx_v_text, __pyx_kp_s_1, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 860, __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, 861, __pyx_L1_error)
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":861
+    /* "lxml/objectify.pyx":862
  *         return 0
  *     elif text == '1':
  *         return 1             # <<<<<<<<<<<<<<
@@ -14096,7 +14097,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
     __pyx_r = 1;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":860
+    /* "lxml/objectify.pyx":861
  *     elif text == '0':
  *         return 0
  *     elif text == '1':             # <<<<<<<<<<<<<<
@@ -14105,7 +14106,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":862
+  /* "lxml/objectify.pyx":863
  *     elif text == '1':
  *         return 1
  *     return -1             # <<<<<<<<<<<<<<
@@ -14115,7 +14116,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
   __pyx_r = -1;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":853
+  /* "lxml/objectify.pyx":854
  *     return value
  * 
  * cdef inline int __parseBoolAsInt(text) except -2:             # <<<<<<<<<<<<<<
@@ -14132,7 +14133,7 @@ static CYTHON_INLINE int __pyx_f_4lxml_9objectify___parseBoolAsInt(PyObject *__p
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":864
+/* "lxml/objectify.pyx":865
  *     return -1
  * 
  * cdef object _parseNumber(NumberElement element):             # <<<<<<<<<<<<<<
@@ -14149,7 +14150,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_parseNumber", 0);
 
-  /* "lxml/objectify.pyx":865
+  /* "lxml/objectify.pyx":866
  * 
  * cdef object _parseNumber(NumberElement element):
  *     return element._parse_value(textOf(element._c_node))             # <<<<<<<<<<<<<<
@@ -14157,7 +14158,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
  * cdef object _strValueOf(obj):
  */
   __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, 865, __pyx_L1_error)
+  __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, 866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_element->_parse_value);
   __pyx_t_3 = __pyx_v_element->_parse_value; __pyx_t_4 = NULL;
@@ -14173,14 +14174,14 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
   __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_t_2) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_2);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 865, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 866, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":864
+  /* "lxml/objectify.pyx":865
  *     return -1
  * 
  * cdef object _parseNumber(NumberElement element):             # <<<<<<<<<<<<<<
@@ -14202,7 +14203,7 @@ static PyObject *__pyx_f_4lxml_9objectify__parseNumber(struct __pyx_obj_4lxml_9o
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":867
+/* "lxml/objectify.pyx":868
  *     return element._parse_value(textOf(element._c_node))
  * 
  * cdef object _strValueOf(obj):             # <<<<<<<<<<<<<<
@@ -14219,7 +14220,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("_strValueOf", 0);
 
-  /* "lxml/objectify.pyx":868
+  /* "lxml/objectify.pyx":869
  * 
  * cdef object _strValueOf(obj):
  *     if python._isString(obj):             # <<<<<<<<<<<<<<
@@ -14229,7 +14230,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   __pyx_t_1 = (_isString(__pyx_v_obj) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":869
+    /* "lxml/objectify.pyx":870
  * cdef object _strValueOf(obj):
  *     if python._isString(obj):
  *         return obj             # <<<<<<<<<<<<<<
@@ -14241,7 +14242,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
     __pyx_r = __pyx_v_obj;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":868
+    /* "lxml/objectify.pyx":869
  * 
  * cdef object _strValueOf(obj):
  *     if python._isString(obj):             # <<<<<<<<<<<<<<
@@ -14250,7 +14251,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  */
   }
 
-  /* "lxml/objectify.pyx":870
+  /* "lxml/objectify.pyx":871
  *     if python._isString(obj):
  *         return obj
  *     if isinstance(obj, _Element):             # <<<<<<<<<<<<<<
@@ -14261,7 +14262,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":871
+    /* "lxml/objectify.pyx":872
  *         return obj
  *     if isinstance(obj, _Element):
  *         return textOf((<_Element>obj)._c_node) or u''             # <<<<<<<<<<<<<<
@@ -14269,9 +14270,9 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  *         return u''
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_4 = textOf(((struct LxmlElement *)__pyx_v_obj)->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 871, __pyx_L1_error)
+    __pyx_t_4 = textOf(((struct LxmlElement *)__pyx_v_obj)->_c_node); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 872, __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, 871, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_4); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 872, __pyx_L1_error)
     if (!__pyx_t_2) {
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
@@ -14287,7 +14288,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":870
+    /* "lxml/objectify.pyx":871
  *     if python._isString(obj):
  *         return obj
  *     if isinstance(obj, _Element):             # <<<<<<<<<<<<<<
@@ -14296,7 +14297,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  */
   }
 
-  /* "lxml/objectify.pyx":872
+  /* "lxml/objectify.pyx":873
  *     if isinstance(obj, _Element):
  *         return textOf((<_Element>obj)._c_node) or u''
  *     if obj is None:             # <<<<<<<<<<<<<<
@@ -14307,7 +14308,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":873
+    /* "lxml/objectify.pyx":874
  *         return textOf((<_Element>obj)._c_node) or u''
  *     if obj is None:
  *         return u''             # <<<<<<<<<<<<<<
@@ -14319,7 +14320,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
     __pyx_r = __pyx_kp_u_;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":872
+    /* "lxml/objectify.pyx":873
  *     if isinstance(obj, _Element):
  *         return textOf((<_Element>obj)._c_node) or u''
  *     if obj is None:             # <<<<<<<<<<<<<<
@@ -14328,7 +14329,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  */
   }
 
-  /* "lxml/objectify.pyx":874
+  /* "lxml/objectify.pyx":875
  *     if obj is None:
  *         return u''
  *     return unicode(obj)             # <<<<<<<<<<<<<<
@@ -14336,13 +14337,13 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
  * cdef object _numericValueOf(obj):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 874, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Unicode(__pyx_v_obj); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 875, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":867
+  /* "lxml/objectify.pyx":868
  *     return element._parse_value(textOf(element._c_node))
  * 
  * cdef object _strValueOf(obj):             # <<<<<<<<<<<<<<
@@ -14362,7 +14363,7 @@ static PyObject *__pyx_f_4lxml_9objectify__strValueOf(PyObject *__pyx_v_obj) {
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":876
+/* "lxml/objectify.pyx":877
  *     return unicode(obj)
  * 
  * cdef object _numericValueOf(obj):             # <<<<<<<<<<<<<<
@@ -14382,7 +14383,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   int __pyx_t_7;
   __Pyx_RefNannySetupContext("_numericValueOf", 0);
 
-  /* "lxml/objectify.pyx":877
+  /* "lxml/objectify.pyx":878
  * 
  * cdef object _numericValueOf(obj):
  *     if isinstance(obj, NumberElement):             # <<<<<<<<<<<<<<
@@ -14393,7 +14394,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":878
+    /* "lxml/objectify.pyx":879
  * cdef object _numericValueOf(obj):
  *     if isinstance(obj, NumberElement):
  *         return _parseNumber(<NumberElement>obj)             # <<<<<<<<<<<<<<
@@ -14401,13 +14402,13 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *         # not always numeric, but Python will raise the right exception
  */
     __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, 878, __pyx_L1_error)
+    __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, 879, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_r = __pyx_t_3;
     __pyx_t_3 = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":877
+    /* "lxml/objectify.pyx":878
  * 
  * cdef object _numericValueOf(obj):
  *     if isinstance(obj, NumberElement):             # <<<<<<<<<<<<<<
@@ -14416,7 +14417,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  */
   }
 
-  /* "lxml/objectify.pyx":879
+  /* "lxml/objectify.pyx":880
  *     if isinstance(obj, NumberElement):
  *         return _parseNumber(<NumberElement>obj)
  *     try:             # <<<<<<<<<<<<<<
@@ -14432,7 +14433,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "lxml/objectify.pyx":881
+      /* "lxml/objectify.pyx":882
  *     try:
  *         # not always numeric, but Python will raise the right exception
  *         return obj.pyval             # <<<<<<<<<<<<<<
@@ -14440,13 +14441,13 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
  *         pass
  */
       __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, 881, __pyx_L4_error)
+      __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_obj, __pyx_n_s_pyval); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 882, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_3);
       __pyx_r = __pyx_t_3;
       __pyx_t_3 = 0;
       goto __pyx_L8_try_return;
 
-      /* "lxml/objectify.pyx":879
+      /* "lxml/objectify.pyx":880
  *     if isinstance(obj, NumberElement):
  *         return _parseNumber(<NumberElement>obj)
  *     try:             # <<<<<<<<<<<<<<
@@ -14457,7 +14458,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
     __pyx_L4_error:;
     __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":882
+    /* "lxml/objectify.pyx":883
  *         # not always numeric, but Python will raise the right exception
  *         return obj.pyval
  *     except AttributeError:             # <<<<<<<<<<<<<<
@@ -14472,7 +14473,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
 
-    /* "lxml/objectify.pyx":879
+    /* "lxml/objectify.pyx":880
  *     if isinstance(obj, NumberElement):
  *         return _parseNumber(<NumberElement>obj)
  *     try:             # <<<<<<<<<<<<<<
@@ -14497,7 +14498,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
     __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
   }
 
-  /* "lxml/objectify.pyx":884
+  /* "lxml/objectify.pyx":885
  *     except AttributeError:
  *         pass
  *     return obj             # <<<<<<<<<<<<<<
@@ -14509,7 +14510,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   __pyx_r = __pyx_v_obj;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":876
+  /* "lxml/objectify.pyx":877
  *     return unicode(obj)
  * 
  * cdef object _numericValueOf(obj):             # <<<<<<<<<<<<<<
@@ -14528,7 +14529,7 @@ static PyObject *__pyx_f_4lxml_9objectify__numericValueOf(PyObject *__pyx_v_obj)
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":886
+/* "lxml/objectify.pyx":887
  *     return obj
  * 
  * cdef _richcmpPyvals(left, right, int op):             # <<<<<<<<<<<<<<
@@ -14544,31 +14545,31 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
   __Pyx_INCREF(__pyx_v_left);
   __Pyx_INCREF(__pyx_v_right);
 
-  /* "lxml/objectify.pyx":887
+  /* "lxml/objectify.pyx":888
  * 
  * cdef _richcmpPyvals(left, right, int op):
  *     left  = getattr(left,  'pyval', left)             # <<<<<<<<<<<<<<
  *     right = getattr(right, 'pyval', right)
  *     return python.PyObject_RichCompare(left, right, op)
  */
-  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_left, __pyx_n_s_pyval, __pyx_v_left); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 887, __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, 888, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_left, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":888
+  /* "lxml/objectify.pyx":889
  * cdef _richcmpPyvals(left, right, int op):
  *     left  = getattr(left,  'pyval', left)
  *     right = getattr(right, 'pyval', right)             # <<<<<<<<<<<<<<
  *     return python.PyObject_RichCompare(left, right, op)
  * 
  */
-  __pyx_t_1 = __Pyx_GetAttr3(__pyx_v_right, __pyx_n_s_pyval, __pyx_v_right); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 888, __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, 889, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF_SET(__pyx_v_right, __pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":889
+  /* "lxml/objectify.pyx":890
  *     left  = getattr(left,  'pyval', left)
  *     right = getattr(right, 'pyval', right)
  *     return python.PyObject_RichCompare(left, right, op)             # <<<<<<<<<<<<<<
@@ -14576,13 +14577,13 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
  * 
  */
   __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, 889, __pyx_L1_error)
+  __pyx_t_1 = PyObject_RichCompare(__pyx_v_left, __pyx_v_right, __pyx_v_op); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 890, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":886
+  /* "lxml/objectify.pyx":887
  *     return obj
  * 
  * cdef _richcmpPyvals(left, right, int op):             # <<<<<<<<<<<<<<
@@ -14603,7 +14604,7 @@ static PyObject *__pyx_f_4lxml_9objectify__richcmpPyvals(PyObject *__pyx_v_left,
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":920
+/* "lxml/objectify.pyx":921
  *     cdef object _type
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):             # <<<<<<<<<<<<<<
@@ -14649,13 +14650,13 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
         case  1:
         if (likely((values[1] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type_check)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); __PYX_ERR(0, 920, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 1); __PYX_ERR(0, 921, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  2:
         if (likely((values[2] = __Pyx_PyDict_GetItemStr(__pyx_kwds, __pyx_n_s_type_class)) != 0)) kw_args--;
         else {
-          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); __PYX_ERR(0, 920, __pyx_L3_error)
+          __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, 2); __PYX_ERR(0, 921, __pyx_L3_error)
         }
         CYTHON_FALLTHROUGH;
         case  3:
@@ -14665,7 +14666,7 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 920, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 921, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -14685,7 +14686,7 @@ static int __pyx_pw_4lxml_9objectify_6PyType_1__init__(PyObject *__pyx_v_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 920, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 3, 4, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 921, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.PyType.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -14709,7 +14710,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_INCREF(__pyx_v_name);
   __Pyx_INCREF(__pyx_v_stringify);
 
-  /* "lxml/objectify.pyx":921
+  /* "lxml/objectify.pyx":922
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):             # <<<<<<<<<<<<<<
@@ -14720,7 +14721,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":922
+    /* "lxml/objectify.pyx":923
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')             # <<<<<<<<<<<<<<
@@ -14729,14 +14730,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
     if (unlikely(__pyx_v_name == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-      __PYX_ERR(0, 922, __pyx_L1_error)
+      __PYX_ERR(0, 923, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 922, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 923, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":921
+    /* "lxml/objectify.pyx":922
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):
  *         if isinstance(name, bytes):             # <<<<<<<<<<<<<<
@@ -14746,7 +14747,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":923
+  /* "lxml/objectify.pyx":924
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):             # <<<<<<<<<<<<<<
@@ -14757,7 +14758,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_1 = ((!(__pyx_t_2 != 0)) != 0);
   if (unlikely(__pyx_t_1)) {
 
-    /* "lxml/objectify.pyx":924
+    /* "lxml/objectify.pyx":925
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"             # <<<<<<<<<<<<<<
@@ -14765,9 +14766,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *             raise TypeError, u"Type check function must be callable (or None)"
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_name_must_be_a_string, 0, 0);
-    __PYX_ERR(0, 924, __pyx_L1_error)
+    __PYX_ERR(0, 925, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":923
+    /* "lxml/objectify.pyx":924
  *         if isinstance(name, bytes):
  *             name = (<bytes>name).decode('ascii')
  *         elif not isinstance(name, unicode):             # <<<<<<<<<<<<<<
@@ -14777,7 +14778,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":925
+  /* "lxml/objectify.pyx":926
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):             # <<<<<<<<<<<<<<
@@ -14791,13 +14792,13 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     __pyx_t_1 = __pyx_t_4;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 925, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyCallable_Check(__pyx_v_type_check); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 926, __pyx_L1_error)
   __pyx_t_2 = ((!(__pyx_t_4 != 0)) != 0);
   __pyx_t_1 = __pyx_t_2;
   __pyx_L5_bool_binop_done:;
   if (unlikely(__pyx_t_1)) {
 
-    /* "lxml/objectify.pyx":926
+    /* "lxml/objectify.pyx":927
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"             # <<<<<<<<<<<<<<
@@ -14805,9 +14806,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *                not issubclass(type_class, ObjectifiedDataElement):
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Type_check_function_must_be_call, 0, 0);
-    __PYX_ERR(0, 926, __pyx_L1_error)
+    __PYX_ERR(0, 927, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":925
+    /* "lxml/objectify.pyx":926
  *         elif not isinstance(name, unicode):
  *             raise TypeError, u"Type name must be a string"
  *         if type_check is not None and not callable(type_check):             # <<<<<<<<<<<<<<
@@ -14816,33 +14817,33 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "lxml/objectify.pyx":927
+  /* "lxml/objectify.pyx":928
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \
  */
-  __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, 927, __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, 928, __pyx_L1_error)
   if (__pyx_t_2) {
   } else {
     __pyx_t_1 = __pyx_t_2;
     goto __pyx_L8_bool_binop_done;
   }
 
-  /* "lxml/objectify.pyx":928
+  /* "lxml/objectify.pyx":929
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \
  *                not issubclass(type_class, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
  *             raise TypeError, \
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  */
-  __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, 928, __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, 929, __pyx_L1_error)
   __pyx_t_4 = ((!(__pyx_t_2 != 0)) != 0);
   __pyx_t_1 = __pyx_t_4;
   __pyx_L8_bool_binop_done:;
 
-  /* "lxml/objectify.pyx":927
+  /* "lxml/objectify.pyx":928
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
@@ -14851,7 +14852,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   if (unlikely(__pyx_t_1)) {
 
-    /* "lxml/objectify.pyx":929
+    /* "lxml/objectify.pyx":930
  *         if name != TREE_PYTYPE_NAME and \
  *                not issubclass(type_class, ObjectifiedDataElement):
  *             raise TypeError, \             # <<<<<<<<<<<<<<
@@ -14859,9 +14860,9 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  *         self.name  = name
  */
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_Data_classes_must_inherit_from_O, 0, 0);
-    __PYX_ERR(0, 929, __pyx_L1_error)
+    __PYX_ERR(0, 930, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":927
+    /* "lxml/objectify.pyx":928
  *         if type_check is not None and not callable(type_check):
  *             raise TypeError, u"Type check function must be callable (or None)"
  *         if name != TREE_PYTYPE_NAME and \             # <<<<<<<<<<<<<<
@@ -14870,7 +14871,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "lxml/objectify.pyx":931
+  /* "lxml/objectify.pyx":932
  *             raise TypeError, \
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  *         self.name  = name             # <<<<<<<<<<<<<<
@@ -14883,7 +14884,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->name);
   __pyx_v_self->name = __pyx_v_name;
 
-  /* "lxml/objectify.pyx":932
+  /* "lxml/objectify.pyx":933
  *                 u"Data classes must inherit from ObjectifiedDataElement"
  *         self.name  = name
  *         self._type = type_class             # <<<<<<<<<<<<<<
@@ -14896,7 +14897,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->_type);
   __pyx_v_self->_type = __pyx_v_type_class;
 
-  /* "lxml/objectify.pyx":933
+  /* "lxml/objectify.pyx":934
  *         self.name  = name
  *         self._type = type_class
  *         self.type_check = type_check             # <<<<<<<<<<<<<<
@@ -14909,7 +14910,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->type_check);
   __pyx_v_self->type_check = __pyx_v_type_check;
 
-  /* "lxml/objectify.pyx":934
+  /* "lxml/objectify.pyx":935
  *         self._type = type_class
  *         self.type_check = type_check
  *         if stringify is None:             # <<<<<<<<<<<<<<
@@ -14920,7 +14921,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_t_4 = (__pyx_t_1 != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/objectify.pyx":935
+    /* "lxml/objectify.pyx":936
  *         self.type_check = type_check
  *         if stringify is None:
  *             stringify = unicode             # <<<<<<<<<<<<<<
@@ -14930,7 +14931,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
     __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
     __Pyx_DECREF_SET(__pyx_v_stringify, ((PyObject *)(&PyUnicode_Type)));
 
-    /* "lxml/objectify.pyx":934
+    /* "lxml/objectify.pyx":935
  *         self._type = type_class
  *         self.type_check = type_check
  *         if stringify is None:             # <<<<<<<<<<<<<<
@@ -14939,7 +14940,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
  */
   }
 
-  /* "lxml/objectify.pyx":936
+  /* "lxml/objectify.pyx":937
  *         if stringify is None:
  *             stringify = unicode
  *         self.stringify = stringify             # <<<<<<<<<<<<<<
@@ -14952,14 +14953,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __Pyx_DECREF(__pyx_v_self->stringify);
   __pyx_v_self->stringify = __pyx_v_stringify;
 
-  /* "lxml/objectify.pyx":937
+  /* "lxml/objectify.pyx":938
  *             stringify = unicode
  *         self.stringify = stringify
  *         self._schema_types = []             # <<<<<<<<<<<<<<
  * 
  *     def __repr__(self):
  */
-  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 937, __pyx_L1_error)
+  __pyx_t_3 = PyList_New(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 938, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __Pyx_GOTREF(__pyx_v_self->_schema_types);
@@ -14967,7 +14968,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   __pyx_v_self->_schema_types = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":920
+  /* "lxml/objectify.pyx":921
  *     cdef object _type
  *     cdef list _schema_types
  *     def __init__(self, name, type_check, type_class, stringify=None):             # <<<<<<<<<<<<<<
@@ -14989,7 +14990,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType___init__(struct __pyx_obj_4lxml_9ob
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":939
+/* "lxml/objectify.pyx":940
  *         self._schema_types = []
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -15017,7 +15018,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__repr__", 0);
 
-  /* "lxml/objectify.pyx":940
+  /* "lxml/objectify.pyx":941
  * 
  *     def __repr__(self):
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)             # <<<<<<<<<<<<<<
@@ -15025,9 +15026,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
  *     def register(self, before=None, after=None):
  */
   __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, 940, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_self->_type, __pyx_n_s_name_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 940, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 941, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_v_self->name);
   __Pyx_GIVEREF(__pyx_v_self->name);
@@ -15035,14 +15036,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 1, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 940, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyString_Format(__pyx_kp_s_PyType_s_s, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 941, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":939
+  /* "lxml/objectify.pyx":940
  *         self._schema_types = []
  * 
  *     def __repr__(self):             # <<<<<<<<<<<<<<
@@ -15062,7 +15063,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_2__repr__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":942
+/* "lxml/objectify.pyx":943
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
@@ -15111,7 +15112,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_5register(PyObject *__pyx_v_s
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) __PYX_ERR(0, 942, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "register") < 0)) __PYX_ERR(0, 943, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -15128,7 +15129,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_6PyType_5register(PyObject *__pyx_v_s
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 942, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("register", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 943, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.PyType.register", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -15168,17 +15169,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   __Pyx_INCREF(__pyx_v_before);
   __Pyx_INCREF(__pyx_v_after);
 
-  /* "lxml/objectify.pyx":952
+  /* "lxml/objectify.pyx":953
  *         ignored.  Raises ValueError if the dependencies cannot be fulfilled.
  *         """
  *         if self.name == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  */
-  __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, 952, __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, 953, __pyx_L1_error)
   if (unlikely(__pyx_t_1)) {
 
-    /* "lxml/objectify.pyx":953
+    /* "lxml/objectify.pyx":954
  *         """
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"             # <<<<<<<<<<<<<<
@@ -15186,9 +15187,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *             for item in _TYPE_CHECKS:
  */
     __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_Cannot_register_tree_type, 0, 0);
-    __PYX_ERR(0, 953, __pyx_L1_error)
+    __PYX_ERR(0, 954, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":952
+    /* "lxml/objectify.pyx":953
  *         ignored.  Raises ValueError if the dependencies cannot be fulfilled.
  *         """
  *         if self.name == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -15197,7 +15198,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   }
 
-  /* "lxml/objectify.pyx":954
+  /* "lxml/objectify.pyx":955
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:             # <<<<<<<<<<<<<<
@@ -15208,7 +15209,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":955
+    /* "lxml/objectify.pyx":956
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -15217,46 +15218,46 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-      __PYX_ERR(0, 955, __pyx_L1_error)
+      __PYX_ERR(0, 956, __pyx_L1_error)
     }
     __pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
     for (;;) {
       if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 955, __pyx_L1_error)
+      __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 956, __pyx_L1_error)
       #else
-      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 955, __pyx_L1_error)
+      __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 956, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       #endif
       __Pyx_XDECREF_SET(__pyx_v_item, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":956
+      /* "lxml/objectify.pyx":957
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:             # <<<<<<<<<<<<<<
  *                     _TYPE_CHECKS.remove(item)
  *                     break
  */
-      __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, 956, __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, 957, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_2 = (__pyx_t_5 == __pyx_v_self->type_check);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/objectify.pyx":957
+        /* "lxml/objectify.pyx":958
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)             # <<<<<<<<<<<<<<
  *                     break
  *             entry = (self.type_check, self)
  */
-        __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, 957, __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, 958, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "lxml/objectify.pyx":958
+        /* "lxml/objectify.pyx":959
  *                 if item[0] is self.type_check:
  *                     _TYPE_CHECKS.remove(item)
  *                     break             # <<<<<<<<<<<<<<
@@ -15265,7 +15266,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         goto __pyx_L6_break;
 
-        /* "lxml/objectify.pyx":956
+        /* "lxml/objectify.pyx":957
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:
  *                 if item[0] is self.type_check:             # <<<<<<<<<<<<<<
@@ -15274,7 +15275,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
       }
 
-      /* "lxml/objectify.pyx":955
+      /* "lxml/objectify.pyx":956
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:
  *             for item in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -15285,14 +15286,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __pyx_L6_break:;
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":959
+    /* "lxml/objectify.pyx":960
  *                     _TYPE_CHECKS.remove(item)
  *                     break
  *             entry = (self.type_check, self)             # <<<<<<<<<<<<<<
  *             first_pos = 0
  *             last_pos = -1
  */
-    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 959, __pyx_L1_error)
+    __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 960, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_INCREF(__pyx_v_self->type_check);
     __Pyx_GIVEREF(__pyx_v_self->type_check);
@@ -15303,7 +15304,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __pyx_v_entry = ((PyObject*)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":960
+    /* "lxml/objectify.pyx":961
  *                     break
  *             entry = (self.type_check, self)
  *             first_pos = 0             # <<<<<<<<<<<<<<
@@ -15313,7 +15314,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __Pyx_INCREF(__pyx_int_0);
     __pyx_v_first_pos = __pyx_int_0;
 
-    /* "lxml/objectify.pyx":961
+    /* "lxml/objectify.pyx":962
  *             entry = (self.type_check, self)
  *             first_pos = 0
  *             last_pos = -1             # <<<<<<<<<<<<<<
@@ -15323,25 +15324,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     __Pyx_INCREF(__pyx_int_neg_1);
     __pyx_v_last_pos = __pyx_int_neg_1;
 
-    /* "lxml/objectify.pyx":962
+    /* "lxml/objectify.pyx":963
  *             first_pos = 0
  *             last_pos = -1
  *             if before or after:             # <<<<<<<<<<<<<<
  *                 if before is None:
  *                     before = ()
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_before); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 963, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L9_bool_binop_done;
     }
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 962, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_after); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 963, __pyx_L1_error)
     __pyx_t_1 = __pyx_t_2;
     __pyx_L9_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":963
+      /* "lxml/objectify.pyx":964
  *             last_pos = -1
  *             if before or after:
  *                 if before is None:             # <<<<<<<<<<<<<<
@@ -15352,7 +15353,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":964
+        /* "lxml/objectify.pyx":965
  *             if before or after:
  *                 if before is None:
  *                     before = ()             # <<<<<<<<<<<<<<
@@ -15362,7 +15363,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_before, __pyx_empty_tuple);
 
-        /* "lxml/objectify.pyx":963
+        /* "lxml/objectify.pyx":964
  *             last_pos = -1
  *             if before or after:
  *                 if before is None:             # <<<<<<<<<<<<<<
@@ -15372,7 +15373,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         goto __pyx_L11;
       }
 
-      /* "lxml/objectify.pyx":965
+      /* "lxml/objectify.pyx":966
  *                 if before is None:
  *                     before = ()
  *                 elif after is None:             # <<<<<<<<<<<<<<
@@ -15383,7 +15384,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/objectify.pyx":966
+        /* "lxml/objectify.pyx":967
  *                     before = ()
  *                 elif after is None:
  *                     after = ()             # <<<<<<<<<<<<<<
@@ -15393,7 +15394,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __Pyx_INCREF(__pyx_empty_tuple);
         __Pyx_DECREF_SET(__pyx_v_after, __pyx_empty_tuple);
 
-        /* "lxml/objectify.pyx":965
+        /* "lxml/objectify.pyx":966
  *                 if before is None:
  *                     before = ()
  *                 elif after is None:             # <<<<<<<<<<<<<<
@@ -15403,7 +15404,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       }
       __pyx_L11:;
 
-      /* "lxml/objectify.pyx":967
+      /* "lxml/objectify.pyx":968
  *                 elif after is None:
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):             # <<<<<<<<<<<<<<
@@ -15416,9 +15417,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       for (;;) {
         if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_5)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 967, __pyx_L1_error)
+        __pyx_t_6 = PyList_GET_ITEM(__pyx_t_5, __pyx_t_4); __Pyx_INCREF(__pyx_t_6); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 968, __pyx_L1_error)
         #else
-        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 967, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(__pyx_t_5, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 968, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         if ((likely(PyTuple_CheckExact(__pyx_t_6))) || (PyList_CheckExact(__pyx_t_6))) {
@@ -15427,7 +15428,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            __PYX_ERR(0, 967, __pyx_L1_error)
+            __PYX_ERR(0, 968, __pyx_L1_error)
           }
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -15440,15 +15441,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_INCREF(__pyx_t_7);
           __Pyx_INCREF(__pyx_t_8);
           #else
-          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 967, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 968, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
-          __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 967, __pyx_L1_error)
+          __pyx_t_8 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 968, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_8);
           #endif
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 967, __pyx_L1_error)
+          __pyx_t_9 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 968, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_9);
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           __pyx_t_10 = Py_TYPE(__pyx_t_9)->tp_iternext;
@@ -15456,7 +15457,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_GOTREF(__pyx_t_7);
           index = 1; __pyx_t_8 = __pyx_t_10(__pyx_t_9); if (unlikely(!__pyx_t_8)) goto __pyx_L14_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_8);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 967, __pyx_L1_error)
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_10(__pyx_t_9), 2) < 0) __PYX_ERR(0, 968, __pyx_L1_error)
           __pyx_t_10 = NULL;
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           goto __pyx_L15_unpacking_done;
@@ -15464,7 +15465,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
           __pyx_t_10 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          __PYX_ERR(0, 967, __pyx_L1_error)
+          __PYX_ERR(0, 968, __pyx_L1_error)
           __pyx_L15_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_7);
@@ -15473,38 +15474,38 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
         __pyx_t_8 = 0;
         __Pyx_INCREF(__pyx_t_3);
         __Pyx_XDECREF_SET(__pyx_v_i, __pyx_t_3);
-        __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 967, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_t_3, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 968, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF(__pyx_t_3);
         __pyx_t_3 = __pyx_t_6;
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":968
+        /* "lxml/objectify.pyx":969
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:             # <<<<<<<<<<<<<<
  *                         last_pos = i
  *                     if pytype.name in after:
  */
-        __pyx_t_6 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 968, __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, 969, __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, 968, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_6); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 969, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         if (__pyx_t_2) {
         } else {
           __pyx_t_1 = __pyx_t_2;
           goto __pyx_L17_bool_binop_done;
         }
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 968, __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_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 968, __pyx_L1_error)
+        __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_before, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 969, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_11 = (__pyx_t_2 != 0);
         __pyx_t_1 = __pyx_t_11;
         __pyx_L17_bool_binop_done:;
         if (__pyx_t_1) {
 
-          /* "lxml/objectify.pyx":969
+          /* "lxml/objectify.pyx":970
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i             # <<<<<<<<<<<<<<
@@ -15514,7 +15515,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
           __Pyx_INCREF(__pyx_v_i);
           __Pyx_DECREF_SET(__pyx_v_last_pos, __pyx_v_i);
 
-          /* "lxml/objectify.pyx":968
+          /* "lxml/objectify.pyx":969
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):
  *                     if last_pos == -1 and pytype.name in before:             # <<<<<<<<<<<<<<
@@ -15523,33 +15524,33 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         }
 
-        /* "lxml/objectify.pyx":970
+        /* "lxml/objectify.pyx":971
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  *                     if pytype.name in after:             # <<<<<<<<<<<<<<
  *                         first_pos = i+1
  *             if last_pos == -1:
  */
-        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 970, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 971, __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, 970, __pyx_L1_error)
+        __pyx_t_1 = (__Pyx_PySequence_ContainsTF(__pyx_t_6, __pyx_v_after, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 971, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
         __pyx_t_11 = (__pyx_t_1 != 0);
         if (__pyx_t_11) {
 
-          /* "lxml/objectify.pyx":971
+          /* "lxml/objectify.pyx":972
  *                         last_pos = i
  *                     if pytype.name in after:
  *                         first_pos = i+1             # <<<<<<<<<<<<<<
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  */
-          __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 971, __pyx_L1_error)
+          __pyx_t_6 = __Pyx_PyInt_AddObjC(__pyx_v_i, __pyx_int_1, 1, 0, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 972, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_first_pos, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "lxml/objectify.pyx":970
+          /* "lxml/objectify.pyx":971
  *                     if last_pos == -1 and pytype.name in before:
  *                         last_pos = i
  *                     if pytype.name in after:             # <<<<<<<<<<<<<<
@@ -15558,7 +15559,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
         }
 
-        /* "lxml/objectify.pyx":967
+        /* "lxml/objectify.pyx":968
  *                 elif after is None:
  *                     after = ()
  *                 for i, (check, pytype) in enumerate(_TYPE_CHECKS):             # <<<<<<<<<<<<<<
@@ -15569,7 +15570,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":962
+      /* "lxml/objectify.pyx":963
  *             first_pos = 0
  *             last_pos = -1
  *             if before or after:             # <<<<<<<<<<<<<<
@@ -15578,20 +15579,20 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     }
 
-    /* "lxml/objectify.pyx":972
+    /* "lxml/objectify.pyx":973
  *                     if pytype.name in after:
  *                         first_pos = i+1
  *             if last_pos == -1:             # <<<<<<<<<<<<<<
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:
  */
-    __pyx_t_3 = __Pyx_PyInt_EqObjC(__pyx_v_last_pos, __pyx_int_neg_1, -1L, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 972, __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, 973, __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, 972, __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;
     if (__pyx_t_11) {
 
-      /* "lxml/objectify.pyx":973
+      /* "lxml/objectify.pyx":974
  *                         first_pos = i+1
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)             # <<<<<<<<<<<<<<
@@ -15600,11 +15601,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "append");
-        __PYX_ERR(0, 973, __pyx_L1_error)
+        __PYX_ERR(0, 974, __pyx_L1_error)
       }
-      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 973, __pyx_L1_error)
+      __pyx_t_12 = __Pyx_PyList_Append(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 974, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":972
+      /* "lxml/objectify.pyx":973
  *                     if pytype.name in after:
  *                         first_pos = i+1
  *             if last_pos == -1:             # <<<<<<<<<<<<<<
@@ -15614,19 +15615,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
       goto __pyx_L20;
     }
 
-    /* "lxml/objectify.pyx":974
+    /* "lxml/objectify.pyx":975
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:             # <<<<<<<<<<<<<<
  *                 raise ValueError, u"inconsistent before/after dependencies"
  *             else:
  */
-    __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, 974, __pyx_L1_error)
-    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 974, __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, 975, __pyx_L1_error)
+    __pyx_t_11 = __Pyx_PyObject_IsTrue(__pyx_t_3); if (unlikely(__pyx_t_11 < 0)) __PYX_ERR(0, 975, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     if (unlikely(__pyx_t_11)) {
 
-      /* "lxml/objectify.pyx":975
+      /* "lxml/objectify.pyx":976
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:
  *                 raise ValueError, u"inconsistent before/after dependencies"             # <<<<<<<<<<<<<<
@@ -15634,9 +15635,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  *                 _TYPE_CHECKS.insert(last_pos, entry)
  */
       __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_inconsistent_before_after_depend, 0, 0);
-      __PYX_ERR(0, 975, __pyx_L1_error)
+      __PYX_ERR(0, 976, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":974
+      /* "lxml/objectify.pyx":975
  *             if last_pos == -1:
  *                 _TYPE_CHECKS.append(entry)
  *             elif first_pos > last_pos:             # <<<<<<<<<<<<<<
@@ -15645,7 +15646,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     }
 
-    /* "lxml/objectify.pyx":977
+    /* "lxml/objectify.pyx":978
  *                 raise ValueError, u"inconsistent before/after dependencies"
  *             else:
  *                 _TYPE_CHECKS.insert(last_pos, entry)             # <<<<<<<<<<<<<<
@@ -15655,14 +15656,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "insert");
-        __PYX_ERR(0, 977, __pyx_L1_error)
+        __PYX_ERR(0, 978, __pyx_L1_error)
       }
-      __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 977, __pyx_L1_error)
-      __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 977, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyIndex_AsSsize_t(__pyx_v_last_pos); if (unlikely((__pyx_t_4 == (Py_ssize_t)-1) && PyErr_Occurred())) __PYX_ERR(0, 978, __pyx_L1_error)
+      __pyx_t_12 = PyList_Insert(__pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_4, __pyx_v_entry); if (unlikely(__pyx_t_12 == ((int)-1))) __PYX_ERR(0, 978, __pyx_L1_error)
     }
     __pyx_L20:;
 
-    /* "lxml/objectify.pyx":954
+    /* "lxml/objectify.pyx":955
  *         if self.name == TREE_PYTYPE_NAME:
  *             raise ValueError, u"Cannot register tree type"
  *         if self.type_check is not None:             # <<<<<<<<<<<<<<
@@ -15671,7 +15672,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   }
 
-  /* "lxml/objectify.pyx":979
+  /* "lxml/objectify.pyx":980
  *                 _TYPE_CHECKS.insert(last_pos, entry)
  * 
  *         _PYTYPE_DICT[self.name] = self             # <<<<<<<<<<<<<<
@@ -15680,11 +15681,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-    __PYX_ERR(0, 979, __pyx_L1_error)
+    __PYX_ERR(0, 980, __pyx_L1_error)
   }
-  if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 979, __pyx_L1_error)
+  if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 980, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":980
+  /* "lxml/objectify.pyx":981
  * 
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:             # <<<<<<<<<<<<<<
@@ -15693,21 +15694,21 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
   if (unlikely(__pyx_v_self->_schema_types == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 980, __pyx_L1_error)
+    __PYX_ERR(0, 981, __pyx_L1_error)
   }
   __pyx_t_3 = __pyx_v_self->_schema_types; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 980, __pyx_L1_error)
+    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 981, __pyx_L1_error)
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 980, __pyx_L1_error)
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 981, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "lxml/objectify.pyx":981
+    /* "lxml/objectify.pyx":982
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:
  *             _SCHEMA_TYPE_DICT[xs_type] = self             # <<<<<<<<<<<<<<
@@ -15716,11 +15717,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
  */
     if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 981, __pyx_L1_error)
+      __PYX_ERR(0, 982, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 981, __pyx_L1_error)
+    if (unlikely(PyDict_SetItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type, ((PyObject *)__pyx_v_self)) < 0)) __PYX_ERR(0, 982, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":980
+    /* "lxml/objectify.pyx":981
  * 
  *         _PYTYPE_DICT[self.name] = self
  *         for xs_type in self._schema_types:             # <<<<<<<<<<<<<<
@@ -15730,7 +15731,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":942
+  /* "lxml/objectify.pyx":943
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
@@ -15766,7 +15767,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4register(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":983
+/* "lxml/objectify.pyx":984
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
@@ -15809,7 +15810,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("unregister", 0);
 
-  /* "lxml/objectify.pyx":985
+  /* "lxml/objectify.pyx":986
  *     def unregister(self):
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:             # <<<<<<<<<<<<<<
@@ -15818,16 +15819,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-    __PYX_ERR(0, 985, __pyx_L1_error)
+    __PYX_ERR(0, 986, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 985, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 986, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_2 = (__pyx_t_1 == ((PyObject *)__pyx_v_self));
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":986
+    /* "lxml/objectify.pyx":987
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]             # <<<<<<<<<<<<<<
@@ -15836,11 +15837,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 986, __pyx_L1_error)
+      __PYX_ERR(0, 987, __pyx_L1_error)
     }
-    if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0)) __PYX_ERR(0, 986, __pyx_L1_error)
+    if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_self->name) < 0)) __PYX_ERR(0, 987, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":985
+    /* "lxml/objectify.pyx":986
  *     def unregister(self):
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:             # <<<<<<<<<<<<<<
@@ -15849,7 +15850,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   }
 
-  /* "lxml/objectify.pyx":987
+  /* "lxml/objectify.pyx":988
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):             # <<<<<<<<<<<<<<
@@ -15858,11 +15859,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   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, 987, __pyx_L1_error)
+    __PYX_ERR(0, 988, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 987, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Items(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 988, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 987, __pyx_L1_error)
+  __pyx_t_4 = PySequence_List(__pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 988, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_1 = __pyx_t_4; __Pyx_INCREF(__pyx_t_1); __pyx_t_5 = 0;
@@ -15870,9 +15871,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   for (;;) {
     if (__pyx_t_5 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_4 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_5); __Pyx_INCREF(__pyx_t_4); __pyx_t_5++; if (unlikely(0 < 0)) __PYX_ERR(0, 988, __pyx_L1_error)
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 987, __pyx_L1_error)
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_1, __pyx_t_5); __pyx_t_5++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 988, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_4))) || (PyList_CheckExact(__pyx_t_4))) {
@@ -15881,7 +15882,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 987, __pyx_L1_error)
+        __PYX_ERR(0, 988, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -15894,15 +15895,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 988, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 988, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 987, __pyx_L1_error)
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 988, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -15910,7 +15911,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 987, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 988, __pyx_L1_error)
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -15918,7 +15919,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 987, __pyx_L1_error)
+      __PYX_ERR(0, 988, __pyx_L1_error)
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_xs_type, __pyx_t_6);
@@ -15926,7 +15927,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "lxml/objectify.pyx":988
+    /* "lxml/objectify.pyx":989
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:             # <<<<<<<<<<<<<<
@@ -15937,7 +15938,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":989
+      /* "lxml/objectify.pyx":990
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]             # <<<<<<<<<<<<<<
@@ -15946,11 +15947,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
       if (unlikely(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        __PYX_ERR(0, 989, __pyx_L1_error)
+        __PYX_ERR(0, 990, __pyx_L1_error)
       }
-      if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0)) __PYX_ERR(0, 989, __pyx_L1_error)
+      if (unlikely(PyDict_DelItem(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_xs_type) < 0)) __PYX_ERR(0, 990, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":988
+      /* "lxml/objectify.pyx":989
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):
  *             if pytype is self:             # <<<<<<<<<<<<<<
@@ -15959,7 +15960,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
     }
 
-    /* "lxml/objectify.pyx":987
+    /* "lxml/objectify.pyx":988
  *         if _PYTYPE_DICT.get(self.name) is self:
  *             del _PYTYPE_DICT[self.name]
  *         for xs_type, pytype in list(_SCHEMA_TYPE_DICT.items()):             # <<<<<<<<<<<<<<
@@ -15969,7 +15970,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":990
+  /* "lxml/objectify.pyx":991
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:             # <<<<<<<<<<<<<<
@@ -15980,7 +15981,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":991
+    /* "lxml/objectify.pyx":992
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:
  *             return             # <<<<<<<<<<<<<<
@@ -15991,7 +15992,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":990
+    /* "lxml/objectify.pyx":991
  *             if pytype is self:
  *                 del _SCHEMA_TYPE_DICT[xs_type]
  *         if self.type_check is None:             # <<<<<<<<<<<<<<
@@ -16000,7 +16001,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
  */
   }
 
-  /* "lxml/objectify.pyx":992
+  /* "lxml/objectify.pyx":993
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -16016,14 +16017,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XGOTREF(__pyx_t_12);
     /*try:*/ {
 
-      /* "lxml/objectify.pyx":993
+      /* "lxml/objectify.pyx":994
  *             return
  *         try:
  *             _TYPE_CHECKS.remove( (self.type_check, self) )             # <<<<<<<<<<<<<<
  *         except ValueError:
  *             pass
  */
-      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 993, __pyx_L10_error)
+      __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 994, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_1);
       __Pyx_INCREF(__pyx_v_self->type_check);
       __Pyx_GIVEREF(__pyx_v_self->type_check);
@@ -16031,12 +16032,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
       __Pyx_INCREF(((PyObject *)__pyx_v_self));
       __Pyx_GIVEREF(((PyObject *)__pyx_v_self));
       PyTuple_SET_ITEM(__pyx_t_1, 1, ((PyObject *)__pyx_v_self));
-      __pyx_t_4 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 993, __pyx_L10_error)
+      __pyx_t_4 = __Pyx_CallUnboundCMethod1(&__pyx_umethod_PyList_Type_remove, __pyx_v_4lxml_9objectify__TYPE_CHECKS, __pyx_t_1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 994, __pyx_L10_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":992
+      /* "lxml/objectify.pyx":993
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -16055,7 +16056,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "lxml/objectify.pyx":994
+    /* "lxml/objectify.pyx":995
  *         try:
  *             _TYPE_CHECKS.remove( (self.type_check, self) )
  *         except ValueError:             # <<<<<<<<<<<<<<
@@ -16070,7 +16071,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     goto __pyx_L12_except_error;
     __pyx_L12_except_error:;
 
-    /* "lxml/objectify.pyx":992
+    /* "lxml/objectify.pyx":993
  *         if self.type_check is None:
  *             return
  *         try:             # <<<<<<<<<<<<<<
@@ -16090,7 +16091,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
     __pyx_L15_try_end:;
   }
 
-  /* "lxml/objectify.pyx":983
+  /* "lxml/objectify.pyx":984
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
@@ -16117,7 +16118,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_6unregister(struct __pyx_obj_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1002
+/* "lxml/objectify.pyx":1003
  *         Note that this must be set before registering the type!
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16143,7 +16144,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("__get__", 0);
 
-  /* "lxml/objectify.pyx":1003
+  /* "lxml/objectify.pyx":1004
  *         """
  *         def __get__(self):
  *             return self._schema_types             # <<<<<<<<<<<<<<
@@ -16155,7 +16156,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   __pyx_r = __pyx_v_self->_schema_types;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1002
+  /* "lxml/objectify.pyx":1003
  *         Note that this must be set before registering the type!
  *         """
  *         def __get__(self):             # <<<<<<<<<<<<<<
@@ -16170,7 +16171,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes___get__(stru
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1004
+/* "lxml/objectify.pyx":1005
  *         def __get__(self):
  *             return self._schema_types
  *         def __set__(self, types):             # <<<<<<<<<<<<<<
@@ -16198,14 +16199,14 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("__set__", 0);
 
-  /* "lxml/objectify.pyx":1005
+  /* "lxml/objectify.pyx":1006
  *             return self._schema_types
  *         def __set__(self, types):
  *             self._schema_types = list(map(unicode, types))             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1005, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(((PyObject *)(&PyUnicode_Type)));
   __Pyx_GIVEREF(((PyObject *)(&PyUnicode_Type)));
@@ -16213,10 +16214,10 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   __Pyx_INCREF(__pyx_v_types);
   __Pyx_GIVEREF(__pyx_v_types);
   PyTuple_SET_ITEM(__pyx_t_1, 1, __pyx_v_types);
-  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1005, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(__pyx_builtin_map, __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1006, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1005, __pyx_L1_error)
+  __pyx_t_1 = PySequence_List(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1006, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_GIVEREF(__pyx_t_1);
@@ -16225,7 +16226,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   __pyx_v_self->_schema_types = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1004
+  /* "lxml/objectify.pyx":1005
  *         def __get__(self):
  *             return self._schema_types
  *         def __set__(self, types):             # <<<<<<<<<<<<<<
@@ -16246,7 +16247,7 @@ static int __pyx_pf_4lxml_9objectify_6PyType_14xmlSchemaTypes_2__set__(struct __
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":915
+/* "lxml/objectify.pyx":916
  *     matching type will be used.
  *     """
  *     cdef readonly object name             # <<<<<<<<<<<<<<
@@ -16283,7 +16284,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_4name___get__(struct __pyx_ob
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":916
+/* "lxml/objectify.pyx":917
  *     """
  *     cdef readonly object name
  *     cdef readonly object type_check             # <<<<<<<<<<<<<<
@@ -16320,7 +16321,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_10type_check___get__(struct _
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":917
+/* "lxml/objectify.pyx":918
  *     cdef readonly object name
  *     cdef readonly object type_check
  *     cdef readonly object stringify             # <<<<<<<<<<<<<<
@@ -16357,7 +16358,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6PyType_9stringify___get__(struct __p
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1012
+/* "lxml/objectify.pyx":1013
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
@@ -16386,7 +16387,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   int __pyx_t_2;
   __Pyx_RefNannySetupContext("__lower_bool", 0);
 
-  /* "lxml/objectify.pyx":1013
+  /* "lxml/objectify.pyx":1014
  * 
  * def __lower_bool(b):
  *     return u"true" if b else u"false"             # <<<<<<<<<<<<<<
@@ -16394,7 +16395,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
  * cdef _pytypename(obj):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1013, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_b); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1014, __pyx_L1_error)
   if (__pyx_t_2) {
     __Pyx_INCREF(__pyx_n_u_true);
     __pyx_t_1 = __pyx_n_u_true;
@@ -16406,7 +16407,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1012
+  /* "lxml/objectify.pyx":1013
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
@@ -16425,7 +16426,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_6__lower_bool(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1015
+/* "lxml/objectify.pyx":1016
  *     return u"true" if b else u"false"
  * 
  * cdef _pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16440,7 +16441,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_pytypename", 0);
 
-  /* "lxml/objectify.pyx":1016
+  /* "lxml/objectify.pyx":1017
  * 
  * cdef _pytypename(obj):
  *     return u"str" if python._isString(obj) else _typename(obj)             # <<<<<<<<<<<<<<
@@ -16452,7 +16453,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
     __Pyx_INCREF(__pyx_n_u_str);
     __pyx_t_1 = __pyx_n_u_str;
   } else {
-    __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1016, __pyx_L1_error)
+    __pyx_t_2 = __pyx_f_4lxml_9objectify__typename(__pyx_v_obj); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1017, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_t_1 = __pyx_t_2;
     __pyx_t_2 = 0;
@@ -16461,7 +16462,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1015
+  /* "lxml/objectify.pyx":1016
  *     return u"true" if b else u"false"
  * 
  * cdef _pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16481,7 +16482,7 @@ static PyObject *__pyx_f_4lxml_9objectify__pytypename(PyObject *__pyx_v_obj) {
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1018
+/* "lxml/objectify.pyx":1019
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16510,7 +16511,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("pytypename", 0);
 
-  /* "lxml/objectify.pyx":1023
+  /* "lxml/objectify.pyx":1024
  *     Find the name of the corresponding PyType for a Python object.
  *     """
  *     return _pytypename(obj)             # <<<<<<<<<<<<<<
@@ -16518,13 +16519,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
  * cdef _registerPyTypes():
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1023, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v_obj); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1024, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1018
+  /* "lxml/objectify.pyx":1019
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
@@ -16543,7 +16544,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_8pytypename(CYTHON_UNUSED PyObject *_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1025
+/* "lxml/objectify.pyx":1026
  *     return _pytypename(obj)
  * 
  * cdef _registerPyTypes():             # <<<<<<<<<<<<<<
@@ -16560,14 +16561,14 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("_registerPyTypes", 0);
 
-  /* "lxml/objectify.pyx":1026
+  /* "lxml/objectify.pyx":1027
  * 
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",
  *                              u"unsignedByte", u"nonPositiveInteger",
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1026, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1027, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_n_u_int);
   __Pyx_GIVEREF(__pyx_n_u_int);
@@ -16578,29 +16579,29 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1026, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1027, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1027
+  /* "lxml/objectify.pyx":1028
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",             # <<<<<<<<<<<<<<
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) __PYX_ERR(0, 1027, __pyx_L1_error)
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__5) < 0) __PYX_ERR(0, 1028, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1031
+  /* "lxml/objectify.pyx":1032
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  *                              u"unsignedLong", u"unsignedInt", u"positiveInteger",)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # 'long' type just for backwards compatibility
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1031, __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, 1032, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
@@ -16614,19 +16615,19 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_2 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1031, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1032, __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;
 
-  /* "lxml/objectify.pyx":1034
+  /* "lxml/objectify.pyx":1035
  * 
  *     # 'long' type just for backwards compatibility
  *     pytype = PyType(u'long', None, IntElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1034, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_long);
   __Pyx_GIVEREF(__pyx_n_u_long);
@@ -16637,20 +16638,20 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
   PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_IntElement));
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1034, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1035
+  /* "lxml/objectify.pyx":1036
  *     # 'long' type just for backwards compatibility
  *     pytype = PyType(u'long', None, IntElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     pytype = PyType(u'float', float, FloatElement, repr)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1035, __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, 1036, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16664,21 +16665,21 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1035, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1036, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1037
+  /* "lxml/objectify.pyx":1038
  *     pytype.register()
  * 
  *     pytype = PyType(u'float', float, FloatElement, repr)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"double", u"float")
  *     pytype.register()
  */
-  __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_GetBuiltinName(__pyx_n_s_repr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1037, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_float);
   __Pyx_GIVEREF(__pyx_n_u_float);
@@ -16692,29 +16693,29 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 3, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1037, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1038, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1038
+  /* "lxml/objectify.pyx":1039
  * 
  *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) __PYX_ERR(0, 1038, __pyx_L1_error)
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__6) < 0) __PYX_ERR(0, 1039, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1039
+  /* "lxml/objectify.pyx":1040
  *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1039, __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, 1040, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_3 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16728,23 +16729,23 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_1 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1039, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1040, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1041
+  /* "lxml/objectify.pyx":1042
  *     pytype.register()
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"boolean",)
  *     pytype.register()
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_checkBool); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_lower_bool); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_n_u_bool);
   __Pyx_GIVEREF(__pyx_n_u_bool);
@@ -16758,29 +16759,29 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   PyTuple_SET_ITEM(__pyx_t_3, 3, __pyx_t_2);
   __pyx_t_1 = 0;
   __pyx_t_2 = 0;
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1041, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1042, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1042
+  /* "lxml/objectify.pyx":1043
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) __PYX_ERR(0, 1042, __pyx_L1_error)
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__7) < 0) __PYX_ERR(0, 1043, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1043
+  /* "lxml/objectify.pyx":1044
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     pytype = PyType(u'str', None, StringElement)
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1043, __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, 1044, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16794,19 +16795,19 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1043, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1044, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1045
+  /* "lxml/objectify.pyx":1046
  *     pytype.register()
  * 
  *     pytype = PyType(u'str', None, StringElement)             # <<<<<<<<<<<<<<
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1045, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1046, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_str);
   __Pyx_GIVEREF(__pyx_n_u_str);
@@ -16817,29 +16818,29 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
   PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1045, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1046, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1046
+  /* "lxml/objectify.pyx":1047
  * 
  *     pytype = PyType(u'str', None, StringElement)
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",             # <<<<<<<<<<<<<<
  *                              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__8) < 0) __PYX_ERR(0, 1046, __pyx_L1_error)
+  if (__Pyx_PyObject_SetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_xmlSchemaTypes, __pyx_tuple__8) < 0) __PYX_ERR(0, 1047, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1049
+  /* "lxml/objectify.pyx":1050
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # since lxml 2.0
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1049, __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, 1050, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16853,19 +16854,19 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1049, __pyx_L1_error)
+  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1050, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1052
+  /* "lxml/objectify.pyx":1053
  * 
  *     # since lxml 2.0
  *     pytype = PyType(u'NoneType', None, NoneElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1052, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(3); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_n_u_NoneType);
   __Pyx_GIVEREF(__pyx_n_u_NoneType);
@@ -16876,20 +16877,20 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   PyTuple_SET_ITEM(__pyx_t_3, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1052, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_3, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_2));
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1053
+  /* "lxml/objectify.pyx":1054
  *     # since lxml 2.0
  *     pytype = PyType(u'NoneType', None, NoneElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  *     # backwards compatibility
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1053, __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, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_1 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -16903,19 +16904,19 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_3);
   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1053, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1054, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1056
+  /* "lxml/objectify.pyx":1057
  * 
  *     # backwards compatibility
  *     pytype = PyType(u'none', None, NoneElement)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1056, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_INCREF(__pyx_n_u_none);
   __Pyx_GIVEREF(__pyx_n_u_none);
@@ -16926,20 +16927,20 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
   PyTuple_SET_ITEM(__pyx_t_2, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement));
-  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1056, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_2, NULL); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3));
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1057
+  /* "lxml/objectify.pyx":1058
  *     # backwards compatibility
  *     pytype = PyType(u'none', None, NoneElement)
  *     pytype.register()             # <<<<<<<<<<<<<<
  * 
  * # non-registered PyType for inner tree elements
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_pytype), __pyx_n_s_register); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1057, __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, 1058, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_1 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_2))) {
@@ -16953,12 +16954,12 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   }
   __pyx_t_3 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_2);
   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1057, __pyx_L1_error)
+  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1058, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1025
+  /* "lxml/objectify.pyx":1026
  *     return _pytypename(obj)
  * 
  * cdef _registerPyTypes():             # <<<<<<<<<<<<<<
@@ -16982,7 +16983,7 @@ static PyObject *__pyx_f_4lxml_9objectify__registerPyTypes(void) {
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1064
+/* "lxml/objectify.pyx":1065
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
@@ -17026,31 +17027,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   PyObject *(*__pyx_t_11)(PyObject *);
   __Pyx_RefNannySetupContext("getRegisteredTypes", 0);
 
-  /* "lxml/objectify.pyx":1079
+  /* "lxml/objectify.pyx":1080
  *     end of the type list.
  *     """
  *     cdef list types = []             # <<<<<<<<<<<<<<
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1079, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_types = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1080
+  /* "lxml/objectify.pyx":1081
  *     """
  *     cdef list types = []
  *     cdef set known = set()             # <<<<<<<<<<<<<<
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  */
-  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1080, __pyx_L1_error)
+  __pyx_t_1 = PySet_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1081, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_known = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1081
+  /* "lxml/objectify.pyx":1082
  *     cdef list types = []
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17059,15 +17060,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 1081, __pyx_L1_error)
+    __PYX_ERR(0, 1082, __pyx_L1_error)
   }
   __pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_1); __pyx_t_2 = 0;
   for (;;) {
     if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1081, __pyx_L1_error)
+    __pyx_t_3 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_2); __Pyx_INCREF(__pyx_t_3); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1082, __pyx_L1_error)
     #else
-    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1081, __pyx_L1_error)
+    __pyx_t_3 = PySequence_ITEM(__pyx_t_1, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1082, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_3))) || (PyList_CheckExact(__pyx_t_3))) {
@@ -17076,7 +17077,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1081, __pyx_L1_error)
+        __PYX_ERR(0, 1082, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17089,15 +17090,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __Pyx_INCREF(__pyx_t_4);
       __Pyx_INCREF(__pyx_t_5);
       #else
-      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1081, __pyx_L1_error)
+      __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1082, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1081, __pyx_L1_error)
+      __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1082, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       #endif
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1081, __pyx_L1_error)
+      __pyx_t_6 = PyObject_GetIter(__pyx_t_3); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1082, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
       __pyx_t_7 = Py_TYPE(__pyx_t_6)->tp_iternext;
@@ -17105,7 +17106,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __Pyx_GOTREF(__pyx_t_4);
       index = 1; __pyx_t_5 = __pyx_t_7(__pyx_t_6); if (unlikely(!__pyx_t_5)) goto __pyx_L5_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_5);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1081, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_7(__pyx_t_6), 2) < 0) __PYX_ERR(0, 1082, __pyx_L1_error)
       __pyx_t_7 = NULL;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       goto __pyx_L6_unpacking_done;
@@ -17113,7 +17114,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_t_7 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1081, __pyx_L1_error)
+      __PYX_ERR(0, 1082, __pyx_L1_error)
       __pyx_L6_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_check, __pyx_t_4);
@@ -17121,48 +17122,48 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "lxml/objectify.pyx":1082
+    /* "lxml/objectify.pyx":1083
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name             # <<<<<<<<<<<<<<
  *         if name not in known:
  *             known.add(name)
  */
-    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1082, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1083, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":1083
+    /* "lxml/objectify.pyx":1084
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
  *             known.add(name)
  *             types.append(pytype)
  */
-    __pyx_t_8 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_8 < 0)) __PYX_ERR(0, 1083, __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, 1084, __pyx_L1_error)
     __pyx_t_9 = (__pyx_t_8 != 0);
     if (__pyx_t_9) {
 
-      /* "lxml/objectify.pyx":1084
+      /* "lxml/objectify.pyx":1085
  *         name = pytype.name
  *         if name not in known:
  *             known.add(name)             # <<<<<<<<<<<<<<
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():
  */
-      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1084, __pyx_L1_error)
+      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1085, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1085
+      /* "lxml/objectify.pyx":1086
  *         if name not in known:
  *             known.add(name)
  *             types.append(pytype)             # <<<<<<<<<<<<<<
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1085, __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, 1086, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1083
+      /* "lxml/objectify.pyx":1084
  *     for check, pytype in _TYPE_CHECKS:
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
@@ -17171,7 +17172,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
     }
 
-    /* "lxml/objectify.pyx":1081
+    /* "lxml/objectify.pyx":1082
  *     cdef list types = []
  *     cdef set known = set()
  *     for check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17181,7 +17182,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1086
+  /* "lxml/objectify.pyx":1087
  *             known.add(name)
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():             # <<<<<<<<<<<<<<
@@ -17190,17 +17191,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "values");
-    __PYX_ERR(0, 1086, __pyx_L1_error)
+    __PYX_ERR(0, 1087, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_Values(__pyx_v_4lxml_9objectify__PYTYPE_DICT); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_3 = __pyx_t_1; __Pyx_INCREF(__pyx_t_3); __pyx_t_2 = 0;
     __pyx_t_11 = NULL;
   } else {
-    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1086, __pyx_L1_error)
+    __pyx_t_2 = -1; __pyx_t_3 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1087, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
-    __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1086, __pyx_L1_error)
+    __pyx_t_11 = Py_TYPE(__pyx_t_3)->tp_iternext; if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1087, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -17208,17 +17209,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
       if (likely(PyList_CheckExact(__pyx_t_3))) {
         if (__pyx_t_2 >= PyList_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1087, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_2 >= PyTuple_GET_SIZE(__pyx_t_3)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1086, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_3, __pyx_t_2); __Pyx_INCREF(__pyx_t_1); __pyx_t_2++; if (unlikely(0 < 0)) __PYX_ERR(0, 1087, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1086, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_3, __pyx_t_2); __pyx_t_2++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -17228,7 +17229,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1086, __pyx_L1_error)
+          else __PYX_ERR(0, 1087, __pyx_L1_error)
         }
         break;
       }
@@ -17237,48 +17238,48 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1087
+    /* "lxml/objectify.pyx":1088
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name             # <<<<<<<<<<<<<<
  *         if name not in known:
  *             known.add(name)
  */
-    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1087, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_pytype, __pyx_n_s_name); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1088, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1088
+    /* "lxml/objectify.pyx":1089
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
  *             known.add(name)
  *             types.append(pytype)
  */
-    __pyx_t_9 = (__Pyx_PySet_ContainsTF(__pyx_v_name, __pyx_v_known, Py_NE)); if (unlikely(__pyx_t_9 < 0)) __PYX_ERR(0, 1088, __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, 1089, __pyx_L1_error)
     __pyx_t_8 = (__pyx_t_9 != 0);
     if (__pyx_t_8) {
 
-      /* "lxml/objectify.pyx":1089
+      /* "lxml/objectify.pyx":1090
  *         name = pytype.name
  *         if name not in known:
  *             known.add(name)             # <<<<<<<<<<<<<<
  *             types.append(pytype)
  *     return types
  */
-      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1089, __pyx_L1_error)
+      __pyx_t_10 = PySet_Add(__pyx_v_known, __pyx_v_name); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1090, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1090
+      /* "lxml/objectify.pyx":1091
  *         if name not in known:
  *             known.add(name)
  *             types.append(pytype)             # <<<<<<<<<<<<<<
  *     return types
  * 
  */
-      __pyx_t_10 = __Pyx_PyList_Append(__pyx_v_types, __pyx_v_pytype); if (unlikely(__pyx_t_10 == ((int)-1))) __PYX_ERR(0, 1090, __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, 1091, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1088
+      /* "lxml/objectify.pyx":1089
  *     for pytype in _PYTYPE_DICT.values():
  *         name = pytype.name
  *         if name not in known:             # <<<<<<<<<<<<<<
@@ -17287,7 +17288,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
  */
     }
 
-    /* "lxml/objectify.pyx":1086
+    /* "lxml/objectify.pyx":1087
  *             known.add(name)
  *             types.append(pytype)
  *     for pytype in _PYTYPE_DICT.values():             # <<<<<<<<<<<<<<
@@ -17297,7 +17298,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1091
+  /* "lxml/objectify.pyx":1092
  *             known.add(name)
  *             types.append(pytype)
  *     return types             # <<<<<<<<<<<<<<
@@ -17309,7 +17310,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   __pyx_r = __pyx_v_types;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1064
+  /* "lxml/objectify.pyx":1065
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
@@ -17337,7 +17338,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_10getRegisteredTypes(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1093
+/* "lxml/objectify.pyx":1094
  *     return types
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):             # <<<<<<<<<<<<<<
@@ -17365,7 +17366,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("_guessPyType", 0);
 
-  /* "lxml/objectify.pyx":1094
+  /* "lxml/objectify.pyx":1095
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17376,7 +17377,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1095
+    /* "lxml/objectify.pyx":1096
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -17387,7 +17388,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1094
+    /* "lxml/objectify.pyx":1095
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17396,7 +17397,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  */
   }
 
-  /* "lxml/objectify.pyx":1096
+  /* "lxml/objectify.pyx":1097
  *     if value is None:
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17405,15 +17406,15 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 1096, __pyx_L1_error)
+    __PYX_ERR(0, 1097, __pyx_L1_error)
   }
   __pyx_t_3 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_3); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_3)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1096, __pyx_L1_error)
+    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_3, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1097, __pyx_L1_error)
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1096, __pyx_L1_error)
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_3, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1097, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -17422,7 +17423,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1096, __pyx_L1_error)
+        __PYX_ERR(0, 1097, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17435,15 +17436,15 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1096, __pyx_L1_error)
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1096, __pyx_L1_error)
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1096, __pyx_L1_error)
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1097, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -17451,7 +17452,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L6_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1096, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1097, __pyx_L1_error)
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L7_unpacking_done;
@@ -17459,7 +17460,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1096, __pyx_L1_error)
+      __PYX_ERR(0, 1097, __pyx_L1_error)
       __pyx_L7_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
@@ -17467,7 +17468,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
     __Pyx_XDECREF_SET(__pyx_v_tested_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "lxml/objectify.pyx":1097
+    /* "lxml/objectify.pyx":1098
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17483,7 +17484,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_XGOTREF(__pyx_t_12);
       /*try:*/ {
 
-        /* "lxml/objectify.pyx":1098
+        /* "lxml/objectify.pyx":1099
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:
  *             type_check(value)             # <<<<<<<<<<<<<<
@@ -17503,12 +17504,12 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
         }
         __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1098, __pyx_L8_error)
+        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1099, __pyx_L8_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "lxml/objectify.pyx":1099
+        /* "lxml/objectify.pyx":1100
  *         try:
  *             type_check(value)
  *             return <PyType>tested_pytype             # <<<<<<<<<<<<<<
@@ -17521,7 +17522,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
         __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
         goto __pyx_L12_try_return;
 
-        /* "lxml/objectify.pyx":1097
+        /* "lxml/objectify.pyx":1098
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17535,7 +17536,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "lxml/objectify.pyx":1100
+      /* "lxml/objectify.pyx":1101
  *             type_check(value)
  *             return <PyType>tested_pytype
  *         except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -17550,7 +17551,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       goto __pyx_L10_except_error;
       __pyx_L10_except_error:;
 
-      /* "lxml/objectify.pyx":1097
+      /* "lxml/objectify.pyx":1098
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17575,7 +17576,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
       __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
     }
 
-    /* "lxml/objectify.pyx":1096
+    /* "lxml/objectify.pyx":1097
  *     if value is None:
  *         return None
  *     for type_check, tested_pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17585,7 +17586,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1103
+  /* "lxml/objectify.pyx":1104
  *             # could not be parsed as the specified type => ignore
  *             pass
  *     return defaulttype             # <<<<<<<<<<<<<<
@@ -17597,7 +17598,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   __pyx_r = __pyx_v_defaulttype;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1093
+  /* "lxml/objectify.pyx":1094
  *     return types
  * 
  * cdef PyType _guessPyType(value, PyType defaulttype):             # <<<<<<<<<<<<<<
@@ -17622,7 +17623,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__guess
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1105
+/* "lxml/objectify.pyx":1106
  *     return defaulttype
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -17651,19 +17652,19 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   int __pyx_t_13;
   __Pyx_RefNannySetupContext("_guessElementClass", 0);
 
-  /* "lxml/objectify.pyx":1106
+  /* "lxml/objectify.pyx":1107
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)             # <<<<<<<<<<<<<<
  *     if value is None:
  *         return None
  */
-  __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1106, __pyx_L1_error)
+  __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1107, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1107
+  /* "lxml/objectify.pyx":1108
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17674,7 +17675,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1108
+    /* "lxml/objectify.pyx":1109
  *     value = textOf(c_node)
  *     if value is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -17685,7 +17686,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1107
+    /* "lxml/objectify.pyx":1108
  * cdef object _guessElementClass(tree.xmlNode* c_node):
  *     value = textOf(c_node)
  *     if value is None:             # <<<<<<<<<<<<<<
@@ -17694,17 +17695,17 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   }
 
-  /* "lxml/objectify.pyx":1109
+  /* "lxml/objectify.pyx":1110
  *     if value is None:
  *         return None
  *     if value == '':             # <<<<<<<<<<<<<<
  *         return StringElement
  * 
  */
-  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s_, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1109, __pyx_L1_error)
+  __pyx_t_3 = (__Pyx_PyString_Equals(__pyx_v_value, __pyx_kp_s_, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1110, __pyx_L1_error)
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1110
+    /* "lxml/objectify.pyx":1111
  *         return None
  *     if value == '':
  *         return StringElement             # <<<<<<<<<<<<<<
@@ -17716,7 +17717,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1109
+    /* "lxml/objectify.pyx":1110
  *     if value is None:
  *         return None
  *     if value == '':             # <<<<<<<<<<<<<<
@@ -17725,7 +17726,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   }
 
-  /* "lxml/objectify.pyx":1112
+  /* "lxml/objectify.pyx":1113
  *         return StringElement
  * 
  *     for type_check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17734,15 +17735,15 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__TYPE_CHECKS == Py_None)) {
     PyErr_SetString(PyExc_TypeError, "'NoneType' object is not iterable");
-    __PYX_ERR(0, 1112, __pyx_L1_error)
+    __PYX_ERR(0, 1113, __pyx_L1_error)
   }
   __pyx_t_1 = __pyx_v_4lxml_9objectify__TYPE_CHECKS; __Pyx_INCREF(__pyx_t_1); __pyx_t_4 = 0;
   for (;;) {
     if (__pyx_t_4 >= PyList_GET_SIZE(__pyx_t_1)) break;
     #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1112, __pyx_L1_error)
+    __pyx_t_5 = PyList_GET_ITEM(__pyx_t_1, __pyx_t_4); __Pyx_INCREF(__pyx_t_5); __pyx_t_4++; if (unlikely(0 < 0)) __PYX_ERR(0, 1113, __pyx_L1_error)
     #else
-    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1112, __pyx_L1_error)
+    __pyx_t_5 = PySequence_ITEM(__pyx_t_1, __pyx_t_4); __pyx_t_4++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1113, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     #endif
     if ((likely(PyTuple_CheckExact(__pyx_t_5))) || (PyList_CheckExact(__pyx_t_5))) {
@@ -17751,7 +17752,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1112, __pyx_L1_error)
+        __PYX_ERR(0, 1113, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -17764,15 +17765,15 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_INCREF(__pyx_t_6);
       __Pyx_INCREF(__pyx_t_7);
       #else
-      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1112, __pyx_L1_error)
+      __pyx_t_6 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
-      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1112, __pyx_L1_error)
+      __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       #endif
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1112, __pyx_L1_error)
+      __pyx_t_8 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1113, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_8);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __pyx_t_9 = Py_TYPE(__pyx_t_8)->tp_iternext;
@@ -17780,7 +17781,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_GOTREF(__pyx_t_6);
       index = 1; __pyx_t_7 = __pyx_t_9(__pyx_t_8); if (unlikely(!__pyx_t_7)) goto __pyx_L7_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_7);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1112, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_9(__pyx_t_8), 2) < 0) __PYX_ERR(0, 1113, __pyx_L1_error)
       __pyx_t_9 = NULL;
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       goto __pyx_L8_unpacking_done;
@@ -17788,7 +17789,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
       __pyx_t_9 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1112, __pyx_L1_error)
+      __PYX_ERR(0, 1113, __pyx_L1_error)
       __pyx_L8_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_type_check, __pyx_t_6);
@@ -17796,7 +17797,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
     __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_7);
     __pyx_t_7 = 0;
 
-    /* "lxml/objectify.pyx":1113
+    /* "lxml/objectify.pyx":1114
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17812,7 +17813,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_XGOTREF(__pyx_t_12);
       /*try:*/ {
 
-        /* "lxml/objectify.pyx":1114
+        /* "lxml/objectify.pyx":1115
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:
  *             type_check(value)             # <<<<<<<<<<<<<<
@@ -17832,12 +17833,12 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
         }
         __pyx_t_5 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_6, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1114, __pyx_L9_error)
+        if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1115, __pyx_L9_error)
         __Pyx_GOTREF(__pyx_t_5);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-        /* "lxml/objectify.pyx":1115
+        /* "lxml/objectify.pyx":1116
  *         try:
  *             type_check(value)
  *             return (<PyType>pytype)._type             # <<<<<<<<<<<<<<
@@ -17850,7 +17851,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
         __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         goto __pyx_L13_try_return;
 
-        /* "lxml/objectify.pyx":1113
+        /* "lxml/objectify.pyx":1114
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17864,7 +17865,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-      /* "lxml/objectify.pyx":1116
+      /* "lxml/objectify.pyx":1117
  *             type_check(value)
  *             return (<PyType>pytype)._type
  *         except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -17879,7 +17880,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       goto __pyx_L11_except_error;
       __pyx_L11_except_error:;
 
-      /* "lxml/objectify.pyx":1113
+      /* "lxml/objectify.pyx":1114
  * 
  *     for type_check, pytype in _TYPE_CHECKS:
  *         try:             # <<<<<<<<<<<<<<
@@ -17904,7 +17905,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
       __Pyx_ExceptionReset(__pyx_t_10, __pyx_t_11, __pyx_t_12);
     }
 
-    /* "lxml/objectify.pyx":1112
+    /* "lxml/objectify.pyx":1113
  *         return StringElement
  * 
  *     for type_check, pytype in _TYPE_CHECKS:             # <<<<<<<<<<<<<<
@@ -17914,7 +17915,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1118
+  /* "lxml/objectify.pyx":1119
  *         except IGNORABLE_ERRORS:
  *             pass
  *     return None             # <<<<<<<<<<<<<<
@@ -17925,7 +17926,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   __pyx_r = Py_None; __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1105
+  /* "lxml/objectify.pyx":1106
  *     return defaulttype
  * 
  * cdef object _guessElementClass(tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -17951,7 +17952,7 @@ static PyObject *__pyx_f_4lxml_9objectify__guessElementClass(xmlNode *__pyx_v_c_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1131
+/* "lxml/objectify.pyx":1132
  *     cdef bint _annotate
  * 
  *     def __call__(self, *children, **attrib):             # <<<<<<<<<<<<<<
@@ -18013,7 +18014,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   PyObject *(*__pyx_t_13)(PyObject *);
   __Pyx_RefNannySetupContext("__call__", 0);
 
-  /* "lxml/objectify.pyx":1138
+  /* "lxml/objectify.pyx":1139
  *         cdef bint has_children
  *         cdef bint has_string_value
  *         if self._element_factory is None:             # <<<<<<<<<<<<<<
@@ -18024,7 +18025,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1139
+    /* "lxml/objectify.pyx":1140
  *         cdef bint has_string_value
  *         if self._element_factory is None:
  *             element = _makeElement(self._tag, None, attrib, self._nsmap)             # <<<<<<<<<<<<<<
@@ -18035,14 +18036,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __Pyx_INCREF(__pyx_t_3);
     __pyx_t_4 = __pyx_v_self->_nsmap;
     __Pyx_INCREF(__pyx_t_4);
-    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1139, __pyx_L1_error)
+    __pyx_t_5 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_t_3, Py_None, __pyx_v_attrib, __pyx_t_4)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1140, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_5);
     __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
     __pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
     __pyx_t_5 = 0;
 
-    /* "lxml/objectify.pyx":1138
+    /* "lxml/objectify.pyx":1139
  *         cdef bint has_children
  *         cdef bint has_string_value
  *         if self._element_factory is None:             # <<<<<<<<<<<<<<
@@ -18052,7 +18053,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1141
+  /* "lxml/objectify.pyx":1142
  *             element = _makeElement(self._tag, None, attrib, self._nsmap)
  *         else:
  *             element = self._element_factory(self._tag, attrib, self._nsmap)             # <<<<<<<<<<<<<<
@@ -18076,7 +18077,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     #if CYTHON_FAST_PYCALL
     if (PyFunction_Check(__pyx_t_4)) {
       PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_self->_tag, __pyx_v_attrib, __pyx_v_self->_nsmap};
-      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1142, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_GOTREF(__pyx_t_5);
     } else
@@ -18084,13 +18085,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     #if CYTHON_FAST_PYCCALL
     if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
       PyObject *__pyx_temp[4] = {__pyx_t_3, __pyx_v_self->_tag, __pyx_v_attrib, __pyx_v_self->_nsmap};
-      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 3+__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1142, __pyx_L1_error)
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
       __Pyx_GOTREF(__pyx_t_5);
     } else
     #endif
     {
-      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1141, __pyx_L1_error)
+      __pyx_t_7 = PyTuple_New(3+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1142, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       if (__pyx_t_3) {
         __Pyx_GIVEREF(__pyx_t_3); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_3); __pyx_t_3 = NULL;
@@ -18104,18 +18105,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __Pyx_INCREF(__pyx_v_self->_nsmap);
       __Pyx_GIVEREF(__pyx_v_self->_nsmap);
       PyTuple_SET_ITEM(__pyx_t_7, 2+__pyx_t_6, __pyx_v_self->_nsmap);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1141, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1142, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
     }
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1141, __pyx_L1_error)
+    if (!(likely(((__pyx_t_5) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_5, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1142, __pyx_L1_error)
     __pyx_v_element = ((struct LxmlElement *)__pyx_t_5);
     __pyx_t_5 = 0;
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1143
+  /* "lxml/objectify.pyx":1144
  *             element = self._element_factory(self._tag, attrib, self._nsmap)
  * 
  *         pytype_name = None             # <<<<<<<<<<<<<<
@@ -18125,7 +18126,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype_name = Py_None;
 
-  /* "lxml/objectify.pyx":1144
+  /* "lxml/objectify.pyx":1145
  * 
  *         pytype_name = None
  *         has_children = False             # <<<<<<<<<<<<<<
@@ -18134,7 +18135,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   __pyx_v_has_children = 0;
 
-  /* "lxml/objectify.pyx":1145
+  /* "lxml/objectify.pyx":1146
  *         pytype_name = None
  *         has_children = False
  *         has_string_value = False             # <<<<<<<<<<<<<<
@@ -18143,7 +18144,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   __pyx_v_has_string_value = 0;
 
-  /* "lxml/objectify.pyx":1146
+  /* "lxml/objectify.pyx":1147
  *         has_children = False
  *         has_string_value = False
  *         for child in children:             # <<<<<<<<<<<<<<
@@ -18154,15 +18155,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   for (;;) {
     if (__pyx_t_8 >= 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_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_4 = PyTuple_GET_ITEM(__pyx_t_5, __pyx_t_8); __Pyx_INCREF(__pyx_t_4); __pyx_t_8++; if (unlikely(0 < 0)) __PYX_ERR(0, 1147, __pyx_L1_error)
     #else
-    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1146, __pyx_L1_error)
+    __pyx_t_4 = PySequence_ITEM(__pyx_t_5, __pyx_t_8); __pyx_t_8++; if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1147, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     #endif
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1147
+    /* "lxml/objectify.pyx":1148
  *         has_string_value = False
  *         for child in children:
  *             if child is None:             # <<<<<<<<<<<<<<
@@ -18173,18 +18174,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1148
+      /* "lxml/objectify.pyx":1149
  *         for child in children:
  *             if child is None:
  *                 if len(children) == 1:             # <<<<<<<<<<<<<<
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  */
-      __pyx_t_9 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1148, __pyx_L1_error)
+      __pyx_t_9 = PyTuple_GET_SIZE(__pyx_v_children); if (unlikely(__pyx_t_9 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1149, __pyx_L1_error)
       __pyx_t_1 = ((__pyx_t_9 == 1) != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/objectify.pyx":1150
+        /* "lxml/objectify.pyx":1151
  *                 if len(children) == 1:
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")             # <<<<<<<<<<<<<<
@@ -18194,17 +18195,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_4 = __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR;
         __Pyx_INCREF(__pyx_t_4);
 
-        /* "lxml/objectify.pyx":1149
+        /* "lxml/objectify.pyx":1150
  *             if child is None:
  *                 if len(children) == 1:
  *                     cetree.setAttributeValue(             # <<<<<<<<<<<<<<
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):
  */
-        __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_4, __pyx_n_u_true); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1149, __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, 1150, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "lxml/objectify.pyx":1148
+        /* "lxml/objectify.pyx":1149
  *         for child in children:
  *             if child is None:
  *                 if len(children) == 1:             # <<<<<<<<<<<<<<
@@ -18213,7 +18214,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       }
 
-      /* "lxml/objectify.pyx":1147
+      /* "lxml/objectify.pyx":1148
  *         has_string_value = False
  *         for child in children:
  *             if child is None:             # <<<<<<<<<<<<<<
@@ -18223,7 +18224,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "lxml/objectify.pyx":1151
+    /* "lxml/objectify.pyx":1152
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):             # <<<<<<<<<<<<<<
@@ -18233,18 +18234,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (_isString(__pyx_v_child) != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1152
+      /* "lxml/objectify.pyx":1153
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):
  *                 _add_text(element, child)             # <<<<<<<<<<<<<<
  *                 has_string_value = True
  *             elif isinstance(child, _Element):
  */
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1152, __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, 1153, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1153
+      /* "lxml/objectify.pyx":1154
  *             elif python._isString(child):
  *                 _add_text(element, child)
  *                 has_string_value = True             # <<<<<<<<<<<<<<
@@ -18253,7 +18254,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_string_value = 1;
 
-      /* "lxml/objectify.pyx":1151
+      /* "lxml/objectify.pyx":1152
  *                     cetree.setAttributeValue(
  *                         element, XML_SCHEMA_INSTANCE_NIL_ATTR, u"true")
  *             elif python._isString(child):             # <<<<<<<<<<<<<<
@@ -18263,7 +18264,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "lxml/objectify.pyx":1154
+    /* "lxml/objectify.pyx":1155
  *                 _add_text(element, child)
  *                 has_string_value = True
  *             elif isinstance(child, _Element):             # <<<<<<<<<<<<<<
@@ -18274,16 +18275,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1155
+      /* "lxml/objectify.pyx":1156
  *                 has_string_value = True
  *             elif isinstance(child, _Element):
  *                 cetree.appendChildToElement(element, <_Element>child)             # <<<<<<<<<<<<<<
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  */
-      __pyx_t_6 = appendChildToElement(__pyx_v_element, ((struct LxmlElement *)__pyx_v_child)); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1155, __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, 1156, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1156
+      /* "lxml/objectify.pyx":1157
  *             elif isinstance(child, _Element):
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True             # <<<<<<<<<<<<<<
@@ -18292,7 +18293,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_children = 1;
 
-      /* "lxml/objectify.pyx":1154
+      /* "lxml/objectify.pyx":1155
  *                 _add_text(element, child)
  *                 has_string_value = True
  *             elif isinstance(child, _Element):             # <<<<<<<<<<<<<<
@@ -18302,7 +18303,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "lxml/objectify.pyx":1157
+    /* "lxml/objectify.pyx":1158
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):             # <<<<<<<<<<<<<<
@@ -18313,7 +18314,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1158
+      /* "lxml/objectify.pyx":1159
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child             # <<<<<<<<<<<<<<
@@ -18325,7 +18326,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __Pyx_XDECREF_SET(__pyx_v_elementMaker, ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_4));
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1159
+      /* "lxml/objectify.pyx":1160
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:             # <<<<<<<<<<<<<<
@@ -18336,7 +18337,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1160
+        /* "lxml/objectify.pyx":1161
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:
  *                     cetree.makeSubElement(element, elementMaker._tag,             # <<<<<<<<<<<<<<
@@ -18346,19 +18347,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_4 = __pyx_v_elementMaker->_tag;
         __Pyx_INCREF(__pyx_t_4);
 
-        /* "lxml/objectify.pyx":1161
+        /* "lxml/objectify.pyx":1162
  *                 if elementMaker._element_factory is None:
  *                     cetree.makeSubElement(element, elementMaker._tag,
  *                                           None, None, None, None)             # <<<<<<<<<<<<<<
  *                 else:
  *                     childElement = elementMaker._element_factory(
  */
-        __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, 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, 1161, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
 
-        /* "lxml/objectify.pyx":1159
+        /* "lxml/objectify.pyx":1160
  *             elif isinstance(child, _ObjectifyElementMakerCaller):
  *                 elementMaker = <_ObjectifyElementMakerCaller>child
  *                 if elementMaker._element_factory is None:             # <<<<<<<<<<<<<<
@@ -18368,7 +18369,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         goto __pyx_L8;
       }
 
-      /* "lxml/objectify.pyx":1163
+      /* "lxml/objectify.pyx":1164
  *                                           None, None, None, None)
  *                 else:
  *                     childElement = elementMaker._element_factory(             # <<<<<<<<<<<<<<
@@ -18377,7 +18378,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       /*else*/ {
 
-        /* "lxml/objectify.pyx":1164
+        /* "lxml/objectify.pyx":1165
  *                 else:
  *                     childElement = elementMaker._element_factory(
  *                         elementMaker._tag)             # <<<<<<<<<<<<<<
@@ -18397,33 +18398,33 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         }
         __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_3, __pyx_v_elementMaker->_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_elementMaker->_tag);
         __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1163, __pyx_L1_error)
+        if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1164, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "lxml/objectify.pyx":1163
+        /* "lxml/objectify.pyx":1164
  *                                           None, None, None, None)
  *                 else:
  *                     childElement = elementMaker._element_factory(             # <<<<<<<<<<<<<<
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  */
-        if (!(likely(((__pyx_t_7) == Py_None) || likely(__Pyx_TypeTest(__pyx_t_7, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1163, __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, 1164, __pyx_L1_error)
         __Pyx_XDECREF_SET(__pyx_v_childElement, ((struct LxmlElement *)__pyx_t_7));
         __pyx_t_7 = 0;
 
-        /* "lxml/objectify.pyx":1165
+        /* "lxml/objectify.pyx":1166
  *                     childElement = elementMaker._element_factory(
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)             # <<<<<<<<<<<<<<
  *                 has_children = True
  *             elif isinstance(child, dict):
  */
-        __pyx_t_6 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1165, __pyx_L1_error)
+        __pyx_t_6 = appendChildToElement(__pyx_v_element, __pyx_v_childElement); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1166, __pyx_L1_error)
       }
       __pyx_L8:;
 
-      /* "lxml/objectify.pyx":1166
+      /* "lxml/objectify.pyx":1167
  *                         elementMaker._tag)
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True             # <<<<<<<<<<<<<<
@@ -18432,7 +18433,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       __pyx_v_has_children = 1;
 
-      /* "lxml/objectify.pyx":1157
+      /* "lxml/objectify.pyx":1158
  *                 cetree.appendChildToElement(element, <_Element>child)
  *                 has_children = True
  *             elif isinstance(child, _ObjectifyElementMakerCaller):             # <<<<<<<<<<<<<<
@@ -18442,7 +18443,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "lxml/objectify.pyx":1167
+    /* "lxml/objectify.pyx":1168
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True
  *             elif isinstance(child, dict):             # <<<<<<<<<<<<<<
@@ -18453,14 +18454,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1168
+      /* "lxml/objectify.pyx":1169
  *                 has_children = True
  *             elif isinstance(child, dict):
  *                 for name, value in child.items():             # <<<<<<<<<<<<<<
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1168, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_child, __pyx_n_s_items); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1169, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_3 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -18474,16 +18475,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       }
       __pyx_t_7 = (__pyx_t_3) ? __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallNoArg(__pyx_t_4);
       __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1168, __pyx_L1_error)
+      if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1169, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       if (likely(PyList_CheckExact(__pyx_t_7)) || PyTuple_CheckExact(__pyx_t_7)) {
         __pyx_t_4 = __pyx_t_7; __Pyx_INCREF(__pyx_t_4); __pyx_t_9 = 0;
         __pyx_t_10 = NULL;
       } else {
-        __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1168, __pyx_L1_error)
+        __pyx_t_9 = -1; __pyx_t_4 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1169, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1168, __pyx_L1_error)
+        __pyx_t_10 = Py_TYPE(__pyx_t_4)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1169, __pyx_L1_error)
       }
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       for (;;) {
@@ -18491,17 +18492,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           if (likely(PyList_CheckExact(__pyx_t_4))) {
             if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1168, __pyx_L1_error)
+            __pyx_t_7 = PyList_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1169, __pyx_L1_error)
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1168, __pyx_L1_error)
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1169, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_7);
             #endif
           } else {
             if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_4)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1168, __pyx_L1_error)
+            __pyx_t_7 = PyTuple_GET_ITEM(__pyx_t_4, __pyx_t_9); __Pyx_INCREF(__pyx_t_7); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1169, __pyx_L1_error)
             #else
-            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1168, __pyx_L1_error)
+            __pyx_t_7 = PySequence_ITEM(__pyx_t_4, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1169, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_7);
             #endif
           }
@@ -18511,7 +18512,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else __PYX_ERR(0, 1168, __pyx_L1_error)
+              else __PYX_ERR(0, 1169, __pyx_L1_error)
             }
             break;
           }
@@ -18523,7 +18524,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            __PYX_ERR(0, 1168, __pyx_L1_error)
+            __PYX_ERR(0, 1169, __pyx_L1_error)
           }
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -18536,15 +18537,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_INCREF(__pyx_t_3);
           __Pyx_INCREF(__pyx_t_11);
           #else
-          __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1168, __pyx_L1_error)
+          __pyx_t_3 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1169, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_3);
-          __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1168, __pyx_L1_error)
+          __pyx_t_11 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1169, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           #endif
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1168, __pyx_L1_error)
+          __pyx_t_12 = PyObject_GetIter(__pyx_t_7); if (unlikely(!__pyx_t_12)) __PYX_ERR(0, 1169, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_12);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_13 = Py_TYPE(__pyx_t_12)->tp_iternext;
@@ -18552,7 +18553,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_GOTREF(__pyx_t_3);
           index = 1; __pyx_t_11 = __pyx_t_13(__pyx_t_12); if (unlikely(!__pyx_t_11)) goto __pyx_L11_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_11);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 1168, __pyx_L1_error)
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_13(__pyx_t_12), 2) < 0) __PYX_ERR(0, 1169, __pyx_L1_error)
           __pyx_t_13 = NULL;
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           goto __pyx_L12_unpacking_done;
@@ -18560,7 +18561,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           __Pyx_DECREF(__pyx_t_12); __pyx_t_12 = 0;
           __pyx_t_13 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          __PYX_ERR(0, 1168, __pyx_L1_error)
+          __PYX_ERR(0, 1169, __pyx_L1_error)
           __pyx_L12_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_3);
@@ -18568,18 +18569,18 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __Pyx_XDECREF_SET(__pyx_v_value, __pyx_t_11);
         __pyx_t_11 = 0;
 
-        /* "lxml/objectify.pyx":1170
+        /* "lxml/objectify.pyx":1171
  *                 for name, value in child.items():
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:             # <<<<<<<<<<<<<<
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  */
-        __pyx_t_1 = (__Pyx_PyDict_ContainsTF(__pyx_v_name, __pyx_v_attrib, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1170, __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, 1171, __pyx_L1_error)
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "lxml/objectify.pyx":1171
+          /* "lxml/objectify.pyx":1172
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:
  *                         continue             # <<<<<<<<<<<<<<
@@ -18588,7 +18589,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
           goto __pyx_L9_continue;
 
-          /* "lxml/objectify.pyx":1170
+          /* "lxml/objectify.pyx":1171
  *                 for name, value in child.items():
  *                     # keyword arguments in attrib take precedence
  *                     if name in attrib:             # <<<<<<<<<<<<<<
@@ -18597,7 +18598,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         }
 
-        /* "lxml/objectify.pyx":1172
+        /* "lxml/objectify.pyx":1173
  *                     if name in attrib:
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))             # <<<<<<<<<<<<<<
@@ -18606,17 +18607,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-          __PYX_ERR(0, 1172, __pyx_L1_error)
+          __PYX_ERR(0, 1173, __pyx_L1_error)
         }
-        __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1172, __pyx_L1_error)
+        __pyx_t_7 = __pyx_f_4lxml_9objectify__typename(__pyx_v_value); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1173, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
-        __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1172, __pyx_L1_error)
+        __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_7, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1173, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_11);
         __pyx_t_11 = 0;
 
-        /* "lxml/objectify.pyx":1173
+        /* "lxml/objectify.pyx":1174
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18627,7 +18628,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_1 = (__pyx_t_2 != 0);
         if (__pyx_t_1) {
 
-          /* "lxml/objectify.pyx":1174
+          /* "lxml/objectify.pyx":1175
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)             # <<<<<<<<<<<<<<
@@ -18647,13 +18648,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           }
           __pyx_t_11 = (__pyx_t_3) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_3, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
           __Pyx_XDECREF(__pyx_t_3); __pyx_t_3 = 0;
-          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1174, __pyx_L1_error)
+          if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1175, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_11);
           __pyx_t_11 = 0;
 
-          /* "lxml/objectify.pyx":1173
+          /* "lxml/objectify.pyx":1174
  *                         continue
  *                     pytype = _PYTYPE_DICT.get(_typename(value))
  *                     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18663,7 +18664,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
           goto __pyx_L14;
         }
 
-        /* "lxml/objectify.pyx":1175
+        /* "lxml/objectify.pyx":1176
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):             # <<<<<<<<<<<<<<
@@ -18673,19 +18674,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         __pyx_t_1 = ((!(_isString(__pyx_v_value) != 0)) != 0);
         if (__pyx_t_1) {
 
-          /* "lxml/objectify.pyx":1176
+          /* "lxml/objectify.pyx":1177
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):
  *                         value = unicode(value)             # <<<<<<<<<<<<<<
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  */
-          __pyx_t_11 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1176, __pyx_L1_error)
+          __pyx_t_11 = __Pyx_PyObject_Unicode(__pyx_v_value); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1177, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_11);
           __pyx_t_11 = 0;
 
-          /* "lxml/objectify.pyx":1175
+          /* "lxml/objectify.pyx":1176
  *                     if pytype is not None:
  *                         value = (<PyType>pytype).stringify(value)
  *                     elif not python._isString(value):             # <<<<<<<<<<<<<<
@@ -18695,16 +18696,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         }
         __pyx_L14:;
 
-        /* "lxml/objectify.pyx":1177
+        /* "lxml/objectify.pyx":1178
  *                     elif not python._isString(value):
  *                         value = unicode(value)
  *                     cetree.setAttributeValue(element, name, value)             # <<<<<<<<<<<<<<
  *             else:
  *                 if pytype_name is not None:
  */
-        __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_v_name, __pyx_v_value); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1177, __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, 1178, __pyx_L1_error)
 
-        /* "lxml/objectify.pyx":1168
+        /* "lxml/objectify.pyx":1169
  *                 has_children = True
  *             elif isinstance(child, dict):
  *                 for name, value in child.items():             # <<<<<<<<<<<<<<
@@ -18715,7 +18716,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       }
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1167
+      /* "lxml/objectify.pyx":1168
  *                     cetree.appendChildToElement(element, childElement)
  *                 has_children = True
  *             elif isinstance(child, dict):             # <<<<<<<<<<<<<<
@@ -18725,7 +18726,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L6;
     }
 
-    /* "lxml/objectify.pyx":1179
+    /* "lxml/objectify.pyx":1180
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  *                 if pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18737,7 +18738,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_2 = (__pyx_t_1 != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1181
+        /* "lxml/objectify.pyx":1182
  *                 if pytype_name is not None:
  *                     # concatenation always makes the result a string
  *                     has_string_value = True             # <<<<<<<<<<<<<<
@@ -18746,7 +18747,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
         __pyx_v_has_string_value = 1;
 
-        /* "lxml/objectify.pyx":1179
+        /* "lxml/objectify.pyx":1180
  *                     cetree.setAttributeValue(element, name, value)
  *             else:
  *                 if pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18755,19 +18756,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       }
 
-      /* "lxml/objectify.pyx":1182
+      /* "lxml/objectify.pyx":1183
  *                     # concatenation always makes the result a string
  *                     has_string_value = True
  *                 pytype_name = _typename(child)             # <<<<<<<<<<<<<<
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:
  */
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1182, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1183, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_pytype_name, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1183
+      /* "lxml/objectify.pyx":1184
  *                     has_string_value = True
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))             # <<<<<<<<<<<<<<
@@ -18776,17 +18777,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-        __PYX_ERR(0, 1183, __pyx_L1_error)
+        __PYX_ERR(0, 1184, __pyx_L1_error)
       }
-      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1183, __pyx_L1_error)
+      __pyx_t_4 = __pyx_f_4lxml_9objectify__typename(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1184, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1183, __pyx_L1_error)
+      __pyx_t_11 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_t_4, Py_None); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1184, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_11);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_XDECREF_SET(__pyx_v_pytype, __pyx_t_11);
       __pyx_t_11 = 0;
 
-      /* "lxml/objectify.pyx":1184
+      /* "lxml/objectify.pyx":1185
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18797,7 +18798,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/objectify.pyx":1185
+        /* "lxml/objectify.pyx":1186
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:
  *                     _add_text(element, (<PyType>pytype).stringify(child))             # <<<<<<<<<<<<<<
@@ -18817,15 +18818,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         }
         __pyx_t_11 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_7, __pyx_v_child) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_child);
         __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
-        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1185, __pyx_L1_error)
+        if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1186, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_11);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-        __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1185, __pyx_L1_error)
+        __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_t_11); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1186, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-        /* "lxml/objectify.pyx":1184
+        /* "lxml/objectify.pyx":1185
  *                 pytype_name = _typename(child)
  *                 pytype = _PYTYPE_DICT.get(_typename(child))
  *                 if pytype is not None:             # <<<<<<<<<<<<<<
@@ -18835,7 +18836,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
         goto __pyx_L16;
       }
 
-      /* "lxml/objectify.pyx":1187
+      /* "lxml/objectify.pyx":1188
  *                     _add_text(element, (<PyType>pytype).stringify(child))
  *                 else:
  *                     has_string_value = True             # <<<<<<<<<<<<<<
@@ -18845,26 +18846,26 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       /*else*/ {
         __pyx_v_has_string_value = 1;
 
-        /* "lxml/objectify.pyx":1188
+        /* "lxml/objectify.pyx":1189
  *                 else:
  *                     has_string_value = True
  *                     child = unicode(child)             # <<<<<<<<<<<<<<
  *                     _add_text(element, child)
  * 
  */
-        __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1188, __pyx_L1_error)
+        __pyx_t_4 = __Pyx_PyObject_Unicode(__pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF_SET(__pyx_v_child, __pyx_t_4);
         __pyx_t_4 = 0;
 
-        /* "lxml/objectify.pyx":1189
+        /* "lxml/objectify.pyx":1190
  *                     has_string_value = True
  *                     child = unicode(child)
  *                     _add_text(element, child)             # <<<<<<<<<<<<<<
  * 
  *         if self._annotate and not has_children:
  */
-        __pyx_t_4 = __pyx_f_4lxml_9objectify__add_text(__pyx_v_element, __pyx_v_child); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1189, __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, 1190, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       }
@@ -18872,7 +18873,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     }
     __pyx_L6:;
 
-    /* "lxml/objectify.pyx":1146
+    /* "lxml/objectify.pyx":1147
  *         has_children = False
  *         has_string_value = False
  *         for child in children:             # <<<<<<<<<<<<<<
@@ -18882,7 +18883,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   }
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-  /* "lxml/objectify.pyx":1191
+  /* "lxml/objectify.pyx":1192
  *                     _add_text(element, child)
  * 
  *         if self._annotate and not has_children:             # <<<<<<<<<<<<<<
@@ -18900,7 +18901,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_L18_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1192
+    /* "lxml/objectify.pyx":1193
  * 
  *         if self._annotate and not has_children:
  *             if has_string_value:             # <<<<<<<<<<<<<<
@@ -18910,19 +18911,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_1 = (__pyx_v_has_string_value != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1193
+      /* "lxml/objectify.pyx":1194
  *         if self._annotate and not has_children:
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")             # <<<<<<<<<<<<<<
  *             elif pytype_name is not None:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  */
-      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1193, __pyx_L1_error)
+      __Pyx_GetModuleGlobalName(__pyx_t_5, __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_n_u_str); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1193, __pyx_L1_error)
+      __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_n_u_str); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1194, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1192
+      /* "lxml/objectify.pyx":1193
  * 
  *         if self._annotate and not has_children:
  *             if has_string_value:             # <<<<<<<<<<<<<<
@@ -18932,7 +18933,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
       goto __pyx_L20;
     }
 
-    /* "lxml/objectify.pyx":1194
+    /* "lxml/objectify.pyx":1195
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18943,19 +18944,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1195
+      /* "lxml/objectify.pyx":1196
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)             # <<<<<<<<<<<<<<
  * 
  *         return element
  */
-      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1195, __pyx_L1_error)
+      __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1196, __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, 1195, __pyx_L1_error)
+      __pyx_t_6 = setAttributeValue(__pyx_v_element, __pyx_t_5, __pyx_v_pytype_name); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1196, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1194
+      /* "lxml/objectify.pyx":1195
  *             if has_string_value:
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, u"str")
  *             elif pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -18965,7 +18966,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
     }
     __pyx_L20:;
 
-    /* "lxml/objectify.pyx":1191
+    /* "lxml/objectify.pyx":1192
  *                     _add_text(element, child)
  * 
  *         if self._annotate and not has_children:             # <<<<<<<<<<<<<<
@@ -18974,7 +18975,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
  */
   }
 
-  /* "lxml/objectify.pyx":1197
+  /* "lxml/objectify.pyx":1198
  *                 cetree.setAttributeValue(element, PYTYPE_ATTRIBUTE, pytype_name)
  * 
  *         return element             # <<<<<<<<<<<<<<
@@ -18986,7 +18987,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   __pyx_r = ((PyObject *)__pyx_v_element);
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1131
+  /* "lxml/objectify.pyx":1132
  *     cdef bint _annotate
  * 
  *     def __call__(self, *children, **attrib):             # <<<<<<<<<<<<<<
@@ -19018,7 +19019,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28_ObjectifyElementMakerCaller___call
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1199
+/* "lxml/objectify.pyx":1200
  *         return element
  * 
  * cdef _add_text(_Element elem, text):             # <<<<<<<<<<<<<<
@@ -19038,7 +19039,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   __Pyx_RefNannySetupContext("_add_text", 0);
   __Pyx_INCREF(__pyx_v_text);
 
-  /* "lxml/objectify.pyx":1203
+  /* "lxml/objectify.pyx":1204
  *     # tail text, depending on the current tree state
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)             # <<<<<<<<<<<<<<
@@ -19047,7 +19048,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
   __pyx_v_c_child = findChildBackwards(__pyx_v_elem->_c_node, 0);
 
-  /* "lxml/objectify.pyx":1204
+  /* "lxml/objectify.pyx":1205
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:             # <<<<<<<<<<<<<<
@@ -19057,19 +19058,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   __pyx_t_1 = ((__pyx_v_c_child != NULL) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1205
+    /* "lxml/objectify.pyx":1206
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)             # <<<<<<<<<<<<<<
  *         if old is not None:
  *             text = old + text
  */
-    __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1205, __pyx_L1_error)
+    __pyx_t_2 = tailOf(__pyx_v_c_child); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1206, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_old = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1206
+    /* "lxml/objectify.pyx":1207
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -19080,19 +19081,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     __pyx_t_3 = (__pyx_t_1 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1207
+      /* "lxml/objectify.pyx":1208
  *         old = cetree.tailOf(c_child)
  *         if old is not None:
  *             text = old + text             # <<<<<<<<<<<<<<
  *         cetree.setTailText(c_child, text)
  *     else:
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1207, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1208, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/objectify.pyx":1206
+      /* "lxml/objectify.pyx":1207
  *     if c_child is not NULL:
  *         old = cetree.tailOf(c_child)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -19101,16 +19102,16 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1208
+    /* "lxml/objectify.pyx":1209
  *         if old is not None:
  *             text = old + text
  *         cetree.setTailText(c_child, text)             # <<<<<<<<<<<<<<
  *     else:
  *         old = cetree.textOf(elem._c_node)
  */
-    __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1208, __pyx_L1_error)
+    __pyx_t_4 = setTailText(__pyx_v_c_child, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1209, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":1204
+    /* "lxml/objectify.pyx":1205
  *     cdef tree.xmlNode* c_child
  *     c_child = cetree.findChildBackwards(elem._c_node, 0)
  *     if c_child is not NULL:             # <<<<<<<<<<<<<<
@@ -19120,7 +19121,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1210
+  /* "lxml/objectify.pyx":1211
  *         cetree.setTailText(c_child, text)
  *     else:
  *         old = cetree.textOf(elem._c_node)             # <<<<<<<<<<<<<<
@@ -19128,12 +19129,12 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  *             text = old + text
  */
   /*else*/ {
-    __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1210, __pyx_L1_error)
+    __pyx_t_2 = textOf(__pyx_v_elem->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1211, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_old = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1211
+    /* "lxml/objectify.pyx":1212
  *     else:
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -19144,19 +19145,19 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_3 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1212
+      /* "lxml/objectify.pyx":1213
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:
  *             text = old + text             # <<<<<<<<<<<<<<
  *         cetree.setNodeText(elem._c_node, text)
  * 
  */
-      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1212, __pyx_L1_error)
+      __pyx_t_2 = PyNumber_Add(__pyx_v_old, __pyx_v_text); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1213, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_2);
       __Pyx_DECREF_SET(__pyx_v_text, __pyx_t_2);
       __pyx_t_2 = 0;
 
-      /* "lxml/objectify.pyx":1211
+      /* "lxml/objectify.pyx":1212
  *     else:
  *         old = cetree.textOf(elem._c_node)
  *         if old is not None:             # <<<<<<<<<<<<<<
@@ -19165,18 +19166,18 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1213
+    /* "lxml/objectify.pyx":1214
  *         if old is not None:
  *             text = old + text
  *         cetree.setNodeText(elem._c_node, text)             # <<<<<<<<<<<<<<
  * 
  * cdef class ElementMaker:
  */
-    __pyx_t_4 = setNodeText(__pyx_v_elem->_c_node, __pyx_v_text); if (unlikely(__pyx_t_4 == ((int)-1))) __PYX_ERR(0, 1213, __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, 1214, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1199
+  /* "lxml/objectify.pyx":1200
  *         return element
  * 
  * cdef _add_text(_Element elem, text):             # <<<<<<<<<<<<<<
@@ -19199,7 +19200,7 @@ static PyObject *__pyx_f_4lxml_9objectify__add_text(struct LxmlElement *__pyx_v_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1246
+/* "lxml/objectify.pyx":1247
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -19224,7 +19225,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
     values[1] = ((PyObject *)Py_None);
     values[2] = ((PyObject *)Py_True);
 
-    /* "lxml/objectify.pyx":1247
+    /* "lxml/objectify.pyx":1248
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):             # <<<<<<<<<<<<<<
@@ -19248,7 +19249,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_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(0, 1246, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, 0, "__init__") < 0)) __PYX_ERR(0, 1247, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 0) {
       goto __pyx_L5_argtuple_error;
@@ -19261,7 +19262,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_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(0, 1246, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 1, 0, 0, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1247, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.ElementMaker.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -19269,7 +19270,7 @@ static int __pyx_pw_4lxml_9objectify_12ElementMaker_1__init__(PyObject *__pyx_v_
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_12ElementMaker___init__(((struct __pyx_obj_4lxml_9objectify_ElementMaker *)__pyx_v_self), __pyx_v_namespace, __pyx_v_nsmap, __pyx_v_annotate, __pyx_v_makeelement);
 
-  /* "lxml/objectify.pyx":1246
+  /* "lxml/objectify.pyx":1247
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -19292,7 +19293,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __Pyx_RefNannySetupContext("__init__", 0);
   __Pyx_INCREF(__pyx_v_nsmap);
 
-  /* "lxml/objectify.pyx":1248
+  /* "lxml/objectify.pyx":1249
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):
  *         if nsmap is None:             # <<<<<<<<<<<<<<
@@ -19303,19 +19304,19 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1249
+    /* "lxml/objectify.pyx":1250
  *                  makeelement=None):
  *         if nsmap is None:
  *             nsmap = _DEFAULT_NSMAP if annotate else {}             # <<<<<<<<<<<<<<
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1249, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1250, __pyx_L1_error)
     if (__pyx_t_2) {
       __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
       __pyx_t_3 = __pyx_v_4lxml_9objectify__DEFAULT_NSMAP;
     } else {
-      __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1249, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1250, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_3 = __pyx_t_4;
       __pyx_t_4 = 0;
@@ -19323,7 +19324,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":1248
+    /* "lxml/objectify.pyx":1249
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,
  *                  makeelement=None):
  *         if nsmap is None:             # <<<<<<<<<<<<<<
@@ -19332,7 +19333,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  */
   }
 
-  /* "lxml/objectify.pyx":1250
+  /* "lxml/objectify.pyx":1251
  *         if nsmap is None:
  *             nsmap = _DEFAULT_NSMAP if annotate else {}
  *         self._nsmap = nsmap             # <<<<<<<<<<<<<<
@@ -19345,7 +19346,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __Pyx_DECREF(__pyx_v_self->_nsmap);
   __pyx_v_self->_nsmap = __pyx_v_nsmap;
 
-  /* "lxml/objectify.pyx":1251
+  /* "lxml/objectify.pyx":1252
  *             nsmap = _DEFAULT_NSMAP if annotate else {}
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace             # <<<<<<<<<<<<<<
@@ -19357,7 +19358,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_INCREF(Py_None);
     __pyx_t_3 = Py_None;
   } else {
-    __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1251, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_namespace); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1252, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = __pyx_t_4;
     __pyx_t_4 = 0;
@@ -19368,17 +19369,17 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_v_self->_namespace = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1252
+  /* "lxml/objectify.pyx":1253
  *         self._nsmap = nsmap
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate             # <<<<<<<<<<<<<<
  *         if makeelement is not None:
  *             if not callable(makeelement):
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1252, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1253, __pyx_L1_error)
   __pyx_v_self->_annotate = __pyx_t_2;
 
-  /* "lxml/objectify.pyx":1253
+  /* "lxml/objectify.pyx":1254
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate
  *         if makeelement is not None:             # <<<<<<<<<<<<<<
@@ -19389,45 +19390,45 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1254
+    /* "lxml/objectify.pyx":1255
  *         self._annotate = annotate
  *         if makeelement is not None:
  *             if not callable(makeelement):             # <<<<<<<<<<<<<<
  *                 raise TypeError(
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
  */
-    __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1254, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyCallable_Check(__pyx_v_makeelement); if (unlikely(__pyx_t_1 == ((int)-1))) __PYX_ERR(0, 1255, __pyx_L1_error)
     __pyx_t_2 = ((!(__pyx_t_1 != 0)) != 0);
     if (unlikely(__pyx_t_2)) {
 
-      /* "lxml/objectify.pyx":1256
+      /* "lxml/objectify.pyx":1257
  *             if not callable(makeelement):
  *                 raise TypeError(
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")             # <<<<<<<<<<<<<<
  *             self._makeelement = makeelement
  *         else:
  */
-      __pyx_t_3 = __Pyx_PyObject_FormatSimple(((PyObject *)Py_TYPE(__pyx_v_makeelement)), __pyx_empty_unicode); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1256, __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, 1257, __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, 1256, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyUnicode_Concat(__pyx_kp_u_argument_of_makeelement_paramete, __pyx_t_3); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1257, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":1255
+      /* "lxml/objectify.pyx":1256
  *         if makeelement is not None:
  *             if not callable(makeelement):
  *                 raise TypeError(             # <<<<<<<<<<<<<<
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
  *             self._makeelement = makeelement
  */
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1255, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(__pyx_builtin_TypeError, __pyx_t_4); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1256, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_Raise(__pyx_t_3, 0, 0, 0);
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-      __PYX_ERR(0, 1255, __pyx_L1_error)
+      __PYX_ERR(0, 1256, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1254
+      /* "lxml/objectify.pyx":1255
  *         self._annotate = annotate
  *         if makeelement is not None:
  *             if not callable(makeelement):             # <<<<<<<<<<<<<<
@@ -19436,7 +19437,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
  */
     }
 
-    /* "lxml/objectify.pyx":1257
+    /* "lxml/objectify.pyx":1258
  *                 raise TypeError(
  *                     f"argument of 'makeelement' parameter must be callable, got {type(makeelement)}")
  *             self._makeelement = makeelement             # <<<<<<<<<<<<<<
@@ -19449,7 +19450,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     __Pyx_DECREF(__pyx_v_self->_makeelement);
     __pyx_v_self->_makeelement = __pyx_v_makeelement;
 
-    /* "lxml/objectify.pyx":1253
+    /* "lxml/objectify.pyx":1254
  *         self._namespace = None if namespace is None else u"{%s}" % namespace
  *         self._annotate = annotate
  *         if makeelement is not None:             # <<<<<<<<<<<<<<
@@ -19459,7 +19460,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
     goto __pyx_L4;
   }
 
-  /* "lxml/objectify.pyx":1259
+  /* "lxml/objectify.pyx":1260
  *             self._makeelement = makeelement
  *         else:
  *             self._makeelement = None             # <<<<<<<<<<<<<<
@@ -19475,14 +19476,14 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   }
   __pyx_L4:;
 
-  /* "lxml/objectify.pyx":1260
+  /* "lxml/objectify.pyx":1261
  *         else:
  *             self._makeelement = None
  *         self._cache = {}             # <<<<<<<<<<<<<<
  * 
  *     @cython.final
  */
-  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1260, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1261, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_3);
   __Pyx_GOTREF(__pyx_v_self->_cache);
@@ -19490,7 +19491,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   __pyx_v_self->_cache = ((PyObject*)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1246
+  /* "lxml/objectify.pyx":1247
  *     cdef bint _annotate
  *     cdef dict _cache
  *     def __init__(self, *, namespace=None, nsmap=None, annotate=True,             # <<<<<<<<<<<<<<
@@ -19512,7 +19513,7 @@ static int __pyx_pf_4lxml_9objectify_12ElementMaker___init__(struct __pyx_obj_4l
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1263
+/* "lxml/objectify.pyx":1264
  * 
  *     @cython.final
  *     cdef _build_element_maker(self, tag, bint caching):             # <<<<<<<<<<<<<<
@@ -19532,19 +19533,19 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   int __pyx_t_6;
   __Pyx_RefNannySetupContext("_build_element_maker", 0);
 
-  /* "lxml/objectify.pyx":1265
+  /* "lxml/objectify.pyx":1266
  *     cdef _build_element_maker(self, tag, bint caching):
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)             # <<<<<<<<<<<<<<
  *         if self._namespace is not None and tag[0] != u"{":
  *             element_maker._tag = self._namespace + tag
  */
-  __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, 1265, __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, 1266, __pyx_L1_error)
   __Pyx_GOTREF(((PyObject *)__pyx_t_1));
   __pyx_v_element_maker = ((struct __pyx_obj_4lxml_9objectify__ObjectifyElementMakerCaller *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1266
+  /* "lxml/objectify.pyx":1267
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":             # <<<<<<<<<<<<<<
@@ -19558,22 +19559,22 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __pyx_t_2 = __pyx_t_4;
     goto __pyx_L4_bool_binop_done;
   }
-  __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, 1266, __pyx_L1_error)
+  __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, 1267, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1266, __pyx_L1_error)
+  __pyx_t_4 = (__Pyx_PyUnicode_Equals(__pyx_t_1, __pyx_kp_u__9, Py_NE)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1267, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_t_2 = __pyx_t_4;
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1267
+    /* "lxml/objectify.pyx":1268
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":
  *             element_maker._tag = self._namespace + tag             # <<<<<<<<<<<<<<
  *         else:
  *             element_maker._tag = tag
  */
-    __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1267, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_Add(__pyx_v_self->_namespace, __pyx_v_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1268, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_GIVEREF(__pyx_t_1);
     __Pyx_GOTREF(__pyx_v_element_maker->_tag);
@@ -19581,7 +19582,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __pyx_v_element_maker->_tag = __pyx_t_1;
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1266
+    /* "lxml/objectify.pyx":1267
  *         cdef _ObjectifyElementMakerCaller element_maker
  *         element_maker = _ObjectifyElementMakerCaller.__new__(_ObjectifyElementMakerCaller)
  *         if self._namespace is not None and tag[0] != u"{":             # <<<<<<<<<<<<<<
@@ -19591,7 +19592,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1269
+  /* "lxml/objectify.pyx":1270
  *             element_maker._tag = self._namespace + tag
  *         else:
  *             element_maker._tag = tag             # <<<<<<<<<<<<<<
@@ -19607,7 +19608,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1270
+  /* "lxml/objectify.pyx":1271
  *         else:
  *             element_maker._tag = tag
  *         element_maker._nsmap = self._nsmap             # <<<<<<<<<<<<<<
@@ -19622,7 +19623,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_v_element_maker->_nsmap = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1271
+  /* "lxml/objectify.pyx":1272
  *             element_maker._tag = tag
  *         element_maker._nsmap = self._nsmap
  *         element_maker._annotate = self._annotate             # <<<<<<<<<<<<<<
@@ -19632,7 +19633,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_t_2 = __pyx_v_self->_annotate;
   __pyx_v_element_maker->_annotate = __pyx_t_2;
 
-  /* "lxml/objectify.pyx":1272
+  /* "lxml/objectify.pyx":1273
  *         element_maker._nsmap = self._nsmap
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement             # <<<<<<<<<<<<<<
@@ -19647,7 +19648,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_v_element_maker->_element_factory = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1273
+  /* "lxml/objectify.pyx":1274
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement
  *         if caching:             # <<<<<<<<<<<<<<
@@ -19657,7 +19658,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_t_2 = (__pyx_v_caching != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1274
+    /* "lxml/objectify.pyx":1275
  *         element_maker._element_factory = self._makeelement
  *         if caching:
  *             if len(self._cache) > 200:             # <<<<<<<<<<<<<<
@@ -19668,14 +19669,14 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
     __Pyx_INCREF(__pyx_t_1);
     if (unlikely(__pyx_t_1 == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "object of type 'NoneType' has no len()");
-      __PYX_ERR(0, 1274, __pyx_L1_error)
+      __PYX_ERR(0, 1275, __pyx_L1_error)
     }
-    __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1274, __pyx_L1_error)
+    __pyx_t_5 = PyDict_Size(__pyx_t_1); if (unlikely(__pyx_t_5 == ((Py_ssize_t)-1))) __PYX_ERR(0, 1275, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __pyx_t_2 = ((__pyx_t_5 > 0xC8) != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1275
+      /* "lxml/objectify.pyx":1276
  *         if caching:
  *             if len(self._cache) > 200:
  *                 self._cache.clear()             # <<<<<<<<<<<<<<
@@ -19684,11 +19685,11 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
       if (unlikely(__pyx_v_self->_cache == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "clear");
-        __PYX_ERR(0, 1275, __pyx_L1_error)
+        __PYX_ERR(0, 1276, __pyx_L1_error)
       }
-      __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1275, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyDict_Clear(__pyx_v_self->_cache); if (unlikely(__pyx_t_6 == ((int)-1))) __PYX_ERR(0, 1276, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1274
+      /* "lxml/objectify.pyx":1275
  *         element_maker._element_factory = self._makeelement
  *         if caching:
  *             if len(self._cache) > 200:             # <<<<<<<<<<<<<<
@@ -19697,7 +19698,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
     }
 
-    /* "lxml/objectify.pyx":1276
+    /* "lxml/objectify.pyx":1277
  *             if len(self._cache) > 200:
  *                 self._cache.clear()
  *             self._cache[tag] = element_maker             # <<<<<<<<<<<<<<
@@ -19706,11 +19707,11 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
     if (unlikely(__pyx_v_self->_cache == Py_None)) {
       PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-      __PYX_ERR(0, 1276, __pyx_L1_error)
+      __PYX_ERR(0, 1277, __pyx_L1_error)
     }
-    if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) __PYX_ERR(0, 1276, __pyx_L1_error)
+    if (unlikely(PyDict_SetItem(__pyx_v_self->_cache, __pyx_v_tag, ((PyObject *)__pyx_v_element_maker)) < 0)) __PYX_ERR(0, 1277, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":1273
+    /* "lxml/objectify.pyx":1274
  *         element_maker._annotate = self._annotate
  *         element_maker._element_factory = self._makeelement
  *         if caching:             # <<<<<<<<<<<<<<
@@ -19719,7 +19720,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
  */
   }
 
-  /* "lxml/objectify.pyx":1277
+  /* "lxml/objectify.pyx":1278
  *                 self._cache.clear()
  *             self._cache[tag] = element_maker
  *         return element_maker             # <<<<<<<<<<<<<<
@@ -19731,7 +19732,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   __pyx_r = ((PyObject *)__pyx_v_element_maker);
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1263
+  /* "lxml/objectify.pyx":1264
  * 
  *     @cython.final
  *     cdef _build_element_maker(self, tag, bint caching):             # <<<<<<<<<<<<<<
@@ -19751,7 +19752,7 @@ static PyObject *__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker(st
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1279
+/* "lxml/objectify.pyx":1280
  *         return element_maker
  * 
  *     def __getattr__(self, tag):             # <<<<<<<<<<<<<<
@@ -19785,7 +19786,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   PyObject *__pyx_t_7 = NULL;
   __Pyx_RefNannySetupContext("__getattr__", 0);
 
-  /* "lxml/objectify.pyx":1280
+  /* "lxml/objectify.pyx":1281
  * 
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)             # <<<<<<<<<<<<<<
@@ -19794,14 +19795,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-    __PYX_ERR(0, 1280, __pyx_L1_error)
+    __PYX_ERR(0, 1281, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1280, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1281, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element_maker = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1281
+  /* "lxml/objectify.pyx":1282
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19812,7 +19813,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1282
+    /* "lxml/objectify.pyx":1283
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             if is_special_method(tag):             # <<<<<<<<<<<<<<
@@ -19832,14 +19833,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
     }
     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1282, __pyx_L1_error)
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1282, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1283, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1283
+      /* "lxml/objectify.pyx":1284
  *         if element_maker is None:
  *             if is_special_method(tag):
  *                 return object.__getattr__(self, tag)             # <<<<<<<<<<<<<<
@@ -19847,7 +19848,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  *         return element_maker
  */
       __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, 1283, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_builtin_object, __pyx_n_s_getattr); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1284, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = NULL;
       __pyx_t_6 = 0;
@@ -19864,7 +19865,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_4)) {
         PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_tag};
-        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else
@@ -19872,13 +19873,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_4)) {
         PyObject *__pyx_temp[3] = {__pyx_t_5, ((PyObject *)__pyx_v_self), __pyx_v_tag};
-        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyCFunction_FastCall(__pyx_t_4, __pyx_temp+1-__pyx_t_6, 2+__pyx_t_6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
         __Pyx_GOTREF(__pyx_t_1);
       } else
       #endif
       {
-        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1283, __pyx_L1_error)
+        __pyx_t_7 = PyTuple_New(2+__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1284, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         if (__pyx_t_5) {
           __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_7, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -19889,7 +19890,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
         __Pyx_INCREF(__pyx_v_tag);
         __Pyx_GIVEREF(__pyx_v_tag);
         PyTuple_SET_ITEM(__pyx_t_7, 1+__pyx_t_6, __pyx_v_tag);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1283, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_t_7, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1284, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       }
@@ -19898,7 +19899,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
       __pyx_t_1 = 0;
       goto __pyx_L0;
 
-      /* "lxml/objectify.pyx":1282
+      /* "lxml/objectify.pyx":1283
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             if is_special_method(tag):             # <<<<<<<<<<<<<<
@@ -19907,7 +19908,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
     }
 
-    /* "lxml/objectify.pyx":1284
+    /* "lxml/objectify.pyx":1285
  *             if is_special_method(tag):
  *                 return object.__getattr__(self, tag)
  *             return self._build_element_maker(tag, caching=True)             # <<<<<<<<<<<<<<
@@ -19915,13 +19916,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  * 
  */
     __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, 1284, __pyx_L1_error)
+    __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, 1285, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_r = __pyx_t_1;
     __pyx_t_1 = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1281
+    /* "lxml/objectify.pyx":1282
  *     def __getattr__(self, tag):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -19930,7 +19931,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
  */
   }
 
-  /* "lxml/objectify.pyx":1285
+  /* "lxml/objectify.pyx":1286
  *                 return object.__getattr__(self, tag)
  *             return self._build_element_maker(tag, caching=True)
  *         return element_maker             # <<<<<<<<<<<<<<
@@ -19942,7 +19943,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   __pyx_r = __pyx_v_element_maker;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1279
+  /* "lxml/objectify.pyx":1280
  *         return element_maker
  * 
  *     def __getattr__(self, tag):             # <<<<<<<<<<<<<<
@@ -19965,7 +19966,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_2__getattr__(struct __
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1287
+/* "lxml/objectify.pyx":1288
  *         return element_maker
  * 
  *     def __call__(self, tag, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -20015,7 +20016,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_5__call__(PyObject *__
       }
       if (unlikely(kw_args > 0)) {
         const Py_ssize_t used_pos_args = (pos_args < 1) ? pos_args : 1;
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__call__") < 0)) __PYX_ERR(0, 1287, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v_kwargs, values, used_pos_args, "__call__") < 0)) __PYX_ERR(0, 1288, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) < 1) {
       goto __pyx_L5_argtuple_error;
@@ -20026,7 +20027,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_12ElementMaker_5__call__(PyObject *__
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1287, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__call__", 0, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1288, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v_args); __pyx_v_args = 0;
   __Pyx_DECREF(__pyx_v_kwargs); __pyx_v_kwargs = 0;
@@ -20054,7 +20055,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__call__", 0);
 
-  /* "lxml/objectify.pyx":1288
+  /* "lxml/objectify.pyx":1289
  * 
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)             # <<<<<<<<<<<<<<
@@ -20063,14 +20064,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  */
   if (unlikely(__pyx_v_self->_cache == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-    __PYX_ERR(0, 1288, __pyx_L1_error)
+    __PYX_ERR(0, 1289, __pyx_L1_error)
   }
-  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1288, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_self->_cache, __pyx_v_tag, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1289, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element_maker = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1289
+  /* "lxml/objectify.pyx":1290
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -20081,7 +20082,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1291
+    /* "lxml/objectify.pyx":1292
  *         if element_maker is None:
  *             element_maker = self._build_element_maker(
  *                 tag, caching=not is_special_method(tag))             # <<<<<<<<<<<<<<
@@ -20101,25 +20102,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
     }
     __pyx_t_1 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_tag) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_tag);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1291, __pyx_L1_error)
+    if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1292, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1291, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_1); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1292, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1290
+    /* "lxml/objectify.pyx":1291
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:
  *             element_maker = self._build_element_maker(             # <<<<<<<<<<<<<<
  *                 tag, caching=not is_special_method(tag))
  *         return element_maker(*args, **kwargs)
  */
-    __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, 1290, __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, 1291, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_element_maker, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1289
+    /* "lxml/objectify.pyx":1290
  *     def __call__(self, tag, *args, **kwargs):
  *         element_maker = self._cache.get(tag)
  *         if element_maker is None:             # <<<<<<<<<<<<<<
@@ -20128,7 +20129,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  */
   }
 
-  /* "lxml/objectify.pyx":1292
+  /* "lxml/objectify.pyx":1293
  *             element_maker = self._build_element_maker(
  *                 tag, caching=not is_special_method(tag))
  *         return element_maker(*args, **kwargs)             # <<<<<<<<<<<<<<
@@ -20136,13 +20137,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
  * ################################################################################
  */
   __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, 1292, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_Call(__pyx_v_element_maker, __pyx_v_args, __pyx_v_kwargs); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1293, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1287
+  /* "lxml/objectify.pyx":1288
  *         return element_maker
  * 
  *     def __call__(self, tag, *args, **kwargs):             # <<<<<<<<<<<<<<
@@ -20164,7 +20165,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12ElementMaker_4__call__(struct __pyx
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1299
+/* "lxml/objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
@@ -20203,7 +20204,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13enable_recursive_str(PyObject *__py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) __PYX_ERR(0, 1299, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "enable_recursive_str") < 0)) __PYX_ERR(0, 1300, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -20217,7 +20218,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_13enable_recursive_str(PyObject *__py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1299, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("enable_recursive_str", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1300, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.enable_recursive_str", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -20236,17 +20237,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
   int __pyx_t_1;
   __Pyx_RefNannySetupContext("enable_recursive_str", 0);
 
-  /* "lxml/objectify.pyx":1306
+  /* "lxml/objectify.pyx":1307
  *     """
  *     global __RECURSIVE_STR
  *     __RECURSIVE_STR = on             # <<<<<<<<<<<<<<
  * 
  * def dump(_Element element not None):
  */
-  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1306, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v_on); if (unlikely((__pyx_t_1 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1307, __pyx_L1_error)
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = __pyx_t_1;
 
-  /* "lxml/objectify.pyx":1299
+  /* "lxml/objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
@@ -20266,7 +20267,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_12enable_recursive_str(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1308
+/* "lxml/objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
@@ -20282,7 +20283,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_15dump(PyObject *__pyx_self, PyObject
   PyObject *__pyx_r = 0;
   __Pyx_RefNannyDeclarations
   __Pyx_RefNannySetupContext("dump (wrapper)", 0);
-  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) __PYX_ERR(0, 1308, __pyx_L1_error)
+  if (unlikely(!__Pyx_ArgTypeTest(((PyObject *)__pyx_v_element), __pyx_ptype_4lxml_8includes_11etreepublic__Element, 0, "element", 0))) __PYX_ERR(0, 1309, __pyx_L1_error)
   __pyx_r = __pyx_pf_4lxml_9objectify_14dump(__pyx_self, ((struct LxmlElement *)__pyx_v_element));
 
   /* function exit code */
@@ -20300,7 +20301,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
   PyObject *__pyx_t_1 = NULL;
   __Pyx_RefNannySetupContext("dump", 0);
 
-  /* "lxml/objectify.pyx":1313
+  /* "lxml/objectify.pyx":1314
  *     Return a recursively generated string representation of an element.
  *     """
  *     return _dump(element, 0)             # <<<<<<<<<<<<<<
@@ -20308,13 +20309,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
  * cdef object _dump(_Element element, int indent):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1313, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__dump(__pyx_v_element, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1314, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1308
+  /* "lxml/objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
@@ -20333,7 +20334,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_14dump(CYTHON_UNUSED PyObject *__pyx_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1315
+/* "lxml/objectify.pyx":1316
  *     return _dump(element, 0)
  * 
  * cdef object _dump(_Element element, int indent):             # <<<<<<<<<<<<<<
@@ -20366,23 +20367,23 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   Py_ssize_t __pyx_t_13;
   __Pyx_RefNannySetupContext("_dump", 0);
 
-  /* "lxml/objectify.pyx":1316
+  /* "lxml/objectify.pyx":1317
  * 
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent             # <<<<<<<<<<<<<<
  *     if isinstance(element, ObjectifiedDataElement):
  *         value = repr(element)
  */
-  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1316, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyInt_From_int(__pyx_v_indent); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1317, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1316, __pyx_L1_error)
+  __pyx_t_2 = PyNumber_Multiply(__pyx_kp_u__10, __pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1317, __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, 1316, __pyx_L1_error)
+  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, 1317, __pyx_L1_error)
   __pyx_v_indentstr = ((PyObject*)__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1317
+  /* "lxml/objectify.pyx":1318
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -20393,19 +20394,19 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_4 = (__pyx_t_3 != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/objectify.pyx":1318
+    /* "lxml/objectify.pyx":1319
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):
  *         value = repr(element)             # <<<<<<<<<<<<<<
  *     else:
  *         value = textOf(element._c_node)
  */
-    __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1318, __pyx_L1_error)
+    __pyx_t_2 = PyObject_Repr(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1319, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_value = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1317
+    /* "lxml/objectify.pyx":1318
  * cdef object _dump(_Element element, int indent):
  *     indentstr = u"    " * indent
  *     if isinstance(element, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -20415,7 +20416,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1320
+  /* "lxml/objectify.pyx":1321
  *         value = repr(element)
  *     else:
  *         value = textOf(element._c_node)             # <<<<<<<<<<<<<<
@@ -20423,12 +20424,12 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *             if not value.strip():
  */
   /*else*/ {
-    __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1320, __pyx_L1_error)
+    __pyx_t_2 = textOf(__pyx_v_element->_c_node); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1321, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_value = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1321
+    /* "lxml/objectify.pyx":1322
  *     else:
  *         value = textOf(element._c_node)
  *         if value is not None:             # <<<<<<<<<<<<<<
@@ -20439,14 +20440,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1322
+      /* "lxml/objectify.pyx":1323
  *         value = textOf(element._c_node)
  *         if value is not None:
  *             if not value.strip():             # <<<<<<<<<<<<<<
  *                 value = None
  *             else:
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1322, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_strip); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1323, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_1))) {
@@ -20460,15 +20461,15 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       }
       __pyx_t_2 = (__pyx_t_5) ? __Pyx_PyObject_CallOneArg(__pyx_t_1, __pyx_t_5) : __Pyx_PyObject_CallNoArg(__pyx_t_1);
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1322, __pyx_L1_error)
+      if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1323, __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, 1322, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_2); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1323, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
       __pyx_t_4 = ((!__pyx_t_3) != 0);
       if (__pyx_t_4) {
 
-        /* "lxml/objectify.pyx":1323
+        /* "lxml/objectify.pyx":1324
  *         if value is not None:
  *             if not value.strip():
  *                 value = None             # <<<<<<<<<<<<<<
@@ -20478,7 +20479,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         __Pyx_INCREF(Py_None);
         __Pyx_DECREF_SET(__pyx_v_value, Py_None);
 
-        /* "lxml/objectify.pyx":1322
+        /* "lxml/objectify.pyx":1323
  *         value = textOf(element._c_node)
  *         if value is not None:
  *             if not value.strip():             # <<<<<<<<<<<<<<
@@ -20488,7 +20489,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         goto __pyx_L5;
       }
 
-      /* "lxml/objectify.pyx":1325
+      /* "lxml/objectify.pyx":1326
  *                 value = None
  *             else:
  *                 value = repr(value)             # <<<<<<<<<<<<<<
@@ -20496,14 +20497,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  */
       /*else*/ {
-        __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1325, __pyx_L1_error)
+        __pyx_t_2 = PyObject_Repr(__pyx_v_value); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_2);
         __pyx_t_2 = 0;
       }
       __pyx_L5:;
 
-      /* "lxml/objectify.pyx":1321
+      /* "lxml/objectify.pyx":1322
  *     else:
  *         value = textOf(element._c_node)
  *         if value is not None:             # <<<<<<<<<<<<<<
@@ -20514,27 +20515,27 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1326
+  /* "lxml/objectify.pyx":1327
  *             else:
  *                 value = repr(value)
  *     result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"             # <<<<<<<<<<<<<<
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  */
-  __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __pyx_t_6 = 0;
   __pyx_t_7 = 127;
-  __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __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;
   __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
   __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_tag); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_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(0, 1326, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_t_1, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __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;
@@ -20546,7 +20547,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_6 += 3;
   __Pyx_GIVEREF(__pyx_kp_u__11);
   PyTuple_SET_ITEM(__pyx_t_2, 2, __pyx_kp_u__11);
-  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_FormatSimple(__pyx_v_value, __pyx_empty_unicode); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1327, __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;
   __pyx_t_6 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_5);
@@ -20557,9 +20558,9 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_6 += 2;
   __Pyx_GIVEREF(__pyx_kp_u__12);
   PyTuple_SET_ITEM(__pyx_t_2, 4, __pyx_kp_u__12);
-  __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_5 = __pyx_f_4lxml_9objectify__typename(((PyObject *)__pyx_v_element)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1327, __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, 1326, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_t_5, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __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;
@@ -20571,52 +20572,52 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_6 += 2;
   __Pyx_GIVEREF(__pyx_kp_u__13);
   PyTuple_SET_ITEM(__pyx_t_2, 6, __pyx_kp_u__13);
-  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1326, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_2, 7, __pyx_t_6, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_v_result = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1327
+  /* "lxml/objectify.pyx":1328
  *                 value = repr(value)
  *     result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS             # <<<<<<<<<<<<<<
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  */
-  __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1327, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_xsi_ns = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1328
+  /* "lxml/objectify.pyx":1329
  *     result = f"{indentstr}{element.tag} = {value} [{_typename(element)}]\n"
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE             # <<<<<<<<<<<<<<
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  */
-  __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1328, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyUnicode_FormatSafe(__pyx_kp_u_s_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_pytype_ns = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1329
+  /* "lxml/objectify.pyx":1330
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):             # <<<<<<<<<<<<<<
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  */
-  __pyx_t_1 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
+  __pyx_t_1 = iterattributes(__pyx_v_element, 3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   if (likely(PyList_CheckExact(__pyx_t_1)) || PyTuple_CheckExact(__pyx_t_1)) {
     __pyx_t_2 = __pyx_t_1; __Pyx_INCREF(__pyx_t_2); __pyx_t_6 = 0;
     __pyx_t_8 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1329, __pyx_L1_error)
+    __pyx_t_6 = -1; __pyx_t_2 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1330, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1329, __pyx_L1_error)
+    __pyx_t_8 = Py_TYPE(__pyx_t_2)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1330, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   for (;;) {
@@ -20624,17 +20625,17 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (likely(PyList_CheckExact(__pyx_t_2))) {
         if (__pyx_t_6 >= 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_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1329, __pyx_L1_error)
+        __pyx_t_1 = PyList_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1330, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       } else {
         if (__pyx_t_6 >= 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_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1329, __pyx_L1_error)
+        __pyx_t_1 = PyTuple_GET_ITEM(__pyx_t_2, __pyx_t_6); __Pyx_INCREF(__pyx_t_1); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1330, __pyx_L1_error)
         #else
-        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1329, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(__pyx_t_2, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1330, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         #endif
       }
@@ -20644,7 +20645,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1329, __pyx_L1_error)
+          else __PYX_ERR(0, 1330, __pyx_L1_error)
         }
         break;
       }
@@ -20656,7 +20657,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (unlikely(size != 2)) {
         if (size > 2) __Pyx_RaiseTooManyValuesError(2);
         else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-        __PYX_ERR(0, 1329, __pyx_L1_error)
+        __PYX_ERR(0, 1330, __pyx_L1_error)
       }
       #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
       if (likely(PyTuple_CheckExact(sequence))) {
@@ -20669,15 +20670,15 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_INCREF(__pyx_t_5);
       __Pyx_INCREF(__pyx_t_9);
       #else
-      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1329, __pyx_L1_error)
+      __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1330, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1329, __pyx_L1_error)
+      __pyx_t_9 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1330, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_9);
       #endif
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     } else {
       Py_ssize_t index = -1;
-      __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1329, __pyx_L1_error)
+      __pyx_t_10 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1330, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_10);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __pyx_t_11 = Py_TYPE(__pyx_t_10)->tp_iternext;
@@ -20685,7 +20686,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_GOTREF(__pyx_t_5);
       index = 1; __pyx_t_9 = __pyx_t_11(__pyx_t_10); if (unlikely(!__pyx_t_9)) goto __pyx_L8_unpacking_failed;
       __Pyx_GOTREF(__pyx_t_9);
-      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 1329, __pyx_L1_error)
+      if (__Pyx_IternextUnpackEndCheck(__pyx_t_11(__pyx_t_10), 2) < 0) __PYX_ERR(0, 1330, __pyx_L1_error)
       __pyx_t_11 = NULL;
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       goto __pyx_L9_unpacking_done;
@@ -20693,7 +20694,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
       __pyx_t_11 = NULL;
       if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-      __PYX_ERR(0, 1329, __pyx_L1_error)
+      __PYX_ERR(0, 1330, __pyx_L1_error)
       __pyx_L9_unpacking_done:;
     }
     __Pyx_XDECREF_SET(__pyx_v_name, __pyx_t_5);
@@ -20701,43 +20702,43 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_9);
     __pyx_t_9 = 0;
 
-    /* "lxml/objectify.pyx":1330
+    /* "lxml/objectify.pyx":1331
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:             # <<<<<<<<<<<<<<
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:
  */
-    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1330, __pyx_L1_error)
+    __pyx_t_4 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__9, __pyx_v_name, Py_EQ)); if (unlikely(__pyx_t_4 < 0)) __PYX_ERR(0, 1331, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1331
+      /* "lxml/objectify.pyx":1332
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:             # <<<<<<<<<<<<<<
  *                 if value == TREE_PYTYPE_NAME:
  *                     continue
  */
-      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1331, __pyx_L1_error)
+      __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1332, __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, 1331, __pyx_L1_error)
+      __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, 1332, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1331, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_t_9); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1332, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
       if (__pyx_t_3) {
 
-        /* "lxml/objectify.pyx":1332
+        /* "lxml/objectify.pyx":1333
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *                     continue
  *                 else:
  */
-        __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, 1332, __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, 1333, __pyx_L1_error)
         if (__pyx_t_3) {
 
-          /* "lxml/objectify.pyx":1333
+          /* "lxml/objectify.pyx":1334
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:
  *                     continue             # <<<<<<<<<<<<<<
@@ -20746,7 +20747,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
           goto __pyx_L6_continue;
 
-          /* "lxml/objectify.pyx":1332
+          /* "lxml/objectify.pyx":1333
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:
  *                 if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -20755,7 +20756,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
         }
 
-        /* "lxml/objectify.pyx":1335
+        /* "lxml/objectify.pyx":1336
  *                     continue
  *                 else:
  *                     name = name.replace(pytype_ns, u'py:')             # <<<<<<<<<<<<<<
@@ -20763,7 +20764,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         result += f"{indentstr}  * {name} = {value!r}\n"
  */
         /*else*/ {
-          __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_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           __pyx_t_5 = NULL;
           __pyx_t_12 = 0;
@@ -20780,7 +20781,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           #if CYTHON_FAST_PYCALL
           if (PyFunction_Check(__pyx_t_1)) {
             PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_pytype_ns, __pyx_kp_u_py};
-            __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1335, __pyx_L1_error)
+            __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
             __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_GOTREF(__pyx_t_9);
           } else
@@ -20788,13 +20789,13 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           #if CYTHON_FAST_PYCCALL
           if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
             PyObject *__pyx_temp[3] = {__pyx_t_5, __pyx_v_pytype_ns, __pyx_kp_u_py};
-            __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1335, __pyx_L1_error)
+            __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
             __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_GOTREF(__pyx_t_9);
           } else
           #endif
           {
-            __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1335, __pyx_L1_error)
+            __pyx_t_10 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1336, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_10);
             if (__pyx_t_5) {
               __Pyx_GIVEREF(__pyx_t_5); PyTuple_SET_ITEM(__pyx_t_10, 0, __pyx_t_5); __pyx_t_5 = NULL;
@@ -20805,7 +20806,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
             __Pyx_INCREF(__pyx_kp_u_py);
             __Pyx_GIVEREF(__pyx_kp_u_py);
             PyTuple_SET_ITEM(__pyx_t_10, 1+__pyx_t_12, __pyx_kp_u_py);
-            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1335, __pyx_L1_error)
+            __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_10, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_9);
             __Pyx_DECREF(__pyx_t_10); __pyx_t_10 = 0;
           }
@@ -20814,7 +20815,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
           __pyx_t_9 = 0;
         }
 
-        /* "lxml/objectify.pyx":1331
+        /* "lxml/objectify.pyx":1332
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:
  *             if name == PYTYPE_ATTRIBUTE:             # <<<<<<<<<<<<<<
@@ -20823,14 +20824,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
       }
 
-      /* "lxml/objectify.pyx":1336
+      /* "lxml/objectify.pyx":1337
  *                 else:
  *                     name = name.replace(pytype_ns, u'py:')
  *             name = name.replace(xsi_ns, u'xsi:')             # <<<<<<<<<<<<<<
  *         result += f"{indentstr}  * {name} = {value!r}\n"
  * 
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1336, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_name, __pyx_n_s_replace); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_10 = NULL;
       __pyx_t_12 = 0;
@@ -20847,7 +20848,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       #if CYTHON_FAST_PYCALL
       if (PyFunction_Check(__pyx_t_1)) {
         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_xsi_ns, __pyx_kp_u_xsi};
-        __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_9);
       } else
@@ -20855,13 +20856,13 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       #if CYTHON_FAST_PYCCALL
       if (__Pyx_PyFastCFunction_Check(__pyx_t_1)) {
         PyObject *__pyx_temp[3] = {__pyx_t_10, __pyx_v_xsi_ns, __pyx_kp_u_xsi};
-        __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyCFunction_FastCall(__pyx_t_1, __pyx_temp+1-__pyx_t_12, 2+__pyx_t_12); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
         __Pyx_XDECREF(__pyx_t_10); __pyx_t_10 = 0;
         __Pyx_GOTREF(__pyx_t_9);
       } else
       #endif
       {
-        __pyx_t_5 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1336, __pyx_L1_error)
+        __pyx_t_5 = PyTuple_New(2+__pyx_t_12); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1337, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         if (__pyx_t_10) {
           __Pyx_GIVEREF(__pyx_t_10); PyTuple_SET_ITEM(__pyx_t_5, 0, __pyx_t_10); __pyx_t_10 = NULL;
@@ -20872,7 +20873,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         __Pyx_INCREF(__pyx_kp_u_xsi);
         __Pyx_GIVEREF(__pyx_kp_u_xsi);
         PyTuple_SET_ITEM(__pyx_t_5, 1+__pyx_t_12, __pyx_kp_u_xsi);
-        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1336, __pyx_L1_error)
+        __pyx_t_9 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_t_5, NULL); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_9);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       }
@@ -20880,7 +20881,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       __Pyx_DECREF_SET(__pyx_v_name, __pyx_t_9);
       __pyx_t_9 = 0;
 
-      /* "lxml/objectify.pyx":1330
+      /* "lxml/objectify.pyx":1331
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):
  *         if u'{' in name:             # <<<<<<<<<<<<<<
@@ -20889,18 +20890,18 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
     }
 
-    /* "lxml/objectify.pyx":1337
+    /* "lxml/objectify.pyx":1338
  *                     name = name.replace(pytype_ns, u'py:')
  *             name = name.replace(xsi_ns, u'xsi:')
  *         result += f"{indentstr}  * {name} = {value!r}\n"             # <<<<<<<<<<<<<<
  * 
  *     indent += 1
  */
-    __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_9 = PyTuple_New(6); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_t_13 = 0;
     __pyx_t_7 = 127;
-    __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyUnicode_Unicode(__pyx_v_indentstr); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __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;
     __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
@@ -20911,7 +20912,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_13 += 4;
     __Pyx_GIVEREF(__pyx_kp_u__14);
     PyTuple_SET_ITEM(__pyx_t_9, 1, __pyx_kp_u__14);
-    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_FormatSimple(__pyx_v_name, __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __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;
     __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
@@ -20922,7 +20923,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_13 += 3;
     __Pyx_GIVEREF(__pyx_kp_u__11);
     PyTuple_SET_ITEM(__pyx_t_9, 3, __pyx_kp_u__11);
-    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_FormatSimpleAndDecref(PyObject_Repr(__pyx_v_value), __pyx_empty_unicode); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __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;
     __pyx_t_13 += __Pyx_PyUnicode_GET_LENGTH(__pyx_t_1);
@@ -20933,16 +20934,16 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __pyx_t_13 += 1;
     __Pyx_GIVEREF(__pyx_kp_u__15);
     PyTuple_SET_ITEM(__pyx_t_9, 5, __pyx_kp_u__15);
-    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 6, __pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyUnicode_Join(__pyx_t_9, 6, __pyx_t_13, __pyx_t_7); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
-    __pyx_t_9 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1337, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyUnicode_ConcatSafe(__pyx_v_result, __pyx_t_1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1338, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_9);
     __pyx_t_9 = 0;
 
-    /* "lxml/objectify.pyx":1329
+    /* "lxml/objectify.pyx":1330
  *     xsi_ns    = u"{%s}" % XML_SCHEMA_INSTANCE_NS
  *     pytype_ns = u"{%s}" % PYTYPE_NAMESPACE
  *     for name, value in cetree.iterattributes(element, 3):             # <<<<<<<<<<<<<<
@@ -20953,7 +20954,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1339
+  /* "lxml/objectify.pyx":1340
  *         result += f"{indentstr}  * {name} = {value!r}\n"
  * 
  *     indent += 1             # <<<<<<<<<<<<<<
@@ -20962,14 +20963,14 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
   __pyx_v_indent = (__pyx_v_indent + 1);
 
-  /* "lxml/objectify.pyx":1340
+  /* "lxml/objectify.pyx":1341
  * 
  *     indent += 1
  *     for child in element.iterchildren():             # <<<<<<<<<<<<<<
  *         result += _dump(child, indent)
  *     if indent == 1:
  */
-  __pyx_t_9 = __Pyx_PyObject_GetAttrStr(((PyObject *)__pyx_v_element), __pyx_n_s_iterchildren); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1340, __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, 1341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_9);
   __pyx_t_1 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_9))) {
@@ -20983,16 +20984,16 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __pyx_t_2 = (__pyx_t_1) ? __Pyx_PyObject_CallOneArg(__pyx_t_9, __pyx_t_1) : __Pyx_PyObject_CallNoArg(__pyx_t_9);
   __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
   if (likely(PyList_CheckExact(__pyx_t_2)) || PyTuple_CheckExact(__pyx_t_2)) {
     __pyx_t_9 = __pyx_t_2; __Pyx_INCREF(__pyx_t_9); __pyx_t_6 = 0;
     __pyx_t_8 = NULL;
   } else {
-    __pyx_t_6 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_6 = -1; __pyx_t_9 = PyObject_GetIter(__pyx_t_2); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1341, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
-    __pyx_t_8 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1340, __pyx_L1_error)
+    __pyx_t_8 = Py_TYPE(__pyx_t_9)->tp_iternext; if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1341, __pyx_L1_error)
   }
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   for (;;) {
@@ -21000,17 +21001,17 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
       if (likely(PyList_CheckExact(__pyx_t_9))) {
         if (__pyx_t_6 >= PyList_GET_SIZE(__pyx_t_9)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1340, __pyx_L1_error)
+        __pyx_t_2 = PyList_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       } else {
         if (__pyx_t_6 >= PyTuple_GET_SIZE(__pyx_t_9)) break;
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1340, __pyx_L1_error)
+        __pyx_t_2 = PyTuple_GET_ITEM(__pyx_t_9, __pyx_t_6); __Pyx_INCREF(__pyx_t_2); __pyx_t_6++; if (unlikely(0 < 0)) __PYX_ERR(0, 1341, __pyx_L1_error)
         #else
-        __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1340, __pyx_L1_error)
+        __pyx_t_2 = PySequence_ITEM(__pyx_t_9, __pyx_t_6); __pyx_t_6++; if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1341, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_2);
         #endif
       }
@@ -21020,7 +21021,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
         PyObject* exc_type = PyErr_Occurred();
         if (exc_type) {
           if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-          else __PYX_ERR(0, 1340, __pyx_L1_error)
+          else __PYX_ERR(0, 1341, __pyx_L1_error)
         }
         break;
       }
@@ -21029,23 +21030,23 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     __Pyx_XDECREF_SET(__pyx_v_child, __pyx_t_2);
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1341
+    /* "lxml/objectify.pyx":1342
  *     indent += 1
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)             # <<<<<<<<<<<<<<
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'
  */
-    if (!(likely(((__pyx_v_child) == Py_None) || likely(__Pyx_TypeTest(__pyx_v_child, __pyx_ptype_4lxml_8includes_11etreepublic__Element))))) __PYX_ERR(0, 1341, __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, 1341, __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, 1342, __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, 1342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
-    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1341, __pyx_L1_error)
+    __pyx_t_1 = PyNumber_InPlaceAdd(__pyx_v_result, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1342, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
     __Pyx_DECREF_SET(__pyx_v_result, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1340
+    /* "lxml/objectify.pyx":1341
  * 
  *     indent += 1
  *     for child in element.iterchildren():             # <<<<<<<<<<<<<<
@@ -21055,7 +21056,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   }
   __Pyx_DECREF(__pyx_t_9); __pyx_t_9 = 0;
 
-  /* "lxml/objectify.pyx":1342
+  /* "lxml/objectify.pyx":1343
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)
  *     if indent == 1:             # <<<<<<<<<<<<<<
@@ -21065,7 +21066,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   __pyx_t_3 = ((__pyx_v_indent == 1) != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1343
+    /* "lxml/objectify.pyx":1344
  *         result += _dump(child, indent)
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'             # <<<<<<<<<<<<<<
@@ -21073,13 +21074,13 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  *         return result
  */
     __Pyx_XDECREF(__pyx_r);
-    __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__16, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1343, __pyx_L1_error)
+    __pyx_t_9 = __Pyx_PyObject_GetSlice(__pyx_v_result, 0, -1L, NULL, NULL, &__pyx_slice__16, 0, 1, 1); if (unlikely(!__pyx_t_9)) __PYX_ERR(0, 1344, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_9);
     __pyx_r = __pyx_t_9;
     __pyx_t_9 = 0;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1342
+    /* "lxml/objectify.pyx":1343
  *     for child in element.iterchildren():
  *         result += _dump(child, indent)
  *     if indent == 1:             # <<<<<<<<<<<<<<
@@ -21088,7 +21089,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
  */
   }
 
-  /* "lxml/objectify.pyx":1345
+  /* "lxml/objectify.pyx":1346
  *         return result[:-1] # strip last '\n'
  *     else:
  *         return result             # <<<<<<<<<<<<<<
@@ -21102,7 +21103,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
     goto __pyx_L0;
   }
 
-  /* "lxml/objectify.pyx":1315
+  /* "lxml/objectify.pyx":1316
  *     return _dump(element, 0)
  * 
  * cdef object _dump(_Element element, int indent):             # <<<<<<<<<<<<<<
@@ -21132,7 +21133,7 @@ static PyObject *__pyx_f_4lxml_9objectify__dump(struct LxmlElement *__pyx_v_elem
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1351
+/* "lxml/objectify.pyx":1352
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
@@ -21164,7 +21165,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("__unpickleElementTree", 0);
 
-  /* "lxml/objectify.pyx":1352
+  /* "lxml/objectify.pyx":1353
  * 
  * def __unpickleElementTree(data):
  *     return etree.ElementTree(fromstring(data))             # <<<<<<<<<<<<<<
@@ -21172,9 +21173,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
  * cdef _setupPickle(elementTreeReduceFunction):
  */
   __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, 1352, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1352, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_4, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_5 = NULL;
   if (CYTHON_UNPACK_METHODS && unlikely(PyMethod_Check(__pyx_t_4))) {
@@ -21188,7 +21189,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   }
   __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v_data) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v_data);
   __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1352, __pyx_L1_error)
+  if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __pyx_t_4 = NULL;
@@ -21204,14 +21205,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   __pyx_t_1 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_2, __pyx_t_4, __pyx_t_3) : __Pyx_PyObject_CallOneArg(__pyx_t_2, __pyx_t_3);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1352, __pyx_L1_error)
+  if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1353, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __pyx_r = __pyx_t_1;
   __pyx_t_1 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1351
+  /* "lxml/objectify.pyx":1352
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
@@ -21234,7 +21235,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_16__unpickleElementTree(CYTHON_UNUSED
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1354
+/* "lxml/objectify.pyx":1355
  *     return etree.ElementTree(fromstring(data))
  * 
  * cdef _setupPickle(elementTreeReduceFunction):             # <<<<<<<<<<<<<<
@@ -21256,7 +21257,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   PyObject *__pyx_t_8 = NULL;
   __Pyx_RefNannySetupContext("_setupPickle", 0);
 
-  /* "lxml/objectify.pyx":1355
+  /* "lxml/objectify.pyx":1356
  * 
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
@@ -21266,19 +21267,19 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   __pyx_t_1 = (IS_PYTHON2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1356
+    /* "lxml/objectify.pyx":1357
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON2:
  *         import copy_reg as copyreg             # <<<<<<<<<<<<<<
  *     else:
  *         import copyreg
  */
-    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1356, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copy_reg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1357, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_copyreg = __pyx_t_2;
     __pyx_t_2 = 0;
 
-    /* "lxml/objectify.pyx":1355
+    /* "lxml/objectify.pyx":1356
  * 
  * cdef _setupPickle(elementTreeReduceFunction):
  *     if python.IS_PYTHON2:             # <<<<<<<<<<<<<<
@@ -21288,7 +21289,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1358
+  /* "lxml/objectify.pyx":1359
  *         import copy_reg as copyreg
  *     else:
  *         import copyreg             # <<<<<<<<<<<<<<
@@ -21296,33 +21297,33 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
  *                    elementTreeReduceFunction, __unpickleElementTree)
  */
   /*else*/ {
-    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1358, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_Import(__pyx_n_s_copyreg, 0, 0); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __pyx_v_copyreg = __pyx_t_2;
     __pyx_t_2 = 0;
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1359
+  /* "lxml/objectify.pyx":1360
  *     else:
  *         import copyreg
  *     copyreg.pickle(etree._ElementTree,             # <<<<<<<<<<<<<<
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1359, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_copyreg, __pyx_n_s_pickle); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1360, __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, 1359, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_ElementTree_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1360, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
 
-  /* "lxml/objectify.pyx":1360
+  /* "lxml/objectify.pyx":1361
  *         import copyreg
  *     copyreg.pickle(etree._ElementTree,
  *                    elementTreeReduceFunction, __unpickleElementTree)             # <<<<<<<<<<<<<<
  * 
  * def pickleReduceElementTree(obj):
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1360, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_5, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1361, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   __pyx_t_7 = 0;
@@ -21339,7 +21340,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   #if CYTHON_FAST_PYCALL
   if (PyFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_v_elementTreeReduceFunction, __pyx_t_5};
-    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1360, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -21349,7 +21350,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   #if CYTHON_FAST_PYCCALL
   if (__Pyx_PyFastCFunction_Check(__pyx_t_3)) {
     PyObject *__pyx_temp[4] = {__pyx_t_6, __pyx_t_4, __pyx_v_elementTreeReduceFunction, __pyx_t_5};
-    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyCFunction_FastCall(__pyx_t_3, __pyx_temp+1-__pyx_t_7, 3+__pyx_t_7); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1360, __pyx_L1_error)
     __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
@@ -21357,7 +21358,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   } else
   #endif
   {
-    __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1359, __pyx_L1_error)
+    __pyx_t_8 = PyTuple_New(3+__pyx_t_7); if (unlikely(!__pyx_t_8)) __PYX_ERR(0, 1360, __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;
@@ -21371,14 +21372,14 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
     PyTuple_SET_ITEM(__pyx_t_8, 2+__pyx_t_7, __pyx_t_5);
     __pyx_t_4 = 0;
     __pyx_t_5 = 0;
-    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1359, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_t_8, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1360, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_2);
     __Pyx_DECREF(__pyx_t_8); __pyx_t_8 = 0;
   }
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1354
+  /* "lxml/objectify.pyx":1355
  *     return etree.ElementTree(fromstring(data))
  * 
  * cdef _setupPickle(elementTreeReduceFunction):             # <<<<<<<<<<<<<<
@@ -21405,7 +21406,7 @@ static PyObject *__pyx_f_4lxml_9objectify__setupPickle(PyObject *__pyx_v_element
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1362
+/* "lxml/objectify.pyx":1363
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
@@ -21436,7 +21437,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   PyObject *__pyx_t_4 = NULL;
   __Pyx_RefNannySetupContext("pickleReduceElementTree", 0);
 
-  /* "lxml/objectify.pyx":1363
+  /* "lxml/objectify.pyx":1364
  * 
  * def pickleReduceElementTree(obj):
  *     return __unpickleElementTree, (etree.tostring(obj),)             # <<<<<<<<<<<<<<
@@ -21444,9 +21445,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
  * _setupPickle(pickleReduceElementTree)
  */
   __Pyx_XDECREF(__pyx_r);
-  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1363, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_unpickleElementTree); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1363, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_tostring); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -21460,15 +21461,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   }
   __pyx_t_2 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_4, __pyx_v_obj) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_v_obj);
   __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1363, __pyx_L1_error)
+  if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
-  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1363, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(1); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_GIVEREF(__pyx_t_2);
   PyTuple_SET_ITEM(__pyx_t_3, 0, __pyx_t_2);
   __pyx_t_2 = 0;
-  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1363, __pyx_L1_error)
+  __pyx_t_2 = PyTuple_New(2); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1364, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_1);
   PyTuple_SET_ITEM(__pyx_t_2, 0, __pyx_t_1);
@@ -21480,7 +21481,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1362
+  /* "lxml/objectify.pyx":1363
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
@@ -21502,7 +21503,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_18pickleReduceElementTree(CYTHON_UNUS
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1377
+/* "lxml/objectify.pyx":1378
  *     cdef object empty_data_class
  *     cdef object tree_class
  *     def __init__(self, tree_class=None, empty_data_class=None):             # <<<<<<<<<<<<<<
@@ -21553,7 +21554,7 @@ static int __pyx_pw_4lxml_9objectify_27ObjectifyElementClassLookup_1__init__(PyO
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1377, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "__init__") < 0)) __PYX_ERR(0, 1378, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -21570,7 +21571,7 @@ static int __pyx_pw_4lxml_9objectify_27ObjectifyElementClassLookup_1__init__(PyO
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1377, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("__init__", 0, 0, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1378, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.ObjectifyElementClassLookup.__init__", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -21592,7 +21593,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_INCREF(__pyx_v_tree_class);
   __Pyx_INCREF(__pyx_v_empty_data_class);
 
-  /* "lxml/objectify.pyx":1386
+  /* "lxml/objectify.pyx":1387
  *         empty data elements (defaults to StringElement).
  *         """
  *         self._lookup_function = _lookupElementClass             # <<<<<<<<<<<<<<
@@ -21601,7 +21602,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   __pyx_v_self->__pyx_base._lookup_function = __pyx_f_4lxml_9objectify__lookupElementClass;
 
-  /* "lxml/objectify.pyx":1387
+  /* "lxml/objectify.pyx":1388
  *         """
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:             # <<<<<<<<<<<<<<
@@ -21612,7 +21613,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1388
+    /* "lxml/objectify.pyx":1389
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:
  *             tree_class = ObjectifiedElement             # <<<<<<<<<<<<<<
@@ -21622,7 +21623,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
     __Pyx_DECREF_SET(__pyx_v_tree_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
 
-    /* "lxml/objectify.pyx":1387
+    /* "lxml/objectify.pyx":1388
  *         """
  *         self._lookup_function = _lookupElementClass
  *         if tree_class is None:             # <<<<<<<<<<<<<<
@@ -21631,7 +21632,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   }
 
-  /* "lxml/objectify.pyx":1389
+  /* "lxml/objectify.pyx":1390
  *         if tree_class is None:
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class             # <<<<<<<<<<<<<<
@@ -21644,7 +21645,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_DECREF(__pyx_v_self->tree_class);
   __pyx_v_self->tree_class = __pyx_v_tree_class;
 
-  /* "lxml/objectify.pyx":1390
+  /* "lxml/objectify.pyx":1391
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class
  *         if empty_data_class is None:             # <<<<<<<<<<<<<<
@@ -21655,7 +21656,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1391
+    /* "lxml/objectify.pyx":1392
  *         self.tree_class = tree_class
  *         if empty_data_class is None:
  *             empty_data_class = StringElement             # <<<<<<<<<<<<<<
@@ -21665,7 +21666,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
     __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
     __Pyx_DECREF_SET(__pyx_v_empty_data_class, ((PyObject *)__pyx_ptype_4lxml_9objectify_StringElement));
 
-    /* "lxml/objectify.pyx":1390
+    /* "lxml/objectify.pyx":1391
  *             tree_class = ObjectifiedElement
  *         self.tree_class = tree_class
  *         if empty_data_class is None:             # <<<<<<<<<<<<<<
@@ -21674,7 +21675,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
  */
   }
 
-  /* "lxml/objectify.pyx":1392
+  /* "lxml/objectify.pyx":1393
  *         if empty_data_class is None:
  *             empty_data_class = StringElement
  *         self.empty_data_class = empty_data_class             # <<<<<<<<<<<<<<
@@ -21687,7 +21688,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   __Pyx_DECREF(__pyx_v_self->empty_data_class);
   __pyx_v_self->empty_data_class = __pyx_v_empty_data_class;
 
-  /* "lxml/objectify.pyx":1377
+  /* "lxml/objectify.pyx":1378
  *     cdef object empty_data_class
  *     cdef object tree_class
  *     def __init__(self, tree_class=None, empty_data_class=None):             # <<<<<<<<<<<<<<
@@ -21703,7 +21704,7 @@ static int __pyx_pf_4lxml_9objectify_27ObjectifyElementClassLookup___init__(stru
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1394
+/* "lxml/objectify.pyx":1395
  *         self.empty_data_class = empty_data_class
  * 
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -21730,7 +21731,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_lookupElementClass", 0);
 
-  /* "lxml/objectify.pyx":1396
+  /* "lxml/objectify.pyx":1397
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):
  *     cdef ObjectifyElementClassLookup lookup
  *     lookup = <ObjectifyElementClassLookup>state             # <<<<<<<<<<<<<<
@@ -21742,7 +21743,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_v_lookup = ((struct __pyx_obj_4lxml_9objectify_ObjectifyElementClassLookup *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1398
+  /* "lxml/objectify.pyx":1399
  *     lookup = <ObjectifyElementClassLookup>state
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -21752,7 +21753,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_2 = (hasChild(__pyx_v_c_node) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1399
+    /* "lxml/objectify.pyx":1400
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):
  *         return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -21764,7 +21765,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_lookup->tree_class;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1398
+    /* "lxml/objectify.pyx":1399
  *     lookup = <ObjectifyElementClassLookup>state
  *     # if element has children => no data class
  *     if cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -21773,20 +21774,20 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1402
+  /* "lxml/objectify.pyx":1403
  * 
  *     # if element is defined as xsi:nil, return NoneElement class
  *     if u"true" == cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
  *         return NoneElement
  */
-  __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, 1402, __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, 1403, __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, 1402, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PyUnicode_Equals(__pyx_n_u_true, __pyx_t_1, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1403, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1404
+    /* "lxml/objectify.pyx":1405
  *     if u"true" == cetree.attributeValueFromNsName(
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil"):
  *         return NoneElement             # <<<<<<<<<<<<<<
@@ -21798,7 +21799,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = ((PyObject *)__pyx_ptype_4lxml_9objectify_NoneElement);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1402
+    /* "lxml/objectify.pyx":1403
  * 
  *     # if element is defined as xsi:nil, return NoneElement class
  *     if u"true" == cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
@@ -21807,19 +21808,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1407
+  /* "lxml/objectify.pyx":1408
  * 
  *     # check for Python type hint
  *     value = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  */
-  __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, 1407, __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, 1408, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_value = __pyx_t_1;
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1409
+  /* "lxml/objectify.pyx":1410
  *     value = cetree.attributeValueFromNsName(
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21830,17 +21831,17 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1410
+    /* "lxml/objectify.pyx":1411
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  */
-    __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, 1410, __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, 1411, __pyx_L1_error)
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1411
+      /* "lxml/objectify.pyx":1412
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:
  *             return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -21852,7 +21853,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_lookup->tree_class;
       goto __pyx_L0;
 
-      /* "lxml/objectify.pyx":1410
+      /* "lxml/objectify.pyx":1411
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:
  *         if value == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -21861,7 +21862,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1412
+    /* "lxml/objectify.pyx":1413
  *         if value == TREE_PYTYPE_NAME:
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -21870,9 +21871,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-      __PYX_ERR(0, 1412, __pyx_L1_error)
+      __PYX_ERR(0, 1413, __pyx_L1_error)
     }
-    __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1412, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1413, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __pyx_t_4 = __pyx_t_1;
     __Pyx_INCREF(__pyx_t_4);
@@ -21880,7 +21881,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1413
+    /* "lxml/objectify.pyx":1414
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:             # <<<<<<<<<<<<<<
@@ -21891,7 +21892,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1414
+      /* "lxml/objectify.pyx":1415
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:
  *             return py_type._type             # <<<<<<<<<<<<<<
@@ -21903,7 +21904,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_py_type->_type;
       goto __pyx_L0;
 
-      /* "lxml/objectify.pyx":1413
+      /* "lxml/objectify.pyx":1414
  *             return lookup.tree_class
  *         py_type = <PyType>_PYTYPE_DICT.get(value)
  *         if py_type is not None:             # <<<<<<<<<<<<<<
@@ -21912,7 +21913,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1409
+    /* "lxml/objectify.pyx":1410
  *     value = cetree.attributeValueFromNsName(
  *         c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21921,19 +21922,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1418
+  /* "lxml/objectify.pyx":1419
  * 
  *     # check for XML Schema type hint
  *     value = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  */
-  __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, 1418, __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, 1419, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1421
+  /* "lxml/objectify.pyx":1422
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -21944,7 +21945,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1422
+    /* "lxml/objectify.pyx":1423
  * 
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -21953,9 +21954,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     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, 1422, __pyx_L1_error)
+      __PYX_ERR(0, 1423, __pyx_L1_error)
     }
-    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1422, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1423, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_1 = __pyx_t_4;
     __Pyx_INCREF(__pyx_t_1);
@@ -21963,7 +21964,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_v_schema_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1423
+    /* "lxml/objectify.pyx":1424
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:             # <<<<<<<<<<<<<<
@@ -21977,22 +21978,22 @@ 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__17, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1423, __pyx_L1_error)
+    __pyx_t_5 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_value, Py_EQ)); if (unlikely(__pyx_t_5 < 0)) __PYX_ERR(0, 1424, __pyx_L1_error)
     __pyx_t_2 = (__pyx_t_5 != 0);
     __pyx_t_3 = __pyx_t_2;
     __pyx_L10_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1424
+      /* "lxml/objectify.pyx":1425
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)             # <<<<<<<<<<<<<<
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
-      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_value, __pyx_n_s_split); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1425, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
-      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1424, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __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))) {
@@ -22001,7 +22002,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          __PYX_ERR(0, 1424, __pyx_L1_error)
+          __PYX_ERR(0, 1425, __pyx_L1_error)
         }
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -22014,15 +22015,15 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_INCREF(__pyx_t_1);
         __Pyx_INCREF(__pyx_t_6);
         #else
-        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1424, __pyx_L1_error)
+        __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1425, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
-        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1424, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1425, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1424, __pyx_L1_error)
+        __pyx_t_7 = PyObject_GetIter(__pyx_t_4); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1425, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
         __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -22030,7 +22031,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_GOTREF(__pyx_t_1);
         index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L12_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_6);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1424, __pyx_L1_error)
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1425, __pyx_L1_error)
         __pyx_t_8 = NULL;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L13_unpacking_done;
@@ -22038,7 +22039,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_8 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        __PYX_ERR(0, 1424, __pyx_L1_error)
+        __PYX_ERR(0, 1425, __pyx_L1_error)
         __pyx_L13_unpacking_done:;
       }
       __pyx_v_prefix = __pyx_t_1;
@@ -22046,7 +22047,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __Pyx_DECREF_SET(__pyx_v_value, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1425
+      /* "lxml/objectify.pyx":1426
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)             # <<<<<<<<<<<<<<
@@ -22055,9 +22056,9 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
       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, 1425, __pyx_L1_error)
+        __PYX_ERR(0, 1426, __pyx_L1_error)
       }
-      __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1425, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_value, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1426, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_6 = __pyx_t_4;
       __Pyx_INCREF(__pyx_t_6);
@@ -22065,7 +22066,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __Pyx_DECREF_SET(__pyx_v_schema_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1423
+      /* "lxml/objectify.pyx":1424
  *     if value is not None:
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:             # <<<<<<<<<<<<<<
@@ -22074,7 +22075,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1426
+    /* "lxml/objectify.pyx":1427
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:             # <<<<<<<<<<<<<<
@@ -22085,7 +22086,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1427
+      /* "lxml/objectify.pyx":1428
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  *             return schema_type._type             # <<<<<<<<<<<<<<
@@ -22097,7 +22098,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
       __pyx_r = __pyx_v_schema_type->_type;
       goto __pyx_L0;
 
-      /* "lxml/objectify.pyx":1426
+      /* "lxml/objectify.pyx":1427
  *             prefix, value = value.split(u':', 1)
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:             # <<<<<<<<<<<<<<
@@ -22106,7 +22107,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1421
+    /* "lxml/objectify.pyx":1422
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  * 
  *     if value is not None:             # <<<<<<<<<<<<<<
@@ -22115,19 +22116,19 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1430
+  /* "lxml/objectify.pyx":1431
  * 
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)             # <<<<<<<<<<<<<<
  *     if el_class is not None:
  *         return el_class
  */
-  __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1430, __pyx_L1_error)
+  __pyx_t_6 = __pyx_f_4lxml_9objectify__guessElementClass(__pyx_v_c_node); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1431, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_v_el_class = __pyx_t_6;
   __pyx_t_6 = 0;
 
-  /* "lxml/objectify.pyx":1431
+  /* "lxml/objectify.pyx":1432
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:             # <<<<<<<<<<<<<<
@@ -22138,7 +22139,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1432
+    /* "lxml/objectify.pyx":1433
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:
  *         return el_class             # <<<<<<<<<<<<<<
@@ -22150,7 +22151,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_el_class;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1431
+    /* "lxml/objectify.pyx":1432
  *     # otherwise determine class based on text content type
  *     el_class = _guessElementClass(c_node)
  *     if el_class is not None:             # <<<<<<<<<<<<<<
@@ -22159,7 +22160,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1435
+  /* "lxml/objectify.pyx":1436
  * 
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):             # <<<<<<<<<<<<<<
@@ -22177,7 +22178,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_L17_bool_binop_done:;
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1436
+    /* "lxml/objectify.pyx":1437
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):
  *         return lookup.tree_class             # <<<<<<<<<<<<<<
@@ -22189,7 +22190,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
     __pyx_r = __pyx_v_lookup->tree_class;
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1435
+    /* "lxml/objectify.pyx":1436
  * 
  *     # if element is a root node => default to tree node
  *     if c_node.parent is NULL or not tree._isElement(c_node.parent):             # <<<<<<<<<<<<<<
@@ -22198,7 +22199,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1438
+  /* "lxml/objectify.pyx":1439
  *         return lookup.tree_class
  * 
  *     return lookup.empty_data_class             # <<<<<<<<<<<<<<
@@ -22210,7 +22211,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   __pyx_r = __pyx_v_lookup->empty_data_class;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1394
+  /* "lxml/objectify.pyx":1395
  *         self.empty_data_class = empty_data_class
  * 
  * cdef object _lookupElementClass(state, _Document doc, tree.xmlNode* c_node):             # <<<<<<<<<<<<<<
@@ -22238,7 +22239,7 @@ static PyObject *__pyx_f_4lxml_9objectify__lookupElementClass(PyObject *__pyx_v_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1444
+/* "lxml/objectify.pyx":1445
  * # Type annotations
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):             # <<<<<<<<<<<<<<
@@ -22261,7 +22262,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   int __pyx_t_9;
   __Pyx_RefNannySetupContext("_check_type", 0);
 
-  /* "lxml/objectify.pyx":1445
+  /* "lxml/objectify.pyx":1446
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -22272,7 +22273,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1446
+    /* "lxml/objectify.pyx":1447
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:
  *         return None             # <<<<<<<<<<<<<<
@@ -22283,7 +22284,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1445
+    /* "lxml/objectify.pyx":1446
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -22292,19 +22293,19 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
  */
   }
 
-  /* "lxml/objectify.pyx":1447
+  /* "lxml/objectify.pyx":1448
  *     if pytype is None:
  *         return None
  *     value = textOf(c_node)             # <<<<<<<<<<<<<<
  *     try:
  *         pytype.type_check(value)
  */
-  __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1447, __pyx_L1_error)
+  __pyx_t_3 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1448, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_v_value = __pyx_t_3;
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1448
+  /* "lxml/objectify.pyx":1449
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -22320,7 +22321,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_XGOTREF(__pyx_t_6);
     /*try:*/ {
 
-      /* "lxml/objectify.pyx":1449
+      /* "lxml/objectify.pyx":1450
  *     value = textOf(c_node)
  *     try:
  *         pytype.type_check(value)             # <<<<<<<<<<<<<<
@@ -22340,12 +22341,12 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
       }
       __pyx_t_3 = (__pyx_t_8) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_8, __pyx_v_value) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_value);
       __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
-      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1449, __pyx_L4_error)
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1450, __pyx_L4_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":1450
+      /* "lxml/objectify.pyx":1451
  *     try:
  *         pytype.type_check(value)
  *         return pytype             # <<<<<<<<<<<<<<
@@ -22357,7 +22358,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
       __pyx_r = __pyx_v_pytype;
       goto __pyx_L8_try_return;
 
-      /* "lxml/objectify.pyx":1448
+      /* "lxml/objectify.pyx":1449
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -22370,7 +22371,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
     __Pyx_XDECREF(__pyx_t_8); __pyx_t_8 = 0;
 
-    /* "lxml/objectify.pyx":1451
+    /* "lxml/objectify.pyx":1452
  *         pytype.type_check(value)
  *         return pytype
  *     except IGNORABLE_ERRORS:             # <<<<<<<<<<<<<<
@@ -22385,7 +22386,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     goto __pyx_L6_except_error;
     __pyx_L6_except_error:;
 
-    /* "lxml/objectify.pyx":1448
+    /* "lxml/objectify.pyx":1449
  *         return None
  *     value = textOf(c_node)
  *     try:             # <<<<<<<<<<<<<<
@@ -22410,7 +22411,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
     __Pyx_ExceptionReset(__pyx_t_4, __pyx_t_5, __pyx_t_6);
   }
 
-  /* "lxml/objectify.pyx":1454
+  /* "lxml/objectify.pyx":1455
  *         # could not be parsed as the specified type => ignore
  *         pass
  *     return None             # <<<<<<<<<<<<<<
@@ -22421,7 +22422,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   __pyx_r = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None); __Pyx_INCREF(Py_None);
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1444
+  /* "lxml/objectify.pyx":1445
  * # Type annotations
  * 
  * cdef PyType _check_type(tree.xmlNode* c_node, PyType pytype):             # <<<<<<<<<<<<<<
@@ -22443,7 +22444,7 @@ static struct __pyx_obj_4lxml_9objectify_PyType *__pyx_f_4lxml_9objectify__check
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1456
+/* "lxml/objectify.pyx":1457
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22469,7 +22470,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
     values[1] = ((PyObject *)((PyObject *)Py_False));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "lxml/objectify.pyx":1457
+    /* "lxml/objectify.pyx":1458
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,
  *              empty_pytype=None):             # <<<<<<<<<<<<<<
@@ -22500,7 +22501,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) __PYX_ERR(0, 1456, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "pyannotate") < 0)) __PYX_ERR(0, 1457, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22514,7 +22515,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1456, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("pyannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1457, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.pyannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22522,7 +22523,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_21pyannotate(PyObject *__pyx_self, Py
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_20pyannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype);
 
-  /* "lxml/objectify.pyx":1456
+  /* "lxml/objectify.pyx":1457
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22544,32 +22545,32 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("pyannotate", 0);
 
-  /* "lxml/objectify.pyx":1476
+  /* "lxml/objectify.pyx":1477
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1476, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1477, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1477
+  /* "lxml/objectify.pyx":1478
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)             # <<<<<<<<<<<<<<
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1477, __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, 1477, __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, 1477, __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, 1478, __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, 1478, __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, 1478, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1456
+  /* "lxml/objectify.pyx":1457
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22591,7 +22592,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_20pyannotate(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1479
+/* "lxml/objectify.pyx":1480
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22617,7 +22618,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
     values[1] = ((PyObject *)((PyObject *)Py_False));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "lxml/objectify.pyx":1480
+    /* "lxml/objectify.pyx":1481
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,
  *                 empty_type=None):             # <<<<<<<<<<<<<<
@@ -22648,7 +22649,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) __PYX_ERR(0, 1479, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "xsiannotate") < 0)) __PYX_ERR(0, 1480, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22662,7 +22663,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1479, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("xsiannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1480, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.xsiannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22670,7 +22671,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_23xsiannotate(PyObject *__pyx_self, P
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_22xsiannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_pytype, __pyx_v_empty_type);
 
-  /* "lxml/objectify.pyx":1479
+  /* "lxml/objectify.pyx":1480
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22692,32 +22693,32 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
   int __pyx_t_3;
   __Pyx_RefNannySetupContext("xsiannotate", 0);
 
-  /* "lxml/objectify.pyx":1504
+  /* "lxml/objectify.pyx":1505
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1504, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1505, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1505
+  /* "lxml/objectify.pyx":1506
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)             # <<<<<<<<<<<<<<
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1505, __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, 1505, __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, 1505, __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, 1506, __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, 1506, __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, 1506, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1479
+  /* "lxml/objectify.pyx":1480
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
@@ -22739,7 +22740,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_22xsiannotate(CYTHON_UNUSED PyObject
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1507
+/* "lxml/objectify.pyx":1508
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22768,7 +22769,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
     values[1] = ((PyObject *)((PyObject *)Py_True));
     values[2] = ((PyObject *)((PyObject *)Py_False));
 
-    /* "lxml/objectify.pyx":1508
+    /* "lxml/objectify.pyx":1509
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,             # <<<<<<<<<<<<<<
@@ -22802,7 +22803,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) __PYX_ERR(0, 1507, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "annotate") < 0)) __PYX_ERR(0, 1508, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -22819,7 +22820,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1507, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("annotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1508, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.annotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -22827,7 +22828,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_25annotate(PyObject *__pyx_self, PyOb
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_24annotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_ignore_old, __pyx_v_ignore_xsi, __pyx_v_empty_pytype, __pyx_v_empty_type, __pyx_v_annotate_xsi, __pyx_v_annotate_pytype);
 
-  /* "lxml/objectify.pyx":1507
+  /* "lxml/objectify.pyx":1508
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22851,50 +22852,50 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
   int __pyx_t_5;
   __Pyx_RefNannySetupContext("annotate", 0);
 
-  /* "lxml/objectify.pyx":1541
+  /* "lxml/objectify.pyx":1542
  *     """
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)             # <<<<<<<<<<<<<<
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
  *               ignore_old, empty_type, empty_pytype)
  */
-  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1541, __pyx_L1_error)
+  __pyx_t_1 = ((PyObject *)rootNodeOrRaise(__pyx_v_element_or_tree)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1542, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_element = ((struct LxmlElement *)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1542
+  /* "lxml/objectify.pyx":1543
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,             # <<<<<<<<<<<<<<
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_annotate_xsi); if (unlikely((__pyx_t_2 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1542, __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, 1542, __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, 1542, __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, 1543, __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, 1543, __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, 1543, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1543
+  /* "lxml/objectify.pyx":1544
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,
  *               ignore_old, empty_type, empty_pytype)             # <<<<<<<<<<<<<<
  * 
  * 
  */
-  __pyx_t_5 = __Pyx_PyObject_IsTrue(__pyx_v_ignore_old); if (unlikely((__pyx_t_5 == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1543, __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, 1544, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1542
+  /* "lxml/objectify.pyx":1543
  *     cdef _Element  element
  *     element = cetree.rootNodeOrRaise(element_or_tree)
  *     _annotate(element, annotate_xsi, annotate_pytype, ignore_xsi,             # <<<<<<<<<<<<<<
  *               ignore_old, empty_type, empty_pytype)
  * 
  */
-  __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, 1542, __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, 1543, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1507
+  /* "lxml/objectify.pyx":1508
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
@@ -22916,7 +22917,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_24annotate(CYTHON_UNUSED PyObject *__
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1546
+/* "lxml/objectify.pyx":1547
  * 
  * 
  * cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype,             # <<<<<<<<<<<<<<
@@ -22942,7 +22943,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __Pyx_INCREF(__pyx_v_empty_type_name);
   __Pyx_INCREF(__pyx_v_empty_pytype_name);
 
-  /* "lxml/objectify.pyx":1553
+  /* "lxml/objectify.pyx":1554
  *     cdef PyType empty_pytype, StrType, NoneType
  * 
  *     if not annotate_xsi and not annotate_pytype:             # <<<<<<<<<<<<<<
@@ -22960,7 +22961,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_L4_bool_binop_done:;
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1554
+    /* "lxml/objectify.pyx":1555
  * 
  *     if not annotate_xsi and not annotate_pytype:
  *         return             # <<<<<<<<<<<<<<
@@ -22971,7 +22972,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_r = Py_None; __Pyx_INCREF(Py_None);
     goto __pyx_L0;
 
-    /* "lxml/objectify.pyx":1553
+    /* "lxml/objectify.pyx":1554
  *     cdef PyType empty_pytype, StrType, NoneType
  * 
  *     if not annotate_xsi and not annotate_pytype:             # <<<<<<<<<<<<<<
@@ -22980,7 +22981,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1556
+  /* "lxml/objectify.pyx":1557
  *         return
  * 
  *     if empty_type_name is not None:             # <<<<<<<<<<<<<<
@@ -22991,7 +22992,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1557
+    /* "lxml/objectify.pyx":1558
  * 
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):             # <<<<<<<<<<<<<<
@@ -23002,7 +23003,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1558
+      /* "lxml/objectify.pyx":1559
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")             # <<<<<<<<<<<<<<
@@ -23011,14 +23012,14 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
       if (unlikely(__pyx_v_empty_type_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-        __PYX_ERR(0, 1558, __pyx_L1_error)
+        __PYX_ERR(0, 1559, __pyx_L1_error)
       }
-      __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1558, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_type_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1559, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_empty_type_name, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":1557
+      /* "lxml/objectify.pyx":1558
  * 
  *     if empty_type_name is not None:
  *         if isinstance(empty_type_name, bytes):             # <<<<<<<<<<<<<<
@@ -23027,7 +23028,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1559
+    /* "lxml/objectify.pyx":1560
  *         if isinstance(empty_type_name, bytes):
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)             # <<<<<<<<<<<<<<
@@ -23036,9 +23037,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     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, 1559, __pyx_L1_error)
+      __PYX_ERR(0, 1560, __pyx_L1_error)
     }
-    __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1559, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_empty_type_name, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1560, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_3);
     __pyx_t_4 = __pyx_t_3;
     __Pyx_INCREF(__pyx_t_4);
@@ -23046,7 +23047,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
     __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1556
+    /* "lxml/objectify.pyx":1557
  *         return
  * 
  *     if empty_type_name is not None:             # <<<<<<<<<<<<<<
@@ -23056,7 +23057,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     goto __pyx_L6;
   }
 
-  /* "lxml/objectify.pyx":1560
+  /* "lxml/objectify.pyx":1561
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -23067,7 +23068,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1561
+    /* "lxml/objectify.pyx":1562
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):             # <<<<<<<<<<<<<<
@@ -23078,7 +23079,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1562
+      /* "lxml/objectify.pyx":1563
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")             # <<<<<<<<<<<<<<
@@ -23087,14 +23088,14 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
       if (unlikely(__pyx_v_empty_pytype_name == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "decode");
-        __PYX_ERR(0, 1562, __pyx_L1_error)
+        __PYX_ERR(0, 1563, __pyx_L1_error)
       }
-      __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1562, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_decode_bytes(((PyObject*)__pyx_v_empty_pytype_name), 0, PY_SSIZE_T_MAX, NULL, NULL, PyUnicode_DecodeASCII); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1563, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_empty_pytype_name, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1561
+      /* "lxml/objectify.pyx":1562
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:
  *         if isinstance(empty_pytype_name, bytes):             # <<<<<<<<<<<<<<
@@ -23103,7 +23104,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     }
 
-    /* "lxml/objectify.pyx":1563
+    /* "lxml/objectify.pyx":1564
  *         if isinstance(empty_pytype_name, bytes):
  *             empty_pytype_name = (<bytes>empty_pytype_name).decode("ascii")
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)             # <<<<<<<<<<<<<<
@@ -23112,9 +23113,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-      __PYX_ERR(0, 1563, __pyx_L1_error)
+      __PYX_ERR(0, 1564, __pyx_L1_error)
     }
-    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1563, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_empty_pytype_name, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1564, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_t_3 = __pyx_t_4;
     __Pyx_INCREF(__pyx_t_3);
@@ -23122,7 +23123,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     __pyx_v_empty_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
     __pyx_t_3 = 0;
 
-    /* "lxml/objectify.pyx":1560
+    /* "lxml/objectify.pyx":1561
  *             empty_type_name = (<bytes>empty_type_name).decode("ascii")
  *         empty_pytype = <PyType>_SCHEMA_TYPE_DICT.get(empty_type_name)
  *     elif empty_pytype_name is not None:             # <<<<<<<<<<<<<<
@@ -23132,7 +23133,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
     goto __pyx_L6;
   }
 
-  /* "lxml/objectify.pyx":1565
+  /* "lxml/objectify.pyx":1566
  *         empty_pytype = <PyType>_PYTYPE_DICT.get(empty_pytype_name)
  *     else:
  *         empty_pytype = None             # <<<<<<<<<<<<<<
@@ -23145,7 +23146,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   }
   __pyx_L6:;
 
-  /* "lxml/objectify.pyx":1567
+  /* "lxml/objectify.pyx":1568
  *         empty_pytype = None
  * 
  *     StrType  = <PyType>_PYTYPE_DICT.get(u'str')             # <<<<<<<<<<<<<<
@@ -23154,9 +23155,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   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)
+    __PYX_ERR(0, 1568, __pyx_L1_error)
   }
-  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1567, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_str, Py_None); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1568, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_t_4 = __pyx_t_3;
   __Pyx_INCREF(__pyx_t_4);
@@ -23164,7 +23165,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_StrType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1568
+  /* "lxml/objectify.pyx":1569
  * 
  *     StrType  = <PyType>_PYTYPE_DICT.get(u'str')
  *     NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')             # <<<<<<<<<<<<<<
@@ -23173,9 +23174,9 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
     PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-    __PYX_ERR(0, 1568, __pyx_L1_error)
+    __PYX_ERR(0, 1569, __pyx_L1_error)
   }
-  __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1568, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_n_u_NoneType, Py_None); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1569, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __pyx_t_3 = __pyx_t_4;
   __Pyx_INCREF(__pyx_t_3);
@@ -23183,7 +23184,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_NoneType = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1570
+  /* "lxml/objectify.pyx":1571
  *     NoneType = <PyType>_PYTYPE_DICT.get(u'NoneType')
  * 
  *     doc = element._doc             # <<<<<<<<<<<<<<
@@ -23195,7 +23196,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_v_doc = ((struct LxmlDocument *)__pyx_t_3);
   __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1571
+  /* "lxml/objectify.pyx":1572
  * 
  *     doc = element._doc
  *     c_node = element._c_node             # <<<<<<<<<<<<<<
@@ -23205,7 +23206,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_5 = __pyx_v_element->_c_node;
   __pyx_v_c_node = __pyx_t_5;
 
-  /* "lxml/objectify.pyx":1572
+  /* "lxml/objectify.pyx":1573
  *     doc = element._doc
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)             # <<<<<<<<<<<<<<
@@ -23214,7 +23215,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   BEGIN_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node, __pyx_v_c_node, 1);
 
-  /* "lxml/objectify.pyx":1573
+  /* "lxml/objectify.pyx":1574
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -23224,16 +23225,16 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   __pyx_t_1 = ((__pyx_v_c_node->type == XML_ELEMENT_NODE) != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1574
+    /* "lxml/objectify.pyx":1575
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:
  *         _annotate_element(c_node, doc, annotate_xsi, annotate_pytype,             # <<<<<<<<<<<<<<
  *                           ignore_xsi, ignore_pytype,
  *                           empty_type_name, empty_pytype, StrType, NoneType)
  */
-    __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, 1574, __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, 1575, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":1573
+    /* "lxml/objectify.pyx":1574
  *     c_node = element._c_node
  *     tree.BEGIN_FOR_EACH_ELEMENT_FROM(c_node, c_node, 1)
  *     if c_node.type == tree.XML_ELEMENT_NODE:             # <<<<<<<<<<<<<<
@@ -23242,7 +23243,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   }
 
-  /* "lxml/objectify.pyx":1577
+  /* "lxml/objectify.pyx":1578
  *                           ignore_xsi, ignore_pytype,
  *                           empty_type_name, empty_pytype, StrType, NoneType)
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)             # <<<<<<<<<<<<<<
@@ -23251,7 +23252,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
  */
   END_FOR_EACH_ELEMENT_FROM(__pyx_v_c_node);
 
-  /* "lxml/objectify.pyx":1546
+  /* "lxml/objectify.pyx":1547
  * 
  * 
  * cdef _annotate(_Element element, bint annotate_xsi, bint annotate_pytype,             # <<<<<<<<<<<<<<
@@ -23279,7 +23280,7 @@ static PyObject *__pyx_f_4lxml_9objectify__annotate(struct LxmlElement *__pyx_v_
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1579
+/* "lxml/objectify.pyx":1580
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  * cdef int _annotate_element(tree.xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
@@ -23309,7 +23310,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   PyObject *(*__pyx_t_8)(PyObject *);
   __Pyx_RefNannySetupContext("_annotate_element", 0);
 
-  /* "lxml/objectify.pyx":1585
+  /* "lxml/objectify.pyx":1586
  *                            PyType StrType, PyType NoneType) except -1:
  *     cdef tree.xmlNs*   c_ns
  *     cdef PyType pytype = None             # <<<<<<<<<<<<<<
@@ -23319,7 +23320,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __Pyx_INCREF(Py_None);
   __pyx_v_pytype = ((struct __pyx_obj_4lxml_9objectify_PyType *)Py_None);
 
-  /* "lxml/objectify.pyx":1586
+  /* "lxml/objectify.pyx":1587
  *     cdef tree.xmlNs*   c_ns
  *     cdef PyType pytype = None
  *     typename = None             # <<<<<<<<<<<<<<
@@ -23329,7 +23330,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __Pyx_INCREF(Py_None);
   __pyx_v_typename = Py_None;
 
-  /* "lxml/objectify.pyx":1587
+  /* "lxml/objectify.pyx":1588
  *     cdef PyType pytype = None
  *     typename = None
  *     istree = 0             # <<<<<<<<<<<<<<
@@ -23338,20 +23339,20 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   __pyx_v_istree = 0;
 
-  /* "lxml/objectify.pyx":1590
+  /* "lxml/objectify.pyx":1591
  * 
  *     # if element is defined as xsi:nil, represent it as None
  *     if cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
  *         pytype = NoneType
  */
-  __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, 1590, __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, 1591, __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, 1591, __pyx_L1_error)
+  __pyx_t_2 = (__Pyx_PyString_Equals(__pyx_t_1, __pyx_n_s_true, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1592, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1592
+    /* "lxml/objectify.pyx":1593
  *     if cetree.attributeValueFromNsName(
  *         c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"nil") == "true":
  *         pytype = NoneType             # <<<<<<<<<<<<<<
@@ -23361,7 +23362,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __Pyx_INCREF(((PyObject *)__pyx_v_NoneType));
     __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_NoneType);
 
-    /* "lxml/objectify.pyx":1590
+    /* "lxml/objectify.pyx":1591
  * 
  *     # if element is defined as xsi:nil, represent it as None
  *     if cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
@@ -23370,7 +23371,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1594
+  /* "lxml/objectify.pyx":1595
  *         pytype = NoneType
  * 
  *     if pytype is None and not ignore_xsi:             # <<<<<<<<<<<<<<
@@ -23389,19 +23390,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1596
+    /* "lxml/objectify.pyx":1597
  *     if pytype is None and not ignore_xsi:
  *         # check that old xsi type value is valid
  *         typename = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:
  */
-    __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, 1596, __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, 1597, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_1);
     __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_1);
     __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1598
+    /* "lxml/objectify.pyx":1599
  *         typename = cetree.attributeValueFromNsName(
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:             # <<<<<<<<<<<<<<
@@ -23412,7 +23413,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_4 = (__pyx_t_2 != 0);
     if (__pyx_t_4) {
 
-      /* "lxml/objectify.pyx":1599
+      /* "lxml/objectify.pyx":1600
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)             # <<<<<<<<<<<<<<
@@ -23421,9 +23422,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       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, 1599, __pyx_L1_error)
+        __PYX_ERR(0, 1600, __pyx_L1_error)
       }
-      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1599, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1600, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_1);
       __pyx_t_5 = __pyx_t_1;
       __Pyx_INCREF(__pyx_t_5);
@@ -23431,7 +23432,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_5));
       __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1600
+      /* "lxml/objectify.pyx":1601
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:             # <<<<<<<<<<<<<<
@@ -23445,22 +23446,22 @@ 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__17, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1600, __pyx_L1_error)
+      __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v_typename, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1601, __pyx_L1_error)
       __pyx_t_2 = (__pyx_t_3 != 0);
       __pyx_t_4 = __pyx_t_2;
       __pyx_L9_bool_binop_done:;
       if (__pyx_t_4) {
 
-        /* "lxml/objectify.pyx":1601
+        /* "lxml/objectify.pyx":1602
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)             # <<<<<<<<<<<<<<
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:
  */
-        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1601, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_typename, __pyx_n_s_split); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1602, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
-        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1601, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyObject_Call(__pyx_t_5, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __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))) {
@@ -23469,7 +23470,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            __PYX_ERR(0, 1601, __pyx_L1_error)
+            __PYX_ERR(0, 1602, __pyx_L1_error)
           }
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -23482,15 +23483,15 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(__pyx_t_5);
           __Pyx_INCREF(__pyx_t_6);
           #else
-          __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1601, __pyx_L1_error)
+          __pyx_t_5 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1602, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_5);
-          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1601, __pyx_L1_error)
+          __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1602, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           #endif
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1601, __pyx_L1_error)
+          __pyx_t_7 = PyObject_GetIter(__pyx_t_1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1602, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
           __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -23498,7 +23499,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_GOTREF(__pyx_t_5);
           index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L11_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_6);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1601, __pyx_L1_error)
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1602, __pyx_L1_error)
           __pyx_t_8 = NULL;
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           goto __pyx_L12_unpacking_done;
@@ -23506,7 +23507,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __pyx_t_8 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          __PYX_ERR(0, 1601, __pyx_L1_error)
+          __PYX_ERR(0, 1602, __pyx_L1_error)
           __pyx_L12_unpacking_done:;
         }
         __pyx_v_prefix = __pyx_t_5;
@@ -23514,7 +23515,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1602
+        /* "lxml/objectify.pyx":1603
  *             if pytype is None and u':' in typename:
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)             # <<<<<<<<<<<<<<
@@ -23523,9 +23524,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         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, 1602, __pyx_L1_error)
+          __PYX_ERR(0, 1603, __pyx_L1_error)
         }
-        __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1602, __pyx_L1_error)
+        __pyx_t_1 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_typename, Py_None); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1603, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_1);
         __pyx_t_6 = __pyx_t_1;
         __Pyx_INCREF(__pyx_t_6);
@@ -23533,7 +23534,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1600
+        /* "lxml/objectify.pyx":1601
  *         if typename is not None:
  *             pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is None and u':' in typename:             # <<<<<<<<<<<<<<
@@ -23542,7 +23543,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "lxml/objectify.pyx":1603
+      /* "lxml/objectify.pyx":1604
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23562,19 +23563,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_L14_bool_binop_done:;
       if (__pyx_t_4) {
 
-        /* "lxml/objectify.pyx":1607
+        /* "lxml/objectify.pyx":1608
  *                 # anyway, so just accept it if given as type
  *                 # information
  *                 pytype = _check_type(c_node, pytype)             # <<<<<<<<<<<<<<
  *                 if pytype is None:
  *                     typename = None
  */
-        __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, 1607, __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, 1608, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1608
+        /* "lxml/objectify.pyx":1609
  *                 # information
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:             # <<<<<<<<<<<<<<
@@ -23585,7 +23586,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_2 = (__pyx_t_4 != 0);
         if (__pyx_t_2) {
 
-          /* "lxml/objectify.pyx":1609
+          /* "lxml/objectify.pyx":1610
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:
  *                     typename = None             # <<<<<<<<<<<<<<
@@ -23595,7 +23596,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(Py_None);
           __Pyx_DECREF_SET(__pyx_v_typename, Py_None);
 
-          /* "lxml/objectify.pyx":1608
+          /* "lxml/objectify.pyx":1609
  *                 # information
  *                 pytype = _check_type(c_node, pytype)
  *                 if pytype is None:             # <<<<<<<<<<<<<<
@@ -23604,7 +23605,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "lxml/objectify.pyx":1603
+        /* "lxml/objectify.pyx":1604
  *                 prefix, typename = typename.split(u':', 1)
  *                 pytype = <PyType>_SCHEMA_TYPE_DICT.get(typename)
  *             if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23613,7 +23614,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "lxml/objectify.pyx":1598
+      /* "lxml/objectify.pyx":1599
  *         typename = cetree.attributeValueFromNsName(
  *             c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>"type")
  *         if typename is not None:             # <<<<<<<<<<<<<<
@@ -23622,7 +23623,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     }
 
-    /* "lxml/objectify.pyx":1594
+    /* "lxml/objectify.pyx":1595
  *         pytype = NoneType
  * 
  *     if pytype is None and not ignore_xsi:             # <<<<<<<<<<<<<<
@@ -23631,7 +23632,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1611
+  /* "lxml/objectify.pyx":1612
  *                     typename = None
  * 
  *     if pytype is None and not ignore_pytype:             # <<<<<<<<<<<<<<
@@ -23650,19 +23651,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_L18_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1613
+    /* "lxml/objectify.pyx":1614
  *     if pytype is None and not ignore_pytype:
  *         # check that old pytype value is valid
  *         old_pytypename = cetree.attributeValueFromNsName(             # <<<<<<<<<<<<<<
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  */
-    __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, 1613, __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, 1614, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_v_old_pytypename = __pyx_t_6;
     __pyx_t_6 = 0;
 
-    /* "lxml/objectify.pyx":1615
+    /* "lxml/objectify.pyx":1616
  *         old_pytypename = cetree.attributeValueFromNsName(
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:             # <<<<<<<<<<<<<<
@@ -23673,17 +23674,17 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1616
+      /* "lxml/objectify.pyx":1617
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
  *                 if not cetree.hasChild(c_node):
  *                     # only case where we should keep it,
  */
-      __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, 1616, __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, 1617, __pyx_L1_error)
       if (__pyx_t_3) {
 
-        /* "lxml/objectify.pyx":1617
+        /* "lxml/objectify.pyx":1618
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:
  *                 if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23693,7 +23694,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_3 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
         if (__pyx_t_3) {
 
-          /* "lxml/objectify.pyx":1620
+          /* "lxml/objectify.pyx":1621
  *                     # only case where we should keep it,
  *                     # everything else is clear enough
  *                     pytype = TREE_PYTYPE             # <<<<<<<<<<<<<<
@@ -23703,7 +23704,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
           __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE);
 
-          /* "lxml/objectify.pyx":1617
+          /* "lxml/objectify.pyx":1618
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:
  *                 if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23712,7 +23713,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "lxml/objectify.pyx":1616
+        /* "lxml/objectify.pyx":1617
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:
  *             if old_pytypename == TREE_PYTYPE_NAME:             # <<<<<<<<<<<<<<
@@ -23722,7 +23723,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         goto __pyx_L21;
       }
 
-      /* "lxml/objectify.pyx":1622
+      /* "lxml/objectify.pyx":1623
  *                     pytype = TREE_PYTYPE
  *             else:
  *                 if old_pytypename == 'none':             # <<<<<<<<<<<<<<
@@ -23730,10 +23731,10 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                     old_pytypename = "NoneType"
  */
       /*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, 1622, __pyx_L1_error)
+        __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, 1623, __pyx_L1_error)
         if (__pyx_t_3) {
 
-          /* "lxml/objectify.pyx":1624
+          /* "lxml/objectify.pyx":1625
  *                 if old_pytypename == 'none':
  *                     # transition from lxml 1.x
  *                     old_pytypename = "NoneType"             # <<<<<<<<<<<<<<
@@ -23743,7 +23744,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __Pyx_INCREF(__pyx_n_s_NoneType);
           __Pyx_DECREF_SET(__pyx_v_old_pytypename, __pyx_n_s_NoneType);
 
-          /* "lxml/objectify.pyx":1622
+          /* "lxml/objectify.pyx":1623
  *                     pytype = TREE_PYTYPE
  *             else:
  *                 if old_pytypename == 'none':             # <<<<<<<<<<<<<<
@@ -23752,7 +23753,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "lxml/objectify.pyx":1625
+        /* "lxml/objectify.pyx":1626
  *                     # transition from lxml 1.x
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)             # <<<<<<<<<<<<<<
@@ -23761,9 +23762,9 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
           PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-          __PYX_ERR(0, 1625, __pyx_L1_error)
+          __PYX_ERR(0, 1626, __pyx_L1_error)
         }
-        __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1625, __pyx_L1_error)
+        __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v_old_pytypename, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1626, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         __pyx_t_1 = __pyx_t_6;
         __Pyx_INCREF(__pyx_t_1);
@@ -23771,7 +23772,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
         __pyx_t_1 = 0;
 
-        /* "lxml/objectify.pyx":1626
+        /* "lxml/objectify.pyx":1627
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
  *                 if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23791,19 +23792,19 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_L25_bool_binop_done:;
         if (__pyx_t_3) {
 
-          /* "lxml/objectify.pyx":1630
+          /* "lxml/objectify.pyx":1631
  *                     # default anyway, so just accept it if given as
  *                     # type information
  *                     pytype = _check_type(c_node, pytype)             # <<<<<<<<<<<<<<
  * 
  *     if pytype is None:
  */
-          __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, 1630, __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, 1631, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_1);
           __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_1));
           __pyx_t_1 = 0;
 
-          /* "lxml/objectify.pyx":1626
+          /* "lxml/objectify.pyx":1627
  *                     old_pytypename = "NoneType"
  *                 pytype = <PyType>_PYTYPE_DICT.get(old_pytypename)
  *                 if pytype is not None and pytype is not StrType:             # <<<<<<<<<<<<<<
@@ -23814,7 +23815,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       }
       __pyx_L21:;
 
-      /* "lxml/objectify.pyx":1615
+      /* "lxml/objectify.pyx":1616
  *         old_pytypename = cetree.attributeValueFromNsName(
  *             c_node, _PYTYPE_NAMESPACE, _PYTYPE_ATTRIBUTE_NAME)
  *         if old_pytypename is not None:             # <<<<<<<<<<<<<<
@@ -23823,7 +23824,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     }
 
-    /* "lxml/objectify.pyx":1611
+    /* "lxml/objectify.pyx":1612
  *                     typename = None
  * 
  *     if pytype is None and not ignore_pytype:             # <<<<<<<<<<<<<<
@@ -23832,7 +23833,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1632
+  /* "lxml/objectify.pyx":1633
  *                     pytype = _check_type(c_node, pytype)
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23843,7 +23844,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1634
+    /* "lxml/objectify.pyx":1635
  *     if pytype is None:
  *         # try to guess type
  *         if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23853,22 +23854,22 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_2 = ((!(hasChild(__pyx_v_c_node) != 0)) != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1636
+      /* "lxml/objectify.pyx":1637
  *         if not cetree.hasChild(c_node):
  *             # element has no children => data class
  *             pytype = _guessPyType(textOf(c_node), StrType)             # <<<<<<<<<<<<<<
  *         else:
  *             istree = 1
  */
-      __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1636, __pyx_L1_error)
+      __pyx_t_1 = textOf(__pyx_v_c_node); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1637, __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, 1636, __pyx_L1_error)
+      __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__guessPyType(__pyx_t_1, __pyx_v_StrType)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1637, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
       __Pyx_DECREF_SET(__pyx_v_pytype, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1634
+      /* "lxml/objectify.pyx":1635
  *     if pytype is None:
  *         # try to guess type
  *         if not cetree.hasChild(c_node):             # <<<<<<<<<<<<<<
@@ -23878,7 +23879,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L28;
     }
 
-    /* "lxml/objectify.pyx":1638
+    /* "lxml/objectify.pyx":1639
  *             pytype = _guessPyType(textOf(c_node), StrType)
  *         else:
  *             istree = 1             # <<<<<<<<<<<<<<
@@ -23890,7 +23891,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L28:;
 
-    /* "lxml/objectify.pyx":1632
+    /* "lxml/objectify.pyx":1633
  *                     pytype = _check_type(c_node, pytype)
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23899,7 +23900,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1640
+  /* "lxml/objectify.pyx":1641
  *             istree = 1
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23910,7 +23911,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1642
+    /* "lxml/objectify.pyx":1643
  *     if pytype is None:
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):             # <<<<<<<<<<<<<<
@@ -23920,7 +23921,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (hasText(__pyx_v_c_node) != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1643
+      /* "lxml/objectify.pyx":1644
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):
  *             pytype = StrType             # <<<<<<<<<<<<<<
@@ -23930,7 +23931,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_INCREF(((PyObject *)__pyx_v_StrType));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_StrType);
 
-      /* "lxml/objectify.pyx":1642
+      /* "lxml/objectify.pyx":1643
  *     if pytype is None:
  *         # use default type for empty elements
  *         if cetree.hasText(c_node):             # <<<<<<<<<<<<<<
@@ -23940,7 +23941,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L30;
     }
 
-    /* "lxml/objectify.pyx":1645
+    /* "lxml/objectify.pyx":1646
  *             pytype = StrType
  *         else:
  *             pytype = empty_pytype             # <<<<<<<<<<<<<<
@@ -23951,7 +23952,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __Pyx_INCREF(((PyObject *)__pyx_v_empty_pytype));
       __Pyx_DECREF_SET(__pyx_v_pytype, __pyx_v_empty_pytype);
 
-      /* "lxml/objectify.pyx":1646
+      /* "lxml/objectify.pyx":1647
  *         else:
  *             pytype = empty_pytype
  *             if typename is None:             # <<<<<<<<<<<<<<
@@ -23962,7 +23963,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1647
+        /* "lxml/objectify.pyx":1648
  *             pytype = empty_pytype
  *             if typename is None:
  *                 typename = empty_type_name             # <<<<<<<<<<<<<<
@@ -23972,7 +23973,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __Pyx_INCREF(__pyx_v_empty_type_name);
         __Pyx_DECREF_SET(__pyx_v_typename, __pyx_v_empty_type_name);
 
-        /* "lxml/objectify.pyx":1646
+        /* "lxml/objectify.pyx":1647
  *         else:
  *             pytype = empty_pytype
  *             if typename is None:             # <<<<<<<<<<<<<<
@@ -23983,7 +23984,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L30:;
 
-    /* "lxml/objectify.pyx":1640
+    /* "lxml/objectify.pyx":1641
  *             istree = 1
  * 
  *     if pytype is None:             # <<<<<<<<<<<<<<
@@ -23992,7 +23993,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1649
+  /* "lxml/objectify.pyx":1650
  *                 typename = empty_type_name
  * 
  *     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -24003,7 +24004,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1650
+    /* "lxml/objectify.pyx":1651
  * 
  *     if pytype is not None:
  *         if typename is None:             # <<<<<<<<<<<<<<
@@ -24014,7 +24015,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1651
+      /* "lxml/objectify.pyx":1652
  *     if pytype is not None:
  *         if typename is None:
  *             if not istree:             # <<<<<<<<<<<<<<
@@ -24024,7 +24025,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_2 = ((!(__pyx_v_istree != 0)) != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1652
+        /* "lxml/objectify.pyx":1653
  *         if typename is None:
  *             if not istree:
  *                 if pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -24034,7 +24035,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_t_2 = (__pyx_v_pytype->_schema_types != Py_None)&&(PyList_GET_SIZE(__pyx_v_pytype->_schema_types) != 0);
         if (__pyx_t_2) {
 
-          /* "lxml/objectify.pyx":1655
+          /* "lxml/objectify.pyx":1656
  *                     # pytype->xsi:type is a 1:n mapping
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]             # <<<<<<<<<<<<<<
@@ -24043,14 +24044,14 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
           if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
             PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-            __PYX_ERR(0, 1655, __pyx_L1_error)
+            __PYX_ERR(0, 1656, __pyx_L1_error)
           }
-          __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1655, __pyx_L1_error)
+          __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1656, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "lxml/objectify.pyx":1652
+          /* "lxml/objectify.pyx":1653
  *         if typename is None:
  *             if not istree:
  *                 if pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -24059,7 +24060,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         }
 
-        /* "lxml/objectify.pyx":1651
+        /* "lxml/objectify.pyx":1652
  *     if pytype is not None:
  *         if typename is None:
  *             if not istree:             # <<<<<<<<<<<<<<
@@ -24068,7 +24069,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "lxml/objectify.pyx":1650
+      /* "lxml/objectify.pyx":1651
  * 
  *     if pytype is not None:
  *         if typename is None:             # <<<<<<<<<<<<<<
@@ -24078,18 +24079,18 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L33;
     }
 
-    /* "lxml/objectify.pyx":1656
+    /* "lxml/objectify.pyx":1657
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:             # <<<<<<<<<<<<<<
  *             typename = pytype._schema_types[0]
  * 
  */
-    __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, 1656, __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, 1657, __pyx_L1_error)
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1657
+      /* "lxml/objectify.pyx":1658
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:
  *             typename = pytype._schema_types[0]             # <<<<<<<<<<<<<<
@@ -24098,14 +24099,14 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       if (unlikely(__pyx_v_pytype->_schema_types == Py_None)) {
         PyErr_SetString(PyExc_TypeError, "'NoneType' object is not subscriptable");
-        __PYX_ERR(0, 1657, __pyx_L1_error)
+        __PYX_ERR(0, 1658, __pyx_L1_error)
       }
-      __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1657, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_GetItemInt_List(__pyx_v_pytype->_schema_types, 0, long, 1, __Pyx_PyInt_From_long, 1, 0, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1658, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __Pyx_DECREF_SET(__pyx_v_typename, __pyx_t_6);
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1656
+      /* "lxml/objectify.pyx":1657
  *                     # simply take the first
  *                     typename = pytype._schema_types[0]
  *         elif typename not in pytype._schema_types:             # <<<<<<<<<<<<<<
@@ -24115,7 +24116,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L33:;
 
-    /* "lxml/objectify.pyx":1649
+    /* "lxml/objectify.pyx":1650
  *                 typename = empty_type_name
  * 
  *     if pytype is not None:             # <<<<<<<<<<<<<<
@@ -24124,7 +24125,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1659
+  /* "lxml/objectify.pyx":1660
  *             typename = pytype._schema_types[0]
  * 
  *     if annotate_xsi:             # <<<<<<<<<<<<<<
@@ -24134,7 +24135,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_3 = (__pyx_v_annotate_xsi != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1660
+    /* "lxml/objectify.pyx":1661
  * 
  *     if annotate_xsi:
  *         if typename is None or istree:             # <<<<<<<<<<<<<<
@@ -24153,7 +24154,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_L38_bool_binop_done:;
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1661
+      /* "lxml/objectify.pyx":1662
  *     if annotate_xsi:
  *         if typename is None or istree:
  *             cetree.delAttributeFromNsName(             # <<<<<<<<<<<<<<
@@ -24162,7 +24163,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       (void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__XML_SCHEMA_INSTANCE_NS, ((unsigned char *)((unsigned char *)((char const *)"type")))));
 
-      /* "lxml/objectify.pyx":1660
+      /* "lxml/objectify.pyx":1661
  * 
  *     if annotate_xsi:
  *         if typename is None or istree:             # <<<<<<<<<<<<<<
@@ -24172,7 +24173,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L37;
     }
 
-    /* "lxml/objectify.pyx":1665
+    /* "lxml/objectify.pyx":1666
  *         else:
  *             # update or create attribute
  *             typename_utf8 = cetree.utf8(typename)             # <<<<<<<<<<<<<<
@@ -24180,12 +24181,12 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  */
     /*else*/ {
-      __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1665, __pyx_L1_error)
+      __pyx_t_6 = utf8(__pyx_v_typename); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1666, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_v_typename_utf8 = __pyx_t_6;
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1666
+      /* "lxml/objectify.pyx":1667
  *             # update or create attribute
  *             typename_utf8 = cetree.utf8(typename)
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24194,7 +24195,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __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":1668
+      /* "lxml/objectify.pyx":1669
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:             # <<<<<<<<<<<<<<
@@ -24204,25 +24205,25 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_3 = ((__pyx_v_c_ns != NULL) != 0);
       if (__pyx_t_3) {
 
-        /* "lxml/objectify.pyx":1669
+        /* "lxml/objectify.pyx":1670
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:             # <<<<<<<<<<<<<<
  *                     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__17, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1669, __pyx_L1_error)
+        __pyx_t_3 = (__Pyx_PySequence_ContainsTF(__pyx_kp_b__17, __pyx_v_typename_utf8, Py_EQ)); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1670, __pyx_L1_error)
         __pyx_t_4 = (__pyx_t_3 != 0);
         if (__pyx_t_4) {
 
-          /* "lxml/objectify.pyx":1670
+          /* "lxml/objectify.pyx":1671
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)             # <<<<<<<<<<<<<<
  *                     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__17, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1670, __pyx_L1_error)
+          __pyx_t_6 = __Pyx_CallUnboundCMethod2(&__pyx_umethod_PyBytes_Type_split, __pyx_v_typename_utf8, __pyx_kp_b__17, __pyx_int_1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1671, __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;
@@ -24230,7 +24231,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             if (unlikely(size != 2)) {
               if (size > 2) __Pyx_RaiseTooManyValuesError(2);
               else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-              __PYX_ERR(0, 1670, __pyx_L1_error)
+              __PYX_ERR(0, 1671, __pyx_L1_error)
             }
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
             if (likely(PyTuple_CheckExact(sequence))) {
@@ -24243,15 +24244,15 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_INCREF(__pyx_t_1);
             __Pyx_INCREF(__pyx_t_5);
             #else
-            __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1670, __pyx_L1_error)
+            __pyx_t_1 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1671, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_1);
-            __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1670, __pyx_L1_error)
+            __pyx_t_5 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1671, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             #endif
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
           } else {
             Py_ssize_t index = -1;
-            __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1670, __pyx_L1_error)
+            __pyx_t_7 = PyObject_GetIter(__pyx_t_6); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1671, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_7);
             __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
             __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -24259,7 +24260,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_GOTREF(__pyx_t_1);
             index = 1; __pyx_t_5 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_5)) goto __pyx_L42_unpacking_failed;
             __Pyx_GOTREF(__pyx_t_5);
-            if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1670, __pyx_L1_error)
+            if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1671, __pyx_L1_error)
             __pyx_t_8 = NULL;
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             goto __pyx_L43_unpacking_done;
@@ -24267,7 +24268,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
             __pyx_t_8 = NULL;
             if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-            __PYX_ERR(0, 1670, __pyx_L1_error)
+            __PYX_ERR(0, 1671, __pyx_L1_error)
             __pyx_L43_unpacking_done:;
           }
           __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_1);
@@ -24275,7 +24276,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_v_name = __pyx_t_5;
           __pyx_t_5 = 0;
 
-          /* "lxml/objectify.pyx":1671
+          /* "lxml/objectify.pyx":1672
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -24293,7 +24294,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_L45_bool_binop_done:;
           if (__pyx_t_4) {
 
-            /* "lxml/objectify.pyx":1672
+            /* "lxml/objectify.pyx":1673
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name             # <<<<<<<<<<<<<<
@@ -24303,7 +24304,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             __Pyx_INCREF(__pyx_v_name);
             __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_v_name);
 
-            /* "lxml/objectify.pyx":1671
+            /* "lxml/objectify.pyx":1672
  *                 if b':' in typename_utf8:
  *                     prefix, name = typename_utf8.split(b':', 1)
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':             # <<<<<<<<<<<<<<
@@ -24313,7 +24314,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
             goto __pyx_L44;
           }
 
-          /* "lxml/objectify.pyx":1673
+          /* "lxml/objectify.pyx":1674
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:             # <<<<<<<<<<<<<<
@@ -24323,25 +24324,25 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           __pyx_t_4 = ((xmlStrcmp((const xmlChar*)PyBytes_AS_STRING(__pyx_v_prefix), __pyx_v_c_ns->prefix) != 0) != 0);
           if (__pyx_t_4) {
 
-            /* "lxml/objectify.pyx":1674
+            /* "lxml/objectify.pyx":1675
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name             # <<<<<<<<<<<<<<
  *                 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_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1674, __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__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1674, __pyx_L1_error)
+            __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); 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_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1674, __pyx_L1_error)
+            __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_name); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1675, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_6);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_6);
             __pyx_t_6 = 0;
 
-            /* "lxml/objectify.pyx":1673
+            /* "lxml/objectify.pyx":1674
  *                     if c_ns.prefix is NULL or c_ns.prefix[0] == c'\0':
  *                         typename_utf8 = name
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:             # <<<<<<<<<<<<<<
@@ -24351,7 +24352,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           }
           __pyx_L44:;
 
-          /* "lxml/objectify.pyx":1669
+          /* "lxml/objectify.pyx":1670
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:
  *                 if b':' in typename_utf8:             # <<<<<<<<<<<<<<
@@ -24361,7 +24362,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
           goto __pyx_L41;
         }
 
-        /* "lxml/objectify.pyx":1675
+        /* "lxml/objectify.pyx":1676
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -24379,25 +24380,25 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         __pyx_L47_bool_binop_done:;
         if (__pyx_t_4) {
 
-          /* "lxml/objectify.pyx":1676
+          /* "lxml/objectify.pyx":1677
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8             # <<<<<<<<<<<<<<
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  */
-          __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1676, __pyx_L1_error)
+          __pyx_t_6 = __Pyx_PyBytes_FromCString(((unsigned char *)__pyx_v_c_ns->prefix)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1677, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
-          __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1676, __pyx_L1_error)
+          __pyx_t_5 = PyNumber_Add(__pyx_t_6, __pyx_kp_b__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1677, __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, 1676, __pyx_L1_error)
+          __pyx_t_6 = PyNumber_Add(__pyx_t_5, __pyx_v_typename_utf8); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1677, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __Pyx_DECREF_SET(__pyx_v_typename_utf8, __pyx_t_6);
           __pyx_t_6 = 0;
 
-          /* "lxml/objectify.pyx":1675
+          /* "lxml/objectify.pyx":1676
  *                     elif tree.xmlStrcmp(_xcstr(prefix), c_ns.prefix) != 0:
  *                         typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + name
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':             # <<<<<<<<<<<<<<
@@ -24407,7 +24408,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
         }
         __pyx_L41:;
 
-        /* "lxml/objectify.pyx":1668
+        /* "lxml/objectify.pyx":1669
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_NS, <unsigned char*>'xsd')
  *             if c_ns is not NULL:             # <<<<<<<<<<<<<<
@@ -24416,7 +24417,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       }
 
-      /* "lxml/objectify.pyx":1677
+      /* "lxml/objectify.pyx":1678
  *                 elif c_ns.prefix is not NULL and c_ns.prefix[0] != c'\0':
  *                     typename_utf8 = (<unsigned char*>c_ns.prefix) + b':' + typename_utf8
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24425,7 +24426,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __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":1679
+      /* "lxml/objectify.pyx":1680
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))             # <<<<<<<<<<<<<<
@@ -24436,7 +24437,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L37:;
 
-    /* "lxml/objectify.pyx":1659
+    /* "lxml/objectify.pyx":1660
  *             typename = pytype._schema_types[0]
  * 
  *     if annotate_xsi:             # <<<<<<<<<<<<<<
@@ -24445,7 +24446,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1681
+  /* "lxml/objectify.pyx":1682
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
  * 
  *     if annotate_pytype:             # <<<<<<<<<<<<<<
@@ -24455,7 +24456,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_t_4 = (__pyx_v_annotate_pytype != 0);
   if (__pyx_t_4) {
 
-    /* "lxml/objectify.pyx":1682
+    /* "lxml/objectify.pyx":1683
  * 
  *     if annotate_pytype:
  *         if pytype is None:             # <<<<<<<<<<<<<<
@@ -24466,7 +24467,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     __pyx_t_3 = (__pyx_t_4 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1684
+      /* "lxml/objectify.pyx":1685
  *         if pytype is None:
  *             # delete attribute if it exists
  *             cetree.delAttributeFromNsName(             # <<<<<<<<<<<<<<
@@ -24475,7 +24476,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       (void)(delAttributeFromNsName(__pyx_v_c_node, __pyx_v_4lxml_9objectify__PYTYPE_NAMESPACE, __pyx_v_4lxml_9objectify__PYTYPE_ATTRIBUTE_NAME));
 
-      /* "lxml/objectify.pyx":1682
+      /* "lxml/objectify.pyx":1683
  * 
  *     if annotate_pytype:
  *         if pytype is None:             # <<<<<<<<<<<<<<
@@ -24485,7 +24486,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       goto __pyx_L50;
     }
 
-    /* "lxml/objectify.pyx":1688
+    /* "lxml/objectify.pyx":1689
  *         else:
  *             # update or create attribute
  *             c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24494,7 +24495,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
     /*else*/ {
 
-      /* "lxml/objectify.pyx":1689
+      /* "lxml/objectify.pyx":1690
  *             # update or create attribute
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')             # <<<<<<<<<<<<<<
@@ -24503,7 +24504,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __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":1690
+      /* "lxml/objectify.pyx":1691
  *             c_ns = cetree.findOrBuildNodeNsPrefix(
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
  *             pytype_name = cetree.utf8(pytype.name)             # <<<<<<<<<<<<<<
@@ -24512,13 +24513,13 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       __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, 1690, __pyx_L1_error)
+      __pyx_t_5 = utf8(__pyx_t_6); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1691, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_pytype_name = ((PyObject*)__pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1691
+      /* "lxml/objectify.pyx":1692
  *                 doc, c_node, _PYTYPE_NAMESPACE, <unsigned char*>'py')
  *             pytype_name = cetree.utf8(pytype.name)
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,             # <<<<<<<<<<<<<<
@@ -24527,7 +24528,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
       (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":1693
+      /* "lxml/objectify.pyx":1694
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:             # <<<<<<<<<<<<<<
@@ -24538,7 +24539,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
       __pyx_t_4 = (__pyx_t_3 != 0);
       if (__pyx_t_4) {
 
-        /* "lxml/objectify.pyx":1694
+        /* "lxml/objectify.pyx":1695
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:
  *                 c_ns = cetree.findOrBuildNodeNsPrefix(             # <<<<<<<<<<<<<<
@@ -24547,7 +24548,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         __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":1696
+        /* "lxml/objectify.pyx":1697
  *                 c_ns = cetree.findOrBuildNodeNsPrefix(
  *                     doc, c_node, _XML_SCHEMA_INSTANCE_NS, <unsigned char*>'xsi')
  *                 tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")             # <<<<<<<<<<<<<<
@@ -24556,7 +24557,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
         (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":1693
+        /* "lxml/objectify.pyx":1694
  *             tree.xmlSetNsProp(c_node, c_ns, _PYTYPE_ATTRIBUTE_NAME,
  *                               _xcstr(pytype_name))
  *             if pytype is NoneType:             # <<<<<<<<<<<<<<
@@ -24567,7 +24568,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
     }
     __pyx_L50:;
 
-    /* "lxml/objectify.pyx":1681
+    /* "lxml/objectify.pyx":1682
  *             tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"type", _xcstr(typename_utf8))
  * 
  *     if annotate_pytype:             # <<<<<<<<<<<<<<
@@ -24576,7 +24577,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
  */
   }
 
-  /* "lxml/objectify.pyx":1698
+  /* "lxml/objectify.pyx":1699
  *                 tree.xmlSetNsProp(c_node, c_ns, <unsigned char*>"nil", <unsigned char*>"true")
  * 
  *     return 0             # <<<<<<<<<<<<<<
@@ -24586,7 +24587,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   __pyx_r = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1579
+  /* "lxml/objectify.pyx":1580
  *     tree.END_FOR_EACH_ELEMENT_FROM(c_node)
  * 
  * cdef int _annotate_element(tree.xmlNode* c_node, _Document doc,             # <<<<<<<<<<<<<<
@@ -24614,7 +24615,7 @@ static int __pyx_f_4lxml_9objectify__annotate_element(xmlNode *__pyx_v_c_node, s
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1703
+/* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24661,7 +24662,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) __PYX_ERR(0, 1703, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "deannotate") < 0)) __PYX_ERR(0, 1704, __pyx_L3_error)
       }
     } else if (PyTuple_GET_SIZE(__pyx_args) != 1) {
       goto __pyx_L5_argtuple_error;
@@ -24670,20 +24671,20 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
     }
     __pyx_v_element_or_tree = values[0];
     if (values[1]) {
-      __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1703, __pyx_L3_error)
+      __pyx_v_pytype = __Pyx_PyObject_IsTrue(values[1]); if (unlikely((__pyx_v_pytype == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1704, __pyx_L3_error)
     } else {
       __pyx_v_pytype = ((int)((int)1));
     }
     if (values[2]) {
-      __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1703, __pyx_L3_error)
+      __pyx_v_xsi = __Pyx_PyObject_IsTrue(values[2]); if (unlikely((__pyx_v_xsi == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1704, __pyx_L3_error)
     } else {
       __pyx_v_xsi = ((int)((int)1));
     }
     if (values[3]) {
-      __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1704, __pyx_L3_error)
+      __pyx_v_xsi_nil = __Pyx_PyObject_IsTrue(values[3]); if (unlikely((__pyx_v_xsi_nil == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1705, __pyx_L3_error)
     } else {
 
-      /* "lxml/objectify.pyx":1704
+      /* "lxml/objectify.pyx":1705
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  *                bint xsi_nil=False, bint cleanup_namespaces=False):             # <<<<<<<<<<<<<<
@@ -24693,14 +24694,14 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
       __pyx_v_xsi_nil = ((int)((int)0));
     }
     if (values[4]) {
-      __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1704, __pyx_L3_error)
+      __pyx_v_cleanup_namespaces = __Pyx_PyObject_IsTrue(values[4]); if (unlikely((__pyx_v_cleanup_namespaces == (int)-1) && PyErr_Occurred())) __PYX_ERR(0, 1705, __pyx_L3_error)
     } else {
       __pyx_v_cleanup_namespaces = ((int)((int)0));
     }
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1703, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("deannotate", 1, 1, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1704, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.deannotate", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -24708,7 +24709,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_27deannotate(PyObject *__pyx_self, Py
   __pyx_L4_argument_unpacking_done:;
   __pyx_r = __pyx_pf_4lxml_9objectify_26deannotate(__pyx_self, __pyx_v_element_or_tree, __pyx_v_pytype, __pyx_v_xsi, __pyx_v_xsi_nil, __pyx_v_cleanup_namespaces);
 
-  /* "lxml/objectify.pyx":1703
+  /* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24732,19 +24733,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_5 = NULL;
   __Pyx_RefNannySetupContext("deannotate", 0);
 
-  /* "lxml/objectify.pyx":1720
+  /* "lxml/objectify.pyx":1721
  *     the tree, pass the option ``cleanup_namespaces=True``.
  *     """
  *     cdef list attribute_names = []             # <<<<<<<<<<<<<<
  * 
  *     if pytype:
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1720, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1721, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __pyx_v_attribute_names = ((PyObject*)__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1722
+  /* "lxml/objectify.pyx":1723
  *     cdef list attribute_names = []
  * 
  *     if pytype:             # <<<<<<<<<<<<<<
@@ -24754,19 +24755,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_pytype != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1723
+    /* "lxml/objectify.pyx":1724
  * 
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)             # <<<<<<<<<<<<<<
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  */
-    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1723, __pyx_L1_error)
+    __Pyx_GetModuleGlobalName(__pyx_t_1, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1724, __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, 1723, __pyx_L1_error)
+    __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)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1722
+    /* "lxml/objectify.pyx":1723
  *     cdef list attribute_names = []
  * 
  *     if pytype:             # <<<<<<<<<<<<<<
@@ -24775,7 +24776,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1724
+  /* "lxml/objectify.pyx":1725
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:             # <<<<<<<<<<<<<<
@@ -24785,7 +24786,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_xsi != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1725
+    /* "lxml/objectify.pyx":1726
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)             # <<<<<<<<<<<<<<
@@ -24794,10 +24795,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
     __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, 1725, __pyx_L1_error)
+    __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)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1724
+    /* "lxml/objectify.pyx":1725
  *     if pytype:
  *         attribute_names.append(PYTYPE_ATTRIBUTE)
  *     if xsi:             # <<<<<<<<<<<<<<
@@ -24806,7 +24807,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1726
+  /* "lxml/objectify.pyx":1727
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:             # <<<<<<<<<<<<<<
@@ -24816,7 +24817,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_xsi_nil != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1727
+    /* "lxml/objectify.pyx":1728
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)             # <<<<<<<<<<<<<<
@@ -24825,10 +24826,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
     __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, 1727, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyList_Append(__pyx_v_attribute_names, __pyx_t_1); if (unlikely(__pyx_t_3 == ((int)-1))) __PYX_ERR(0, 1728, __pyx_L1_error)
     __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-    /* "lxml/objectify.pyx":1726
+    /* "lxml/objectify.pyx":1727
  *     if xsi:
  *         attribute_names.append(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *     if xsi_nil:             # <<<<<<<<<<<<<<
@@ -24837,30 +24838,30 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1729
+  /* "lxml/objectify.pyx":1730
  *         attribute_names.append(XML_SCHEMA_INSTANCE_NIL_ATTR)
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)             # <<<<<<<<<<<<<<
  *     if cleanup_namespaces:
  *         _cleanup_namespaces(element_or_tree)
  */
-  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1729, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_element_or_tree);
   __Pyx_GIVEREF(__pyx_v_element_or_tree);
   PyTuple_SET_ITEM(__pyx_t_1, 0, __pyx_v_element_or_tree);
-  __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1729, __pyx_L1_error)
+  __pyx_t_4 = PySequence_Tuple(__pyx_v_attribute_names); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1729, __pyx_L1_error)
+  __pyx_t_5 = PyNumber_Add(__pyx_t_1, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1729, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_5, NULL); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1730, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1730
+  /* "lxml/objectify.pyx":1731
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:             # <<<<<<<<<<<<<<
@@ -24870,7 +24871,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_v_cleanup_namespaces != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1731
+    /* "lxml/objectify.pyx":1732
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:
  *         _cleanup_namespaces(element_or_tree)             # <<<<<<<<<<<<<<
@@ -24890,12 +24891,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
     }
     __pyx_t_4 = (__pyx_t_1) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_1, __pyx_v_element_or_tree) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_element_or_tree);
     __Pyx_XDECREF(__pyx_t_1); __pyx_t_1 = 0;
-    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1731, __pyx_L1_error)
+    if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1732, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
     __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1730
+    /* "lxml/objectify.pyx":1731
  * 
  *     _strip_attributes(element_or_tree, *attribute_names)
  *     if cleanup_namespaces:             # <<<<<<<<<<<<<<
@@ -24904,7 +24905,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1703
+  /* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
@@ -24928,7 +24929,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_26deannotate(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1743
+/* "lxml/objectify.pyx":1744
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
@@ -24967,7 +24968,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_29set_default_parser(PyObject *__pyx_
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(0, 1743, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "set_default_parser") < 0)) __PYX_ERR(0, 1744, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -24981,7 +24982,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_29set_default_parser(PyObject *__pyx_
   }
   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(0, 1743, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("set_default_parser", 0, 0, 1, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1744, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.set_default_parser", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25002,7 +25003,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   PyObject *__pyx_t_3 = NULL;
   __Pyx_RefNannySetupContext("set_default_parser", 0);
 
-  /* "lxml/objectify.pyx":1754
+  /* "lxml/objectify.pyx":1755
  *     """
  *     global objectify_parser
  *     if new_parser is None:             # <<<<<<<<<<<<<<
@@ -25013,7 +25014,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1755
+    /* "lxml/objectify.pyx":1756
  *     global objectify_parser
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER             # <<<<<<<<<<<<<<
@@ -25025,7 +25026,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
     __Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
 
-    /* "lxml/objectify.pyx":1754
+    /* "lxml/objectify.pyx":1755
  *     """
  *     global objectify_parser
  *     if new_parser is None:             # <<<<<<<<<<<<<<
@@ -25035,21 +25036,21 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1756
+  /* "lxml/objectify.pyx":1757
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):             # <<<<<<<<<<<<<<
  *         objectify_parser = new_parser
  *     else:
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1756, __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, 1757, __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, 1756, __pyx_L1_error)
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v_new_parser, __pyx_t_3); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1757, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (likely(__pyx_t_1)) {
 
-    /* "lxml/objectify.pyx":1757
+    /* "lxml/objectify.pyx":1758
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):
  *         objectify_parser = new_parser             # <<<<<<<<<<<<<<
@@ -25061,7 +25062,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_new_parser);
     __Pyx_GIVEREF(__pyx_v_new_parser);
 
-    /* "lxml/objectify.pyx":1756
+    /* "lxml/objectify.pyx":1757
  *     if new_parser is None:
  *         objectify_parser = __DEFAULT_PARSER
  *     elif isinstance(new_parser, etree.XMLParser):             # <<<<<<<<<<<<<<
@@ -25071,7 +25072,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
     goto __pyx_L3;
   }
 
-  /* "lxml/objectify.pyx":1759
+  /* "lxml/objectify.pyx":1760
  *         objectify_parser = new_parser
  *     else:
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"             # <<<<<<<<<<<<<<
@@ -25080,11 +25081,11 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
  */
   /*else*/ {
     __Pyx_Raise(__pyx_builtin_TypeError, __pyx_kp_u_parser_must_inherit_from_lxml_et, 0, 0);
-    __PYX_ERR(0, 1759, __pyx_L1_error)
+    __PYX_ERR(0, 1760, __pyx_L1_error)
   }
   __pyx_L3:;
 
-  /* "lxml/objectify.pyx":1743
+  /* "lxml/objectify.pyx":1744
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
@@ -25105,7 +25106,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_28set_default_parser(CYTHON_UNUSED Py
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1761
+/* "lxml/objectify.pyx":1762
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
@@ -25147,27 +25148,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   PyObject *__pyx_t_6 = NULL;
   __Pyx_RefNannySetupContext("makeparser", 0);
 
-  /* "lxml/objectify.pyx":1771
+  /* "lxml/objectify.pyx":1772
  *     ``remove_blank_text`` boolean keyword option yourself.
  *     """
  *     if 'remove_blank_text' not in kw:             # <<<<<<<<<<<<<<
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)
  */
-  __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, 1771, __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, 1772, __pyx_L1_error)
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1772
+    /* "lxml/objectify.pyx":1773
  *     """
  *     if 'remove_blank_text' not in kw:
  *         kw['remove_blank_text'] = True             # <<<<<<<<<<<<<<
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  */
-    if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) __PYX_ERR(0, 1772, __pyx_L1_error)
+    if (unlikely(PyDict_SetItem(__pyx_v_kw, __pyx_n_s_remove_blank_text, Py_True) < 0)) __PYX_ERR(0, 1773, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":1771
+    /* "lxml/objectify.pyx":1772
  *     ``remove_blank_text`` boolean keyword option yourself.
  *     """
  *     if 'remove_blank_text' not in kw:             # <<<<<<<<<<<<<<
@@ -25176,31 +25177,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1773
+  /* "lxml/objectify.pyx":1774
  *     if 'remove_blank_text' not in kw:
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)             # <<<<<<<<<<<<<<
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  *     return parser
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1773, __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, 1774, __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, 1773, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_3, __pyx_empty_tuple, __pyx_v_kw); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1774, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __pyx_v_parser = __pyx_t_4;
   __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1774
+  /* "lxml/objectify.pyx":1775
  *         kw['remove_blank_text'] = True
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )             # <<<<<<<<<<<<<<
  *     return parser
  * 
  */
-  __pyx_t_3 = __Pyx_PyObject_GetAttrStr(__pyx_v_parser, __pyx_n_s_set_element_class_lookup); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1774, __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, 1775, __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, 1774, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1775, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_5);
   __pyx_t_6 = NULL;
   if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_3))) {
@@ -25215,12 +25216,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_3, __pyx_t_6, __pyx_t_5) : __Pyx_PyObject_CallOneArg(__pyx_t_3, __pyx_t_5);
   __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
   __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
-  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1774, __pyx_L1_error)
+  if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1775, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1775
+  /* "lxml/objectify.pyx":1776
  *     parser = etree.XMLParser(**kw)
  *     parser.set_element_class_lookup( ObjectifyElementClassLookup() )
  *     return parser             # <<<<<<<<<<<<<<
@@ -25232,7 +25233,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   __pyx_r = __pyx_v_parser;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1761
+  /* "lxml/objectify.pyx":1762
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
@@ -25255,7 +25256,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_30makeparser(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1777
+/* "lxml/objectify.pyx":1778
  *     return parser
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -25270,7 +25271,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   PyObject *__pyx_t_2 = NULL;
   __Pyx_RefNannySetupContext("_makeElement", 0);
 
-  /* "lxml/objectify.pyx":1778
+  /* "lxml/objectify.pyx":1779
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):
  *     return cetree.makeElement(tag, None, objectify_parser, text, None, attrib, nsmap)             # <<<<<<<<<<<<<<
@@ -25280,14 +25281,14 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   __Pyx_XDECREF(((PyObject *)__pyx_r));
   __pyx_t_1 = __pyx_v_4lxml_9objectify_objectify_parser;
   __Pyx_INCREF(__pyx_t_1);
-  __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1778, __pyx_L1_error)
+  __pyx_t_2 = ((PyObject *)makeElement(__pyx_v_tag, ((struct LxmlDocument *)Py_None), __pyx_t_1, __pyx_v_text, Py_None, __pyx_v_attrib, __pyx_v_nsmap)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1779, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __pyx_r = ((struct LxmlElement *)__pyx_t_2);
   __pyx_t_2 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1777
+  /* "lxml/objectify.pyx":1778
  *     return parser
  * 
  * cdef _Element _makeElement(tag, text, attrib, nsmap):             # <<<<<<<<<<<<<<
@@ -25307,7 +25308,7 @@ static struct LxmlElement *__pyx_f_4lxml_9objectify__makeElement(PyObject *__pyx
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1788
+/* "lxml/objectify.pyx":1789
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25360,7 +25361,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_33fromstring(PyObject *__pyx_self, Py
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 1788, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "fromstring") < 0)) __PYX_ERR(0, 1789, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25377,7 +25378,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_33fromstring(PyObject *__pyx_self, Py
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1788, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("fromstring", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1789, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.fromstring", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25401,7 +25402,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __Pyx_RefNannySetupContext("fromstring", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "lxml/objectify.pyx":1800
+  /* "lxml/objectify.pyx":1801
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25412,7 +25413,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1801
+    /* "lxml/objectify.pyx":1802
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25422,7 +25423,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "lxml/objectify.pyx":1800
+    /* "lxml/objectify.pyx":1801
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25431,7 +25432,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  */
   }
 
-  /* "lxml/objectify.pyx":1802
+  /* "lxml/objectify.pyx":1803
  *     if parser is None:
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25439,7 +25440,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
  * def XML(xml, parser=None, *, base_url=None):
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1802, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1803, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_xml);
   __Pyx_GIVEREF(__pyx_v_xml);
@@ -25447,10 +25448,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1802, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1803, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1802, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1802, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1803, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1803, __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;
@@ -25458,7 +25459,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1788
+  /* "lxml/objectify.pyx":1789
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25480,7 +25481,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_32fromstring(CYTHON_UNUSED PyObject *
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1804
+/* "lxml/objectify.pyx":1805
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25533,7 +25534,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_35XML(PyObject *__pyx_self, PyObject
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 1804, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "XML") < 0)) __PYX_ERR(0, 1805, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25550,7 +25551,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_35XML(PyObject *__pyx_self, PyObject
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1804, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("XML", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1805, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.XML", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25574,7 +25575,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __Pyx_RefNannySetupContext("XML", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "lxml/objectify.pyx":1816
+  /* "lxml/objectify.pyx":1817
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25585,7 +25586,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1817
+    /* "lxml/objectify.pyx":1818
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25595,7 +25596,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "lxml/objectify.pyx":1816
+    /* "lxml/objectify.pyx":1817
  *     (DTD, XInclude, ...).
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25604,7 +25605,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  */
   }
 
-  /* "lxml/objectify.pyx":1818
+  /* "lxml/objectify.pyx":1819
  *     if parser is None:
  *         parser = objectify_parser
  *     return _fromstring(xml, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25612,7 +25613,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
  * cdef object _parse
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1818, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1819, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_xml);
   __Pyx_GIVEREF(__pyx_v_xml);
@@ -25620,10 +25621,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1818, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1819, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1818, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1818, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1819, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1819, __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;
@@ -25631,7 +25632,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1804
+  /* "lxml/objectify.pyx":1805
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25653,7 +25654,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_34XML(CYTHON_UNUSED PyObject *__pyx_s
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1823
+/* "lxml/objectify.pyx":1824
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25706,7 +25707,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_37parse(PyObject *__pyx_self, PyObjec
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1823, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, 0, values, pos_args, "parse") < 0)) __PYX_ERR(0, 1824, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25723,7 +25724,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_37parse(PyObject *__pyx_self, PyObjec
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1823, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("parse", 0, 1, 2, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1824, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_AddTraceback("lxml.objectify.parse", __pyx_clineno, __pyx_lineno, __pyx_filename);
   __Pyx_RefNannyFinishContext();
@@ -25747,7 +25748,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __Pyx_RefNannySetupContext("parse", 0);
   __Pyx_INCREF(__pyx_v_parser);
 
-  /* "lxml/objectify.pyx":1834
+  /* "lxml/objectify.pyx":1835
  *     up external entities (DTD, XInclude, ...) with relative paths.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25758,7 +25759,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1835
+    /* "lxml/objectify.pyx":1836
  *     """
  *     if parser is None:
  *         parser = objectify_parser             # <<<<<<<<<<<<<<
@@ -25768,7 +25769,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_objectify_parser);
     __Pyx_DECREF_SET(__pyx_v_parser, __pyx_v_4lxml_9objectify_objectify_parser);
 
-    /* "lxml/objectify.pyx":1834
+    /* "lxml/objectify.pyx":1835
  *     up external entities (DTD, XInclude, ...) with relative paths.
  *     """
  *     if parser is None:             # <<<<<<<<<<<<<<
@@ -25777,7 +25778,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  */
   }
 
-  /* "lxml/objectify.pyx":1836
+  /* "lxml/objectify.pyx":1837
  *     if parser is None:
  *         parser = objectify_parser
  *     return _parse(f, parser, base_url=base_url)             # <<<<<<<<<<<<<<
@@ -25785,7 +25786,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
  * cdef dict _DEFAULT_NSMAP = {
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1836, __pyx_L1_error)
+  __pyx_t_3 = PyTuple_New(2); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1837, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __Pyx_INCREF(__pyx_v_f);
   __Pyx_GIVEREF(__pyx_v_f);
@@ -25793,10 +25794,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __Pyx_INCREF(__pyx_v_parser);
   __Pyx_GIVEREF(__pyx_v_parser);
   PyTuple_SET_ITEM(__pyx_t_3, 1, __pyx_v_parser);
-  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1836, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1837, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_4);
-  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1836, __pyx_L1_error)
-  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1836, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_4, __pyx_n_s_base_url, __pyx_v_base_url) < 0) __PYX_ERR(0, 1837, __pyx_L1_error)
+  __pyx_t_5 = __Pyx_PyObject_Call(__pyx_v_4lxml_9objectify__parse, __pyx_t_3, __pyx_t_4); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1837, __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;
@@ -25804,7 +25805,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   __pyx_t_5 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1823
+  /* "lxml/objectify.pyx":1824
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
@@ -25826,7 +25827,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_36parse(CYTHON_UNUSED PyObject *__pyx
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1846
+/* "lxml/objectify.pyx":1847
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
@@ -25892,7 +25893,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_39Element(PyObject *__pyx_self, PyObj
         if (value) { values[index] = value; kw_args--; }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) __PYX_ERR(0, 1846, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "Element") < 0)) __PYX_ERR(0, 1847, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -25912,7 +25913,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_39Element(PyObject *__pyx_self, PyObj
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1846, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("Element", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1847, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
   __Pyx_AddTraceback("lxml.objectify.Element", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -25941,7 +25942,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __Pyx_INCREF(__pyx_v__pytype);
   __Pyx_INCREF(__pyx_v__attributes);
 
-  /* "lxml/objectify.pyx":1854
+  /* "lxml/objectify.pyx":1855
  *     NOTE: requires parser based element class lookup activated in lxml.etree!
  *     """
  *     if attrib is not None:             # <<<<<<<<<<<<<<
@@ -25952,36 +25953,36 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1855
+    /* "lxml/objectify.pyx":1856
  *     """
  *     if attrib is not None:
  *         if _attributes:             # <<<<<<<<<<<<<<
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1855, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1856, __pyx_L1_error)
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1856
+      /* "lxml/objectify.pyx":1857
  *     if attrib is not None:
  *         if _attributes:
  *             attrib = dict(attrib)             # <<<<<<<<<<<<<<
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
-      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1856, __pyx_L1_error)
+      __pyx_t_3 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1857, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_3);
       __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":1857
+      /* "lxml/objectify.pyx":1858
  *         if _attributes:
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)             # <<<<<<<<<<<<<<
  *         _attributes = attrib
  *     if _pytype is None:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1857, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1858, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __pyx_t_5 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_4))) {
@@ -25995,12 +25996,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
       }
       __pyx_t_3 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_4, __pyx_t_5, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_v__attributes);
       __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1857, __pyx_L1_error)
+      if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1858, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_3);
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
       __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-      /* "lxml/objectify.pyx":1855
+      /* "lxml/objectify.pyx":1856
  *     """
  *     if attrib is not None:
  *         if _attributes:             # <<<<<<<<<<<<<<
@@ -26009,7 +26010,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
     }
 
-    /* "lxml/objectify.pyx":1858
+    /* "lxml/objectify.pyx":1859
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  *         _attributes = attrib             # <<<<<<<<<<<<<<
@@ -26019,7 +26020,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
-    /* "lxml/objectify.pyx":1854
+    /* "lxml/objectify.pyx":1855
  *     NOTE: requires parser based element class lookup activated in lxml.etree!
  *     """
  *     if attrib is not None:             # <<<<<<<<<<<<<<
@@ -26028,7 +26029,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":1859
+  /* "lxml/objectify.pyx":1860
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26039,7 +26040,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1860
+    /* "lxml/objectify.pyx":1861
  *         _attributes = attrib
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME             # <<<<<<<<<<<<<<
@@ -26049,7 +26050,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
 
-    /* "lxml/objectify.pyx":1859
+    /* "lxml/objectify.pyx":1860
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26058,7 +26059,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":1861
+  /* "lxml/objectify.pyx":1862
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26069,7 +26070,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1862
+    /* "lxml/objectify.pyx":1863
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP             # <<<<<<<<<<<<<<
@@ -26079,7 +26080,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
-    /* "lxml/objectify.pyx":1861
+    /* "lxml/objectify.pyx":1862
  *     if _pytype is None:
  *         _pytype = TREE_PYTYPE_NAME
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26088,19 +26089,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  */
   }
 
-  /* "lxml/objectify.pyx":1863
+  /* "lxml/objectify.pyx":1864
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype             # <<<<<<<<<<<<<<
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1863, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_3, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_3)) __PYX_ERR(0, 1864, __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, 1863, __pyx_L1_error)
+  if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_3, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1864, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_3); __pyx_t_3 = 0;
 
-  /* "lxml/objectify.pyx":1864
+  /* "lxml/objectify.pyx":1865
  *         nsmap = _DEFAULT_NSMAP
  *     _attributes[PYTYPE_ATTRIBUTE] = _pytype
  *     return _makeElement(_tag, None, _attributes, nsmap)             # <<<<<<<<<<<<<<
@@ -26108,13 +26109,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,
  */
   __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, 1864, __pyx_L1_error)
+  __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, 1865, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_3);
   __pyx_r = __pyx_t_3;
   __pyx_t_3 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1846
+  /* "lxml/objectify.pyx":1847
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
@@ -26139,7 +26140,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_38Element(CYTHON_UNUSED PyObject *__p
   return __pyx_r;
 }
 
-/* "lxml/objectify.pyx":1866
+/* "lxml/objectify.pyx":1867
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
@@ -26209,7 +26210,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_41DataElement(PyObject *__pyx_self, P
         }
       }
       if (unlikely(kw_args > 0)) {
-        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) __PYX_ERR(0, 1866, __pyx_L3_error)
+        if (unlikely(__Pyx_ParseOptionalKeywords(__pyx_kwds, __pyx_pyargnames, __pyx_v__attributes, values, pos_args, "DataElement") < 0)) __PYX_ERR(0, 1867, __pyx_L3_error)
       }
     } else {
       switch (PyTuple_GET_SIZE(__pyx_args)) {
@@ -26230,7 +26231,7 @@ static PyObject *__pyx_pw_4lxml_9objectify_41DataElement(PyObject *__pyx_self, P
   }
   goto __pyx_L4_argument_unpacking_done;
   __pyx_L5_argtuple_error:;
-  __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1866, __pyx_L3_error)
+  __Pyx_RaiseArgtupleInvalid("DataElement", 0, 1, 3, PyTuple_GET_SIZE(__pyx_args)); __PYX_ERR(0, 1867, __pyx_L3_error)
   __pyx_L3_error:;
   __Pyx_DECREF(__pyx_v__attributes); __pyx_v__attributes = 0;
   __Pyx_AddTraceback("lxml.objectify.DataElement", __pyx_clineno, __pyx_lineno, __pyx_filename);
@@ -26273,7 +26274,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __Pyx_INCREF(__pyx_v__xsi);
   __Pyx_INCREF(__pyx_v__attributes);
 
-  /* "lxml/objectify.pyx":1881
+  /* "lxml/objectify.pyx":1882
  *     in attrib and/or keyword arguments.
  *     """
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26284,7 +26285,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1882
+    /* "lxml/objectify.pyx":1883
  *     """
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP             # <<<<<<<<<<<<<<
@@ -26294,7 +26295,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
     __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
 
-    /* "lxml/objectify.pyx":1881
+    /* "lxml/objectify.pyx":1882
  *     in attrib and/or keyword arguments.
  *     """
  *     if nsmap is None:             # <<<<<<<<<<<<<<
@@ -26303,7 +26304,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1883
+  /* "lxml/objectify.pyx":1884
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:             # <<<<<<<<<<<<<<
@@ -26317,41 +26318,41 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = __pyx_t_3;
     goto __pyx_L5_bool_binop_done;
   }
-  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1883, __pyx_L1_error)
+  __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_attrib); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1884, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_3;
   __pyx_L5_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1884
+    /* "lxml/objectify.pyx":1885
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:
  *         if _attributes:             # <<<<<<<<<<<<<<
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1884, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1885, __pyx_L1_error)
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1885
+      /* "lxml/objectify.pyx":1886
  *     if attrib is not None and attrib:
  *         if _attributes:
  *             attrib = dict(attrib)             # <<<<<<<<<<<<<<
  *             attrib.update(_attributes)
  *         _attributes = attrib
  */
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1885, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_attrib, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1886
+      /* "lxml/objectify.pyx":1887
  *         if _attributes:
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)             # <<<<<<<<<<<<<<
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1886, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_attrib, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1887, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26365,12 +26366,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v__attributes);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1886, __pyx_L1_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1887, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1884
+      /* "lxml/objectify.pyx":1885
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:
  *         if _attributes:             # <<<<<<<<<<<<<<
@@ -26379,7 +26380,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1887
+    /* "lxml/objectify.pyx":1888
  *             attrib = dict(attrib)
  *             attrib.update(_attributes)
  *         _attributes = attrib             # <<<<<<<<<<<<<<
@@ -26389,7 +26390,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v_attrib);
     __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_attrib);
 
-    /* "lxml/objectify.pyx":1883
+    /* "lxml/objectify.pyx":1884
  *     if nsmap is None:
  *         nsmap = _DEFAULT_NSMAP
  *     if attrib is not None and attrib:             # <<<<<<<<<<<<<<
@@ -26398,7 +26399,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1888
+  /* "lxml/objectify.pyx":1889
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):             # <<<<<<<<<<<<<<
@@ -26409,7 +26410,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_3 = (__pyx_t_2 != 0);
   if (__pyx_t_3) {
 
-    /* "lxml/objectify.pyx":1889
+    /* "lxml/objectify.pyx":1890
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26420,7 +26421,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = (__pyx_t_3 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1890
+      /* "lxml/objectify.pyx":1891
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26434,7 +26435,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_2 = __pyx_t_1;
         goto __pyx_L11_bool_binop_done;
       }
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1890, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__attributes); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1891, __pyx_L1_error)
       __pyx_t_3 = ((!__pyx_t_1) != 0);
       if (__pyx_t_3) {
       } else {
@@ -26447,7 +26448,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_L11_bool_binop_done:;
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1892
+        /* "lxml/objectify.pyx":1893
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:
  *                 # special case: no change!
  *                 return _value.__copy__()             # <<<<<<<<<<<<<<
@@ -26455,7 +26456,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         # reuse existing nsmap unless redefined in nsmap parameter
  */
         __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, 1892, __pyx_L1_error)
+        __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_copy); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1893, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_5);
         __pyx_t_6 = NULL;
         if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26469,14 +26470,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         }
         __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6) : __Pyx_PyObject_CallNoArg(__pyx_t_5);
         __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1892, __pyx_L1_error)
+        if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1893, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_r = __pyx_t_4;
         __pyx_t_4 = 0;
         goto __pyx_L0;
 
-        /* "lxml/objectify.pyx":1890
+        /* "lxml/objectify.pyx":1891
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:
  *             if _xsi is None and not _attributes and nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26485,7 +26486,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "lxml/objectify.pyx":1889
+      /* "lxml/objectify.pyx":1890
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -26494,7 +26495,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1888
+    /* "lxml/objectify.pyx":1889
  *             attrib.update(_attributes)
  *         _attributes = attrib
  *     if isinstance(_value, ObjectifiedElement):             # <<<<<<<<<<<<<<
@@ -26503,7 +26504,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1893
+  /* "lxml/objectify.pyx":1894
  *                 # special case: no change!
  *                 return _value.__copy__()
  *     if isinstance(_value, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -26514,19 +26515,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1895
+    /* "lxml/objectify.pyx":1896
  *     if isinstance(_value, ObjectifiedDataElement):
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap             # <<<<<<<<<<<<<<
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1895, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_nsmap); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1896, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_4);
     __pyx_v_temp = __pyx_t_4;
     __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1896
+    /* "lxml/objectify.pyx":1897
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26540,31 +26541,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = __pyx_t_3;
       goto __pyx_L16_bool_binop_done;
     }
-    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1896, __pyx_L1_error)
+    __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1897, __pyx_L1_error)
     __pyx_t_1 = __pyx_t_3;
     __pyx_L16_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1897
+      /* "lxml/objectify.pyx":1898
  *         temp = _value.nsmap
  *         if temp is not None and temp:
  *             temp = dict(temp)             # <<<<<<<<<<<<<<
  *             temp.update(nsmap)
  *             nsmap = temp
  */
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1897, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1898, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1898
+      /* "lxml/objectify.pyx":1899
  *         if temp is not None and temp:
  *             temp = dict(temp)
  *             temp.update(nsmap)             # <<<<<<<<<<<<<<
  *             nsmap = temp
  *         # reuse existing attributes unless redefined in attrib/_attributes
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1898, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1899, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26578,12 +26579,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_nsmap) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_nsmap);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1898, __pyx_L1_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1899, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1899
+      /* "lxml/objectify.pyx":1900
  *             temp = dict(temp)
  *             temp.update(nsmap)
  *             nsmap = temp             # <<<<<<<<<<<<<<
@@ -26593,7 +26594,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v_nsmap, __pyx_v_temp);
 
-      /* "lxml/objectify.pyx":1896
+      /* "lxml/objectify.pyx":1897
  *         # reuse existing nsmap unless redefined in nsmap parameter
  *         temp = _value.nsmap
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26602,19 +26603,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1901
+    /* "lxml/objectify.pyx":1902
  *             nsmap = temp
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib             # <<<<<<<<<<<<<<
  *         if temp is not None and temp:
  *             temp = dict(temp)
  */
-    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1901, __pyx_L1_error)
+    __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__value, __pyx_n_s_attrib); 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);
     __pyx_t_4 = 0;
 
-    /* "lxml/objectify.pyx":1902
+    /* "lxml/objectify.pyx":1903
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26628,31 +26629,31 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = __pyx_t_2;
       goto __pyx_L19_bool_binop_done;
     }
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1902, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v_temp); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1903, __pyx_L1_error)
     __pyx_t_1 = __pyx_t_2;
     __pyx_L19_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1903
+      /* "lxml/objectify.pyx":1904
  *         temp = _value.attrib
  *         if temp is not None and temp:
  *             temp = dict(temp)             # <<<<<<<<<<<<<<
  *             temp.update(_attributes)
  *             _attributes = temp
  */
-      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1903, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_CallOneArg(((PyObject *)(&PyDict_Type)), __pyx_v_temp); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1904, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF_SET(__pyx_v_temp, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1904
+      /* "lxml/objectify.pyx":1905
  *         if temp is not None and temp:
  *             temp = dict(temp)
  *             temp.update(_attributes)             # <<<<<<<<<<<<<<
  *             _attributes = temp
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1904, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v_temp, __pyx_n_s_update); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1905, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26666,12 +26667,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v__attributes) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v__attributes);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1904, __pyx_L1_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1905, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1905
+      /* "lxml/objectify.pyx":1906
  *             temp = dict(temp)
  *             temp.update(_attributes)
  *             _attributes = temp             # <<<<<<<<<<<<<<
@@ -26681,7 +26682,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v_temp);
       __Pyx_DECREF_SET(__pyx_v__attributes, __pyx_v_temp);
 
-      /* "lxml/objectify.pyx":1902
+      /* "lxml/objectify.pyx":1903
  *         # reuse existing attributes unless redefined in attrib/_attributes
  *         temp = _value.attrib
  *         if temp is not None and temp:             # <<<<<<<<<<<<<<
@@ -26690,7 +26691,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1908
+    /* "lxml/objectify.pyx":1909
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  *         # arguments
  *         if _xsi is None and _pytype is None:             # <<<<<<<<<<<<<<
@@ -26710,14 +26711,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_L22_bool_binop_done:;
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1909
+      /* "lxml/objectify.pyx":1910
  *         # arguments
  *         if _xsi is None and _pytype is None:
  *             _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)             # <<<<<<<<<<<<<<
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  */
-      __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_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __pyx_t_6 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26731,22 +26732,22 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_4 = (__pyx_t_6) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_6, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR);
       __Pyx_XDECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1909, __pyx_L1_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1910, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1910
+      /* "lxml/objectify.pyx":1911
  *         if _xsi is None and _pytype is None:
  *             _xsi = _attributes.get(XML_SCHEMA_INSTANCE_TYPE_ATTR)
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)             # <<<<<<<<<<<<<<
  * 
  *     if _xsi is not None:
  */
-      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1910, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_GetAttrStr(__pyx_v__attributes, __pyx_n_s_get); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1911, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
-      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1910, __pyx_L1_error)
+      __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1911, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_5))) {
@@ -26761,13 +26762,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_4 = (__pyx_t_7) ? __Pyx_PyObject_Call2Args(__pyx_t_5, __pyx_t_7, __pyx_t_6) : __Pyx_PyObject_CallOneArg(__pyx_t_5, __pyx_t_6);
       __Pyx_XDECREF(__pyx_t_7); __pyx_t_7 = 0;
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
-      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1910, __pyx_L1_error)
+      if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1911, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_4);
       __pyx_t_4 = 0;
 
-      /* "lxml/objectify.pyx":1908
+      /* "lxml/objectify.pyx":1909
  *         # reuse existing xsi:type or py:pytype attributes, unless provided as
  *         # arguments
  *         if _xsi is None and _pytype is None:             # <<<<<<<<<<<<<<
@@ -26776,7 +26777,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1893
+    /* "lxml/objectify.pyx":1894
  *                 # special case: no change!
  *                 return _value.__copy__()
  *     if isinstance(_value, ObjectifiedDataElement):             # <<<<<<<<<<<<<<
@@ -26785,7 +26786,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1912
+  /* "lxml/objectify.pyx":1913
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  *     if _xsi is not None:             # <<<<<<<<<<<<<<
@@ -26796,27 +26797,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1913
+    /* "lxml/objectify.pyx":1914
  * 
  *     if _xsi is not None:
  *         if u':' in _xsi:             # <<<<<<<<<<<<<<
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  */
-    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1913, __pyx_L1_error)
+    __pyx_t_2 = (__Pyx_PySequence_ContainsTF(__pyx_kp_u__17, __pyx_v__xsi, Py_EQ)); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1914, __pyx_L1_error)
     __pyx_t_1 = (__pyx_t_2 != 0);
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1914
+      /* "lxml/objectify.pyx":1915
  *     if _xsi is not None:
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)             # <<<<<<<<<<<<<<
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  */
-      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1914, __pyx_L1_error)
+      __pyx_t_4 = __Pyx_PyObject_GetAttrStr(__pyx_v__xsi, __pyx_n_s_split); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1915, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_4);
-      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1914, __pyx_L1_error)
+      __pyx_t_5 = __Pyx_PyObject_Call(__pyx_t_4, __pyx_tuple__18, NULL); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1915, __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))) {
@@ -26825,7 +26826,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         if (unlikely(size != 2)) {
           if (size > 2) __Pyx_RaiseTooManyValuesError(2);
           else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-          __PYX_ERR(0, 1914, __pyx_L1_error)
+          __PYX_ERR(0, 1915, __pyx_L1_error)
         }
         #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
         if (likely(PyTuple_CheckExact(sequence))) {
@@ -26838,15 +26839,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_INCREF(__pyx_t_4);
         __Pyx_INCREF(__pyx_t_6);
         #else
-        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1914, __pyx_L1_error)
+        __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1915, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_4);
-        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1914, __pyx_L1_error)
+        __pyx_t_6 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1915, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
         #endif
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       } else {
         Py_ssize_t index = -1;
-        __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1914, __pyx_L1_error)
+        __pyx_t_7 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1915, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         __pyx_t_8 = Py_TYPE(__pyx_t_7)->tp_iternext;
@@ -26854,7 +26855,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_GOTREF(__pyx_t_4);
         index = 1; __pyx_t_6 = __pyx_t_8(__pyx_t_7); if (unlikely(!__pyx_t_6)) goto __pyx_L26_unpacking_failed;
         __Pyx_GOTREF(__pyx_t_6);
-        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1914, __pyx_L1_error)
+        if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_7), 2) < 0) __PYX_ERR(0, 1915, __pyx_L1_error)
         __pyx_t_8 = NULL;
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         goto __pyx_L27_unpacking_done;
@@ -26862,7 +26863,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
         __pyx_t_8 = NULL;
         if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-        __PYX_ERR(0, 1914, __pyx_L1_error)
+        __PYX_ERR(0, 1915, __pyx_L1_error)
         __pyx_L27_unpacking_done:;
       }
       __pyx_v_prefix = __pyx_t_4;
@@ -26870,14 +26871,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_v_name = __pyx_t_6;
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1915
+      /* "lxml/objectify.pyx":1916
  *         if u':' in _xsi:
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)             # <<<<<<<<<<<<<<
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  */
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1915, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_get); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1916, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_4 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -26891,25 +26892,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_4, __pyx_v_prefix) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v_prefix);
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1915, __pyx_L1_error)
+      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1916, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       __pyx_v_ns = __pyx_t_5;
       __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1916
+      /* "lxml/objectify.pyx":1917
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:
  */
-      __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, 1916, __pyx_L1_error)
-      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1916, __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, 1917, __pyx_L1_error)
+      __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1917, __pyx_L1_error)
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       if (unlikely(__pyx_t_1)) {
 
-        /* "lxml/objectify.pyx":1917
+        /* "lxml/objectify.pyx":1918
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"             # <<<<<<<<<<<<<<
@@ -26917,9 +26918,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *             name = _xsi
  */
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
-        __PYX_ERR(0, 1917, __pyx_L1_error)
+        __PYX_ERR(0, 1918, __pyx_L1_error)
 
-        /* "lxml/objectify.pyx":1916
+        /* "lxml/objectify.pyx":1917
  *             prefix, name = _xsi.split(u':', 1)
  *             ns = nsmap.get(prefix)
  *             if ns != XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
@@ -26928,7 +26929,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "lxml/objectify.pyx":1913
+      /* "lxml/objectify.pyx":1914
  * 
  *     if _xsi is not None:
  *         if u':' in _xsi:             # <<<<<<<<<<<<<<
@@ -26938,7 +26939,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L25;
     }
 
-    /* "lxml/objectify.pyx":1918
+    /* "lxml/objectify.pyx":1919
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26949,7 +26950,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = (__pyx_t_1 != 0);
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1919
+      /* "lxml/objectify.pyx":1920
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:
  *             name = _xsi             # <<<<<<<<<<<<<<
@@ -26959,19 +26960,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
 
-      /* "lxml/objectify.pyx":1920
+      /* "lxml/objectify.pyx":1921
  *         elif nsmap is _DEFAULT_NSMAP:
  *             name = _xsi
  *             _xsi = u'xsd:' + _xsi             # <<<<<<<<<<<<<<
  *         else:
  *             name = _xsi
  */
-      __pyx_t_5 = PyNumber_Add(__pyx_kp_u_xsd, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1920, __pyx_L1_error)
+      __pyx_t_5 = PyNumber_Add(__pyx_kp_u_xsd, __pyx_v__xsi); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1921, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_5);
       __pyx_t_5 = 0;
 
-      /* "lxml/objectify.pyx":1918
+      /* "lxml/objectify.pyx":1919
  *             if ns != XML_SCHEMA_NS:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         elif nsmap is _DEFAULT_NSMAP:             # <<<<<<<<<<<<<<
@@ -26981,7 +26982,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L25;
     }
 
-    /* "lxml/objectify.pyx":1922
+    /* "lxml/objectify.pyx":1923
  *             _xsi = u'xsd:' + _xsi
  *         else:
  *             name = _xsi             # <<<<<<<<<<<<<<
@@ -26992,14 +26993,14 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_v__xsi);
       __pyx_v_name = __pyx_v__xsi;
 
-      /* "lxml/objectify.pyx":1923
+      /* "lxml/objectify.pyx":1924
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  */
-      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1923, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyObject_GetAttrStr(__pyx_v_nsmap, __pyx_n_s_items); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1924, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_4 = NULL;
       if (CYTHON_UNPACK_METHODS && likely(PyMethod_Check(__pyx_t_6))) {
@@ -27013,16 +27014,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       __pyx_t_5 = (__pyx_t_4) ? __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_t_4) : __Pyx_PyObject_CallNoArg(__pyx_t_6);
       __Pyx_XDECREF(__pyx_t_4); __pyx_t_4 = 0;
-      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1923, __pyx_L1_error)
+      if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1924, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_5);
       __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
       if (likely(PyList_CheckExact(__pyx_t_5)) || PyTuple_CheckExact(__pyx_t_5)) {
         __pyx_t_6 = __pyx_t_5; __Pyx_INCREF(__pyx_t_6); __pyx_t_9 = 0;
         __pyx_t_10 = NULL;
       } else {
-        __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1923, __pyx_L1_error)
+        __pyx_t_9 = -1; __pyx_t_6 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1924, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
-        __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1923, __pyx_L1_error)
+        __pyx_t_10 = Py_TYPE(__pyx_t_6)->tp_iternext; if (unlikely(!__pyx_t_10)) __PYX_ERR(0, 1924, __pyx_L1_error)
       }
       __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
       for (;;) {
@@ -27030,17 +27031,17 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           if (likely(PyList_CheckExact(__pyx_t_6))) {
             if (__pyx_t_9 >= PyList_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1923, __pyx_L1_error)
+            __pyx_t_5 = PyList_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1924, __pyx_L1_error)
             #else
-            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1923, __pyx_L1_error)
+            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1924, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             #endif
           } else {
             if (__pyx_t_9 >= PyTuple_GET_SIZE(__pyx_t_6)) break;
             #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
-            __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1923, __pyx_L1_error)
+            __pyx_t_5 = PyTuple_GET_ITEM(__pyx_t_6, __pyx_t_9); __Pyx_INCREF(__pyx_t_5); __pyx_t_9++; if (unlikely(0 < 0)) __PYX_ERR(0, 1924, __pyx_L1_error)
             #else
-            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1923, __pyx_L1_error)
+            __pyx_t_5 = PySequence_ITEM(__pyx_t_6, __pyx_t_9); __pyx_t_9++; if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1924, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
             #endif
           }
@@ -27050,7 +27051,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
             PyObject* exc_type = PyErr_Occurred();
             if (exc_type) {
               if (likely(__Pyx_PyErr_GivenExceptionMatches(exc_type, PyExc_StopIteration))) PyErr_Clear();
-              else __PYX_ERR(0, 1923, __pyx_L1_error)
+              else __PYX_ERR(0, 1924, __pyx_L1_error)
             }
             break;
           }
@@ -27062,7 +27063,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           if (unlikely(size != 2)) {
             if (size > 2) __Pyx_RaiseTooManyValuesError(2);
             else if (size >= 0) __Pyx_RaiseNeedMoreValuesError(size);
-            __PYX_ERR(0, 1923, __pyx_L1_error)
+            __PYX_ERR(0, 1924, __pyx_L1_error)
           }
           #if CYTHON_ASSUME_SAFE_MACROS && !CYTHON_AVOID_BORROWED_REFS
           if (likely(PyTuple_CheckExact(sequence))) {
@@ -27075,15 +27076,15 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_INCREF(__pyx_t_4);
           __Pyx_INCREF(__pyx_t_7);
           #else
-          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1923, __pyx_L1_error)
+          __pyx_t_4 = PySequence_ITEM(sequence, 0); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1924, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_4);
-          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1923, __pyx_L1_error)
+          __pyx_t_7 = PySequence_ITEM(sequence, 1); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1924, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_7);
           #endif
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         } else {
           Py_ssize_t index = -1;
-          __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1923, __pyx_L1_error)
+          __pyx_t_11 = PyObject_GetIter(__pyx_t_5); if (unlikely(!__pyx_t_11)) __PYX_ERR(0, 1924, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_11);
           __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
           __pyx_t_8 = Py_TYPE(__pyx_t_11)->tp_iternext;
@@ -27091,7 +27092,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_GOTREF(__pyx_t_4);
           index = 1; __pyx_t_7 = __pyx_t_8(__pyx_t_11); if (unlikely(!__pyx_t_7)) goto __pyx_L31_unpacking_failed;
           __Pyx_GOTREF(__pyx_t_7);
-          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1923, __pyx_L1_error)
+          if (__Pyx_IternextUnpackEndCheck(__pyx_t_8(__pyx_t_11), 2) < 0) __PYX_ERR(0, 1924, __pyx_L1_error)
           __pyx_t_8 = NULL;
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           goto __pyx_L32_unpacking_done;
@@ -27099,7 +27100,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           __Pyx_DECREF(__pyx_t_11); __pyx_t_11 = 0;
           __pyx_t_8 = NULL;
           if (__Pyx_IterFinish() == 0) __Pyx_RaiseNeedMoreValuesError(index);
-          __PYX_ERR(0, 1923, __pyx_L1_error)
+          __PYX_ERR(0, 1924, __pyx_L1_error)
           __pyx_L32_unpacking_done:;
         }
         __Pyx_XDECREF_SET(__pyx_v_prefix, __pyx_t_4);
@@ -27107,19 +27108,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_XDECREF_SET(__pyx_v_ns, __pyx_t_7);
         __pyx_t_7 = 0;
 
-        /* "lxml/objectify.pyx":1924
+        /* "lxml/objectify.pyx":1925
  *             name = _xsi
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi
  */
-        __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, 1924, __pyx_L1_error)
-        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1924, __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, 1925, __pyx_L1_error)
+        __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_t_5); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1925, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
         if (__pyx_t_2) {
 
-          /* "lxml/objectify.pyx":1925
+          /* "lxml/objectify.pyx":1926
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:             # <<<<<<<<<<<<<<
@@ -27133,27 +27134,27 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
             __pyx_t_2 = __pyx_t_3;
             goto __pyx_L35_bool_binop_done;
           }
-          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1925, __pyx_L1_error)
+          __pyx_t_3 = __Pyx_PyObject_IsTrue(__pyx_v_prefix); if (unlikely(__pyx_t_3 < 0)) __PYX_ERR(0, 1926, __pyx_L1_error)
           __pyx_t_2 = __pyx_t_3;
           __pyx_L35_bool_binop_done:;
           if (__pyx_t_2) {
 
-            /* "lxml/objectify.pyx":1926
+            /* "lxml/objectify.pyx":1927
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi             # <<<<<<<<<<<<<<
  *                     break
  *             else:
  */
-            __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1926, __pyx_L1_error)
+            __pyx_t_5 = PyNumber_Add(__pyx_v_prefix, __pyx_kp_u__17); if (unlikely(!__pyx_t_5)) __PYX_ERR(0, 1927, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_5);
-            __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_v__xsi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1926, __pyx_L1_error)
+            __pyx_t_7 = PyNumber_Add(__pyx_t_5, __pyx_v__xsi); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1927, __pyx_L1_error)
             __Pyx_GOTREF(__pyx_t_7);
             __Pyx_DECREF(__pyx_t_5); __pyx_t_5 = 0;
             __Pyx_DECREF_SET(__pyx_v__xsi, __pyx_t_7);
             __pyx_t_7 = 0;
 
-            /* "lxml/objectify.pyx":1925
+            /* "lxml/objectify.pyx":1926
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:
  *                     if prefix is not None and prefix:             # <<<<<<<<<<<<<<
@@ -27162,7 +27163,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
           }
 
-          /* "lxml/objectify.pyx":1927
+          /* "lxml/objectify.pyx":1928
  *                     if prefix is not None and prefix:
  *                         _xsi = prefix + u':' + _xsi
  *                     break             # <<<<<<<<<<<<<<
@@ -27171,7 +27172,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
           goto __pyx_L30_break;
 
-          /* "lxml/objectify.pyx":1924
+          /* "lxml/objectify.pyx":1925
  *             name = _xsi
  *             for prefix, ns in nsmap.items():
  *                 if ns == XML_SCHEMA_NS:             # <<<<<<<<<<<<<<
@@ -27180,7 +27181,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         }
 
-        /* "lxml/objectify.pyx":1923
+        /* "lxml/objectify.pyx":1924
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
@@ -27190,7 +27191,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       }
       /*else*/ {
 
-        /* "lxml/objectify.pyx":1929
+        /* "lxml/objectify.pyx":1930
  *                     break
  *             else:
  *                 raise ValueError, u"XSD types require the XSD namespace"             # <<<<<<<<<<<<<<
@@ -27198,10 +27199,10 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  *         if _pytype is None:
  */
         __Pyx_Raise(__pyx_builtin_ValueError, __pyx_kp_u_XSD_types_require_the_XSD_namesp, 0, 0);
-        __PYX_ERR(0, 1929, __pyx_L1_error)
+        __PYX_ERR(0, 1930, __pyx_L1_error)
       }
 
-      /* "lxml/objectify.pyx":1923
+      /* "lxml/objectify.pyx":1924
  *         else:
  *             name = _xsi
  *             for prefix, ns in nsmap.items():             # <<<<<<<<<<<<<<
@@ -27213,16 +27214,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L25:;
 
-    /* "lxml/objectify.pyx":1930
+    /* "lxml/objectify.pyx":1931
  *             else:
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi             # <<<<<<<<<<<<<<
  *         if _pytype is None:
  *             # allow using unregistered or even wrong xsi:type names
  */
-    if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_TYPE_ATTR, __pyx_v__xsi) < 0)) __PYX_ERR(0, 1930, __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, 1931, __pyx_L1_error)
 
-    /* "lxml/objectify.pyx":1931
+    /* "lxml/objectify.pyx":1932
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27233,7 +27234,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_3 = (__pyx_t_2 != 0);
     if (__pyx_t_3) {
 
-      /* "lxml/objectify.pyx":1933
+      /* "lxml/objectify.pyx":1934
  *         if _pytype is None:
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)             # <<<<<<<<<<<<<<
@@ -27242,9 +27243,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       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, 1933, __pyx_L1_error)
+        __PYX_ERR(0, 1934, __pyx_L1_error)
       }
-      __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1933, __pyx_L1_error)
+      __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v__xsi, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1934, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_6);
       __pyx_t_7 = __pyx_t_6;
       __Pyx_INCREF(__pyx_t_7);
@@ -27252,7 +27253,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_v_py_type = ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_7);
       __pyx_t_7 = 0;
 
-      /* "lxml/objectify.pyx":1934
+      /* "lxml/objectify.pyx":1935
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:             # <<<<<<<<<<<<<<
@@ -27263,7 +27264,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_2 = (__pyx_t_3 != 0);
       if (__pyx_t_2) {
 
-        /* "lxml/objectify.pyx":1935
+        /* "lxml/objectify.pyx":1936
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)             # <<<<<<<<<<<<<<
@@ -27272,9 +27273,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         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, 1935, __pyx_L1_error)
+          __PYX_ERR(0, 1936, __pyx_L1_error)
         }
-        __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1935, __pyx_L1_error)
+        __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, __pyx_v_name, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1936, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_7);
         __pyx_t_6 = __pyx_t_7;
         __Pyx_INCREF(__pyx_t_6);
@@ -27282,7 +27283,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1934
+        /* "lxml/objectify.pyx":1935
  *             # allow using unregistered or even wrong xsi:type names
  *             py_type = <PyType>_SCHEMA_TYPE_DICT.get(_xsi)
  *             if py_type is None:             # <<<<<<<<<<<<<<
@@ -27291,7 +27292,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "lxml/objectify.pyx":1936
+      /* "lxml/objectify.pyx":1937
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27302,7 +27303,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_3 = (__pyx_t_2 != 0);
       if (__pyx_t_3) {
 
-        /* "lxml/objectify.pyx":1937
+        /* "lxml/objectify.pyx":1938
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:
  *                 _pytype = py_type.name             # <<<<<<<<<<<<<<
@@ -27314,7 +27315,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
         __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1936
+        /* "lxml/objectify.pyx":1937
  *             if py_type is None:
  *                 py_type = <PyType>_SCHEMA_TYPE_DICT.get(name)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27323,7 +27324,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
       }
 
-      /* "lxml/objectify.pyx":1931
+      /* "lxml/objectify.pyx":1932
  *                 raise ValueError, u"XSD types require the XSD namespace"
  *         _attributes[XML_SCHEMA_INSTANCE_TYPE_ATTR] = _xsi
  *         if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27332,7 +27333,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
     }
 
-    /* "lxml/objectify.pyx":1912
+    /* "lxml/objectify.pyx":1913
  *             _pytype = _attributes.get(PYTYPE_ATTRIBUTE)
  * 
  *     if _xsi is not None:             # <<<<<<<<<<<<<<
@@ -27341,7 +27342,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1939
+  /* "lxml/objectify.pyx":1940
  *                 _pytype = py_type.name
  * 
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27352,19 +27353,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_3 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1940
+    /* "lxml/objectify.pyx":1941
  * 
  *     if _pytype is None:
  *         _pytype = _pytypename(_value)             # <<<<<<<<<<<<<<
  * 
  *     if _value is None and _pytype != u"str":
  */
-    __pyx_t_6 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1940, __pyx_L1_error)
+    __pyx_t_6 = __pyx_f_4lxml_9objectify__pytypename(__pyx_v__value); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1941, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "lxml/objectify.pyx":1939
+    /* "lxml/objectify.pyx":1940
  *                 _pytype = py_type.name
  * 
  *     if _pytype is None:             # <<<<<<<<<<<<<<
@@ -27373,7 +27374,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1942
+  /* "lxml/objectify.pyx":1943
  *         _pytype = _pytypename(_value)
  * 
  *     if _value is None and _pytype != u"str":             # <<<<<<<<<<<<<<
@@ -27387,19 +27388,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_t_2 = __pyx_t_1;
     goto __pyx_L43_bool_binop_done;
   }
-  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1942, __pyx_L1_error)
+  __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_str, Py_NE)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1943, __pyx_L1_error)
   __pyx_t_2 = __pyx_t_1;
   __pyx_L43_bool_binop_done:;
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1943
+    /* "lxml/objectify.pyx":1944
  * 
  *     if _value is None and _pytype != u"str":
  *         _pytype = _pytype or u"NoneType"             # <<<<<<<<<<<<<<
  *         strval = None
  *     elif python._isString(_value):
  */
-    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1943, __pyx_L1_error)
+    __pyx_t_2 = __Pyx_PyObject_IsTrue(__pyx_v__pytype); if (unlikely(__pyx_t_2 < 0)) __PYX_ERR(0, 1944, __pyx_L1_error)
     if (!__pyx_t_2) {
     } else {
       __Pyx_INCREF(__pyx_v__pytype);
@@ -27412,7 +27413,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_DECREF_SET(__pyx_v__pytype, __pyx_t_6);
     __pyx_t_6 = 0;
 
-    /* "lxml/objectify.pyx":1944
+    /* "lxml/objectify.pyx":1945
  *     if _value is None and _pytype != u"str":
  *         _pytype = _pytype or u"NoneType"
  *         strval = None             # <<<<<<<<<<<<<<
@@ -27422,7 +27423,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(Py_None);
     __pyx_v_strval = Py_None;
 
-    /* "lxml/objectify.pyx":1942
+    /* "lxml/objectify.pyx":1943
  *         _pytype = _pytypename(_value)
  * 
  *     if _value is None and _pytype != u"str":             # <<<<<<<<<<<<<<
@@ -27432,7 +27433,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "lxml/objectify.pyx":1945
+  /* "lxml/objectify.pyx":1946
  *         _pytype = _pytype or u"NoneType"
  *         strval = None
  *     elif python._isString(_value):             # <<<<<<<<<<<<<<
@@ -27442,7 +27443,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (_isString(__pyx_v__value) != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1946
+    /* "lxml/objectify.pyx":1947
  *         strval = None
  *     elif python._isString(_value):
  *         strval = _value             # <<<<<<<<<<<<<<
@@ -27452,7 +27453,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_INCREF(__pyx_v__value);
     __pyx_v_strval = __pyx_v__value;
 
-    /* "lxml/objectify.pyx":1945
+    /* "lxml/objectify.pyx":1946
  *         _pytype = _pytype or u"NoneType"
  *         strval = None
  *     elif python._isString(_value):             # <<<<<<<<<<<<<<
@@ -27462,7 +27463,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "lxml/objectify.pyx":1947
+  /* "lxml/objectify.pyx":1948
  *     elif python._isString(_value):
  *         strval = _value
  *     elif isinstance(_value, bool):             # <<<<<<<<<<<<<<
@@ -27471,22 +27472,22 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   __pyx_t_6 = ((PyObject*)&PyBool_Type);
   __Pyx_INCREF(__pyx_t_6);
-  __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1947, __pyx_L1_error)
+  __pyx_t_2 = PyObject_IsInstance(__pyx_v__value, __pyx_t_6); if (unlikely(__pyx_t_2 == ((int)-1))) __PYX_ERR(0, 1948, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
   __pyx_t_1 = (__pyx_t_2 != 0);
   if (__pyx_t_1) {
 
-    /* "lxml/objectify.pyx":1948
+    /* "lxml/objectify.pyx":1949
  *         strval = _value
  *     elif isinstance(_value, bool):
  *         if _value:             # <<<<<<<<<<<<<<
  *             strval = u"true"
  *         else:
  */
-    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1948, __pyx_L1_error)
+    __pyx_t_1 = __Pyx_PyObject_IsTrue(__pyx_v__value); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1949, __pyx_L1_error)
     if (__pyx_t_1) {
 
-      /* "lxml/objectify.pyx":1949
+      /* "lxml/objectify.pyx":1950
  *     elif isinstance(_value, bool):
  *         if _value:
  *             strval = u"true"             # <<<<<<<<<<<<<<
@@ -27496,7 +27497,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(__pyx_n_u_true);
       __pyx_v_strval = __pyx_n_u_true;
 
-      /* "lxml/objectify.pyx":1948
+      /* "lxml/objectify.pyx":1949
  *         strval = _value
  *     elif isinstance(_value, bool):
  *         if _value:             # <<<<<<<<<<<<<<
@@ -27506,7 +27507,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L47;
     }
 
-    /* "lxml/objectify.pyx":1951
+    /* "lxml/objectify.pyx":1952
  *             strval = u"true"
  *         else:
  *             strval = u"false"             # <<<<<<<<<<<<<<
@@ -27519,7 +27520,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L47:;
 
-    /* "lxml/objectify.pyx":1947
+    /* "lxml/objectify.pyx":1948
  *     elif python._isString(_value):
  *         strval = _value
  *     elif isinstance(_value, bool):             # <<<<<<<<<<<<<<
@@ -27529,7 +27530,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     goto __pyx_L42;
   }
 
-  /* "lxml/objectify.pyx":1953
+  /* "lxml/objectify.pyx":1954
  *             strval = u"false"
  *     else:
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)             # <<<<<<<<<<<<<<
@@ -27539,9 +27540,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   /*else*/ {
     if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
       PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-      __PYX_ERR(0, 1953, __pyx_L1_error)
+      __PYX_ERR(0, 1954, __pyx_L1_error)
     }
-    __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1953, __pyx_L1_error)
+    __pyx_t_6 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1954, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_6);
     __pyx_t_7 = __pyx_t_6;
     __Pyx_INCREF(__pyx_t_7);
@@ -27549,7 +27550,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_7));
     __pyx_t_7 = 0;
 
-    /* "lxml/objectify.pyx":1954
+    /* "lxml/objectify.pyx":1955
  *     else:
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *         stringify = unicode if py_type is None else py_type.stringify             # <<<<<<<<<<<<<<
@@ -27567,7 +27568,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     __pyx_v_stringify = __pyx_t_7;
     __pyx_t_7 = 0;
 
-    /* "lxml/objectify.pyx":1955
+    /* "lxml/objectify.pyx":1956
  *         py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *         stringify = unicode if py_type is None else py_type.stringify
  *         strval = stringify(_value)             # <<<<<<<<<<<<<<
@@ -27587,7 +27588,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_t_7 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_6, __pyx_t_5, __pyx_v__value) : __Pyx_PyObject_CallOneArg(__pyx_t_6, __pyx_v__value);
     __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1955, __pyx_L1_error)
+    if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1956, __pyx_L1_error)
     __Pyx_GOTREF(__pyx_t_7);
     __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
     __pyx_v_strval = __pyx_t_7;
@@ -27595,7 +27596,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   }
   __pyx_L42:;
 
-  /* "lxml/objectify.pyx":1957
+  /* "lxml/objectify.pyx":1958
  *         strval = stringify(_value)
  * 
  *     if _pytype is not None:             # <<<<<<<<<<<<<<
@@ -27606,25 +27607,25 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
   __pyx_t_2 = (__pyx_t_1 != 0);
   if (__pyx_t_2) {
 
-    /* "lxml/objectify.pyx":1958
+    /* "lxml/objectify.pyx":1959
  * 
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":             # <<<<<<<<<<<<<<
  *             strval = None
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"
  */
-    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_NoneType, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1958, __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, 1959, __pyx_L1_error)
     if (!__pyx_t_1) {
     } else {
       __pyx_t_2 = __pyx_t_1;
       goto __pyx_L50_bool_binop_done;
     }
-    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1958, __pyx_L1_error)
+    __pyx_t_1 = (__Pyx_PyUnicode_Equals(__pyx_v__pytype, __pyx_n_u_none, Py_EQ)); if (unlikely(__pyx_t_1 < 0)) __PYX_ERR(0, 1959, __pyx_L1_error)
     __pyx_t_2 = __pyx_t_1;
     __pyx_L50_bool_binop_done:;
     if (__pyx_t_2) {
 
-      /* "lxml/objectify.pyx":1959
+      /* "lxml/objectify.pyx":1960
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":
  *             strval = None             # <<<<<<<<<<<<<<
@@ -27634,16 +27635,16 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_INCREF(Py_None);
       __Pyx_DECREF_SET(__pyx_v_strval, Py_None);
 
-      /* "lxml/objectify.pyx":1960
+      /* "lxml/objectify.pyx":1961
  *         if _pytype == u"NoneType" or _pytype == u"none":
  *             strval = None
  *             _attributes[XML_SCHEMA_INSTANCE_NIL_ATTR] = u"true"             # <<<<<<<<<<<<<<
  *         else:
  *             # check if type information from arguments is valid
  */
-      if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NIL_ATTR, __pyx_n_u_true) < 0)) __PYX_ERR(0, 1960, __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, 1961, __pyx_L1_error)
 
-      /* "lxml/objectify.pyx":1958
+      /* "lxml/objectify.pyx":1959
  * 
  *     if _pytype is not None:
  *         if _pytype == u"NoneType" or _pytype == u"none":             # <<<<<<<<<<<<<<
@@ -27653,7 +27654,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       goto __pyx_L49;
     }
 
-    /* "lxml/objectify.pyx":1963
+    /* "lxml/objectify.pyx":1964
  *         else:
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)             # <<<<<<<<<<<<<<
@@ -27663,9 +27664,9 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     /*else*/ {
       if (unlikely(__pyx_v_4lxml_9objectify__PYTYPE_DICT == Py_None)) {
         PyErr_Format(PyExc_AttributeError, "'NoneType' object has no attribute '%.30s'", "get");
-        __PYX_ERR(0, 1963, __pyx_L1_error)
+        __PYX_ERR(0, 1964, __pyx_L1_error)
       }
-      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1963, __pyx_L1_error)
+      __pyx_t_7 = __Pyx_PyDict_GetItemDefault(__pyx_v_4lxml_9objectify__PYTYPE_DICT, __pyx_v__pytype, Py_None); if (unlikely(!__pyx_t_7)) __PYX_ERR(0, 1964, __pyx_L1_error)
       __Pyx_GOTREF(__pyx_t_7);
       __pyx_t_6 = __pyx_t_7;
       __Pyx_INCREF(__pyx_t_6);
@@ -27673,7 +27674,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __Pyx_XDECREF_SET(__pyx_v_py_type, ((struct __pyx_obj_4lxml_9objectify_PyType *)__pyx_t_6));
       __pyx_t_6 = 0;
 
-      /* "lxml/objectify.pyx":1964
+      /* "lxml/objectify.pyx":1965
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27684,7 +27685,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
       __pyx_t_1 = (__pyx_t_2 != 0);
       if (__pyx_t_1) {
 
-        /* "lxml/objectify.pyx":1965
+        /* "lxml/objectify.pyx":1966
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:
  *                 if py_type.type_check is not None:             # <<<<<<<<<<<<<<
@@ -27695,7 +27696,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
         __pyx_t_2 = (__pyx_t_1 != 0);
         if (__pyx_t_2) {
 
-          /* "lxml/objectify.pyx":1966
+          /* "lxml/objectify.pyx":1967
  *             if py_type is not None:
  *                 if py_type.type_check is not None:
  *                     py_type.type_check(strval)             # <<<<<<<<<<<<<<
@@ -27715,12 +27716,12 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
           }
           __pyx_t_6 = (__pyx_t_5) ? __Pyx_PyObject_Call2Args(__pyx_t_7, __pyx_t_5, __pyx_v_strval) : __Pyx_PyObject_CallOneArg(__pyx_t_7, __pyx_v_strval);
           __Pyx_XDECREF(__pyx_t_5); __pyx_t_5 = 0;
-          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1966, __pyx_L1_error)
+          if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1967, __pyx_L1_error)
           __Pyx_GOTREF(__pyx_t_6);
           __Pyx_DECREF(__pyx_t_7); __pyx_t_7 = 0;
           __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-          /* "lxml/objectify.pyx":1965
+          /* "lxml/objectify.pyx":1966
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:
  *                 if py_type.type_check is not None:             # <<<<<<<<<<<<<<
@@ -27729,19 +27730,19 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
         }
 
-        /* "lxml/objectify.pyx":1967
+        /* "lxml/objectify.pyx":1968
  *                 if py_type.type_check is not None:
  *                     py_type.type_check(strval)
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype             # <<<<<<<<<<<<<<
  * 
  *     return _makeElement(u"value", strval, _attributes, nsmap)
  */
-        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1967, __pyx_L1_error)
+        __Pyx_GetModuleGlobalName(__pyx_t_6, __pyx_n_s_PYTYPE_ATTRIBUTE); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1968, __pyx_L1_error)
         __Pyx_GOTREF(__pyx_t_6);
-        if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_6, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1967, __pyx_L1_error)
+        if (unlikely(PyObject_SetItem(__pyx_v__attributes, __pyx_t_6, __pyx_v__pytype) < 0)) __PYX_ERR(0, 1968, __pyx_L1_error)
         __Pyx_DECREF(__pyx_t_6); __pyx_t_6 = 0;
 
-        /* "lxml/objectify.pyx":1964
+        /* "lxml/objectify.pyx":1965
  *             # check if type information from arguments is valid
  *             py_type = <PyType>_PYTYPE_DICT.get(_pytype)
  *             if py_type is not None:             # <<<<<<<<<<<<<<
@@ -27752,7 +27753,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
     }
     __pyx_L49:;
 
-    /* "lxml/objectify.pyx":1957
+    /* "lxml/objectify.pyx":1958
  *         strval = stringify(_value)
  * 
  *     if _pytype is not None:             # <<<<<<<<<<<<<<
@@ -27761,7 +27762,7 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  */
   }
 
-  /* "lxml/objectify.pyx":1969
+  /* "lxml/objectify.pyx":1970
  *                 _attributes[PYTYPE_ATTRIBUTE] = _pytype
  * 
  *     return _makeElement(u"value", strval, _attributes, nsmap)             # <<<<<<<<<<<<<<
@@ -27769,13 +27770,13 @@ static PyObject *__pyx_pf_4lxml_9objectify_40DataElement(CYTHON_UNUSED PyObject
  * 
  */
   __Pyx_XDECREF(__pyx_r);
-  __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1969, __pyx_L1_error)
+  __pyx_t_6 = ((PyObject *)__pyx_f_4lxml_9objectify__makeElement(__pyx_n_u_value, __pyx_v_strval, __pyx_v__attributes, __pyx_v_nsmap)); if (unlikely(!__pyx_t_6)) __PYX_ERR(0, 1970, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_6);
   __pyx_r = __pyx_t_6;
   __pyx_t_6 = 0;
   goto __pyx_L0;
 
-  /* "lxml/objectify.pyx":1866
+  /* "lxml/objectify.pyx":1867
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
@@ -34158,8 +34159,8 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedBuiltins(void) {
   __pyx_builtin_AttributeError = __Pyx_GetBuiltinName(__pyx_n_s_AttributeError); if (!__pyx_builtin_AttributeError) __PYX_ERR(0, 451, __pyx_L1_error)
   __pyx_builtin_oct = __Pyx_GetBuiltinName(__pyx_n_s_oct); if (!__pyx_builtin_oct) __PYX_ERR(0, 645, __pyx_L1_error)
   __pyx_builtin_hex = __Pyx_GetBuiltinName(__pyx_n_s_hex); if (!__pyx_builtin_hex) __PYX_ERR(0, 648, __pyx_L1_error)
-  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 967, __pyx_L1_error)
-  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 1005, __pyx_L1_error)
+  __pyx_builtin_enumerate = __Pyx_GetBuiltinName(__pyx_n_s_enumerate); if (!__pyx_builtin_enumerate) __PYX_ERR(0, 968, __pyx_L1_error)
+  __pyx_builtin_map = __Pyx_GetBuiltinName(__pyx_n_s_map); if (!__pyx_builtin_map) __PYX_ERR(0, 1006, __pyx_L1_error)
   __pyx_builtin_MemoryError = __Pyx_GetBuiltinName(__pyx_n_s_MemoryError); if (!__pyx_builtin_MemoryError) __PYX_ERR(1, 169, __pyx_L1_error)
   return 0;
   __pyx_L1_error:;
@@ -34181,69 +34182,69 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GOTREF(__pyx_slice__3);
   __Pyx_GIVEREF(__pyx_slice__3);
 
-  /* "lxml/objectify.pyx":1027
+  /* "lxml/objectify.pyx":1028
  * cdef _registerPyTypes():
  *     pytype = PyType(u'int', int, IntElement)
  *     pytype.xmlSchemaTypes = (u"integer", u"int", u"short", u"byte", u"unsignedShort",             # <<<<<<<<<<<<<<
  *                              u"unsignedByte", u"nonPositiveInteger",
  *                              u"negativeInteger", u"long", u"nonNegativeInteger",
  */
-  __pyx_tuple__5 = 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__5)) __PYX_ERR(0, 1027, __pyx_L1_error)
+  __pyx_tuple__5 = 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__5)) __PYX_ERR(0, 1028, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__5);
   __Pyx_GIVEREF(__pyx_tuple__5);
 
-  /* "lxml/objectify.pyx":1038
+  /* "lxml/objectify.pyx":1039
  * 
  *     pytype = PyType(u'float', float, FloatElement, repr)
  *     pytype.xmlSchemaTypes = (u"double", u"float")             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1038, __pyx_L1_error)
+  __pyx_tuple__6 = PyTuple_Pack(2, __pyx_n_u_double, __pyx_n_u_float); if (unlikely(!__pyx_tuple__6)) __PYX_ERR(0, 1039, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__6);
   __Pyx_GIVEREF(__pyx_tuple__6);
 
-  /* "lxml/objectify.pyx":1042
+  /* "lxml/objectify.pyx":1043
  * 
  *     pytype = PyType(u'bool', __checkBool, BoolElement, __lower_bool)
  *     pytype.xmlSchemaTypes = (u"boolean",)             # <<<<<<<<<<<<<<
  *     pytype.register()
  * 
  */
-  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1042, __pyx_L1_error)
+  __pyx_tuple__7 = PyTuple_Pack(1, __pyx_n_u_boolean); if (unlikely(!__pyx_tuple__7)) __PYX_ERR(0, 1043, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__7);
   __Pyx_GIVEREF(__pyx_tuple__7);
 
-  /* "lxml/objectify.pyx":1046
+  /* "lxml/objectify.pyx":1047
  * 
  *     pytype = PyType(u'str', None, StringElement)
  *     pytype.xmlSchemaTypes = (u"string", u"normalizedString", u"token", u"language",             # <<<<<<<<<<<<<<
  *                              u"Name", u"NCName", u"ID", u"IDREF", u"ENTITY",
  *                              u"NMTOKEN", )
  */
-  __pyx_tuple__8 = 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__8)) __PYX_ERR(0, 1046, __pyx_L1_error)
+  __pyx_tuple__8 = 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__8)) __PYX_ERR(0, 1047, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__8);
   __Pyx_GIVEREF(__pyx_tuple__8);
 
-  /* "lxml/objectify.pyx":1343
+  /* "lxml/objectify.pyx":1344
  *         result += _dump(child, indent)
  *     if indent == 1:
  *         return result[:-1] # strip last '\n'             # <<<<<<<<<<<<<<
  *     else:
  *         return result
  */
-  __pyx_slice__16 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 1343, __pyx_L1_error)
+  __pyx_slice__16 = PySlice_New(Py_None, __pyx_int_neg_1, Py_None); if (unlikely(!__pyx_slice__16)) __PYX_ERR(0, 1344, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_slice__16);
   __Pyx_GIVEREF(__pyx_slice__16);
 
-  /* "lxml/objectify.pyx":1424
+  /* "lxml/objectify.pyx":1425
  *         schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is None and u':' in value:
  *             prefix, value = value.split(u':', 1)             # <<<<<<<<<<<<<<
  *             schema_type = <PyType>_SCHEMA_TYPE_DICT.get(value)
  *         if schema_type is not None:
  */
-  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_u__17, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1424, __pyx_L1_error)
+  __pyx_tuple__18 = PyTuple_Pack(2, __pyx_kp_u__17, __pyx_int_1); if (unlikely(!__pyx_tuple__18)) __PYX_ERR(0, 1425, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__18);
   __Pyx_GIVEREF(__pyx_tuple__18);
 
@@ -34440,300 +34441,300 @@ static CYTHON_SMALL_CODE int __Pyx_InitCachedConstants(void) {
   __Pyx_GIVEREF(__pyx_tuple__52);
   __pyx_codeobj__53 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_objectify_pyx, __pyx_n_s_complex, 781, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__53)) __PYX_ERR(0, 781, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":815
+  /* "lxml/objectify.pyx":816
  *     Python's bool type.
  *     """
  *     def _init(self):             # <<<<<<<<<<<<<<
  *         self._parse_value = __parseBool
  * 
  */
-  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __pyx_tuple__54 = PyTuple_Pack(1, __pyx_n_s_self); if (unlikely(!__pyx_tuple__54)) __PYX_ERR(0, 816, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__54);
   __Pyx_GIVEREF(__pyx_tuple__54);
-  __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__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 815, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 815, __pyx_L1_error)
+  __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__54, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_init, 816, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__55)) __PYX_ERR(0, 816, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":837
- *             return __parseBool(textOf(self._c_node))
+  /* "lxml/objectify.pyx":838
+ *         return __parseBool(textOf(self._c_node))
  * 
  * def __checkBool(s):             # <<<<<<<<<<<<<<
  *     cdef int value = -1
  *     if s is not None:
  */
-  __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 837, __pyx_L1_error)
+  __pyx_tuple__56 = PyTuple_Pack(2, __pyx_n_s_s_3, __pyx_n_s_value); if (unlikely(!__pyx_tuple__56)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__56);
   __Pyx_GIVEREF(__pyx_tuple__56);
-  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 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_objectify_pyx, __pyx_n_s_checkBool, 837, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 837, __pyx_L1_error)
+  __pyx_codeobj__57 = (PyObject*)__Pyx_PyCode_New(1, 0, 2, 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_objectify_pyx, __pyx_n_s_checkBool, 838, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__57)) __PYX_ERR(0, 838, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":844
+  /* "lxml/objectify.pyx":845
  *         raise ValueError
  * 
  * cpdef bint __parseBool(s) except -1:             # <<<<<<<<<<<<<<
  *     cdef int value
  *     if s is None:
  */
-  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 844, __pyx_L1_error)
+  __pyx_tuple__58 = PyTuple_Pack(1, __pyx_n_s_s_3); if (unlikely(!__pyx_tuple__58)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__58);
   __Pyx_GIVEREF(__pyx_tuple__58);
-  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_objectify_pyx, __pyx_n_s_parseBool, 844, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 844, __pyx_L1_error)
+  __pyx_codeobj__59 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_objectify_pyx, __pyx_n_s_parseBool, 845, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__59)) __PYX_ERR(0, 845, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":942
+  /* "lxml/objectify.pyx":943
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
  *         u"""register(self, before=None, after=None)
  * 
  */
-  __pyx_tuple__60 = 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__60)) __PYX_ERR(0, 942, __pyx_L1_error)
+  __pyx_tuple__60 = 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__60)) __PYX_ERR(0, 943, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__60);
   __Pyx_GIVEREF(__pyx_tuple__60);
-  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 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_objectify_pyx, __pyx_n_s_register, 942, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 942, __pyx_L1_error)
+  __pyx_codeobj__61 = (PyObject*)__Pyx_PyCode_New(3, 0, 11, 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_objectify_pyx, __pyx_n_s_register, 943, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__61)) __PYX_ERR(0, 943, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":983
+  /* "lxml/objectify.pyx":984
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
  *         u"unregister(self)"
  *         if _PYTYPE_DICT.get(self.name) is self:
  */
-  __pyx_tuple__62 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 983, __pyx_L1_error)
+  __pyx_tuple__62 = PyTuple_Pack(3, __pyx_n_s_self, __pyx_n_s_xs_type, __pyx_n_s_pytype); if (unlikely(!__pyx_tuple__62)) __PYX_ERR(0, 984, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__62);
   __Pyx_GIVEREF(__pyx_tuple__62);
-  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 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_objectify_pyx, __pyx_n_s_unregister, 983, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 983, __pyx_L1_error)
+  __pyx_codeobj__63 = (PyObject*)__Pyx_PyCode_New(1, 0, 3, 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_objectify_pyx, __pyx_n_s_unregister, 984, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__63)) __PYX_ERR(0, 984, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1012
+  /* "lxml/objectify.pyx":1013
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
  *     return u"true" if b else u"false"
  * 
  */
-  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 1012, __pyx_L1_error)
+  __pyx_tuple__64 = PyTuple_Pack(1, __pyx_n_s_b); if (unlikely(!__pyx_tuple__64)) __PYX_ERR(0, 1013, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__64);
   __Pyx_GIVEREF(__pyx_tuple__64);
-  __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__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1012, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1012, __pyx_L1_error)
+  __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__64, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_lower_bool, 1013, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__65)) __PYX_ERR(0, 1013, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1018
+  /* "lxml/objectify.pyx":1019
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
  *     u"""pytypename(obj)
  * 
  */
-  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 1018, __pyx_L1_error)
+  __pyx_tuple__66 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__66)) __PYX_ERR(0, 1019, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__66);
   __Pyx_GIVEREF(__pyx_tuple__66);
-  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_objectify_pyx, __pyx_n_s_pytypename, 1018, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1018, __pyx_L1_error)
+  __pyx_codeobj__67 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_objectify_pyx, __pyx_n_s_pytypename, 1019, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__67)) __PYX_ERR(0, 1019, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1064
+  /* "lxml/objectify.pyx":1065
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
  *     u"""getRegisteredTypes()
  * 
  */
-  __pyx_tuple__68 = 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__68)) __PYX_ERR(0, 1064, __pyx_L1_error)
+  __pyx_tuple__68 = 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__68)) __PYX_ERR(0, 1065, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__68);
   __Pyx_GIVEREF(__pyx_tuple__68);
-  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 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_getRegisteredTypes, 1064, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1064, __pyx_L1_error)
+  __pyx_codeobj__69 = (PyObject*)__Pyx_PyCode_New(0, 0, 5, 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_getRegisteredTypes, 1065, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__69)) __PYX_ERR(0, 1065, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1299
+  /* "lxml/objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
  *     u"""enable_recursive_str(on=True)
  * 
  */
-  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 1299, __pyx_L1_error)
+  __pyx_tuple__70 = PyTuple_Pack(1, __pyx_n_s_on); if (unlikely(!__pyx_tuple__70)) __PYX_ERR(0, 1300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__70);
   __Pyx_GIVEREF(__pyx_tuple__70);
-  __pyx_codeobj__71 = (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_enable_recursive_str, 1299, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 1299, __pyx_L1_error)
-  __pyx_tuple__72 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 1299, __pyx_L1_error)
+  __pyx_codeobj__71 = (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_enable_recursive_str, 1300, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__71)) __PYX_ERR(0, 1300, __pyx_L1_error)
+  __pyx_tuple__72 = PyTuple_Pack(1, ((PyObject *)Py_True)); if (unlikely(!__pyx_tuple__72)) __PYX_ERR(0, 1300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__72);
   __Pyx_GIVEREF(__pyx_tuple__72);
 
-  /* "lxml/objectify.pyx":1308
+  /* "lxml/objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
  *     u"""dump(_Element element not None)
  * 
  */
-  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1308, __pyx_L1_error)
+  __pyx_tuple__73 = PyTuple_Pack(1, __pyx_n_s_element); if (unlikely(!__pyx_tuple__73)) __PYX_ERR(0, 1309, __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_dump, 1308, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1308, __pyx_L1_error)
+  __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_dump, 1309, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__74)) __PYX_ERR(0, 1309, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1351
+  /* "lxml/objectify.pyx":1352
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
  *     return etree.ElementTree(fromstring(data))
  * 
  */
-  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1351, __pyx_L1_error)
+  __pyx_tuple__75 = PyTuple_Pack(1, __pyx_n_s_data); if (unlikely(!__pyx_tuple__75)) __PYX_ERR(0, 1352, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__75);
   __Pyx_GIVEREF(__pyx_tuple__75);
-  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_unpickleElementTree, 1351, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1351, __pyx_L1_error)
+  __pyx_codeobj__76 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_unpickleElementTree, 1352, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__76)) __PYX_ERR(0, 1352, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1362
+  /* "lxml/objectify.pyx":1363
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
  *     return __unpickleElementTree, (etree.tostring(obj),)
  * 
  */
-  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 1362, __pyx_L1_error)
+  __pyx_tuple__77 = PyTuple_Pack(1, __pyx_n_s_obj); if (unlikely(!__pyx_tuple__77)) __PYX_ERR(0, 1363, __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_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1362, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1362, __pyx_L1_error)
+  __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_objectify_pyx, __pyx_n_s_pickleReduceElementTree, 1363, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__78)) __PYX_ERR(0, 1363, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1456
+  /* "lxml/objectify.pyx":1457
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
-  __pyx_tuple__79 = 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__79)) __PYX_ERR(0, 1456, __pyx_L1_error)
+  __pyx_tuple__79 = 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__79)) __PYX_ERR(0, 1457, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__79);
   __Pyx_GIVEREF(__pyx_tuple__79);
-  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 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_pyannotate, 1456, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1456, __pyx_L1_error)
+  __pyx_codeobj__80 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 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_pyannotate, 1457, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__80)) __PYX_ERR(0, 1457, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1479
+  /* "lxml/objectify.pyx":1480
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
-  __pyx_tuple__81 = 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__81)) __PYX_ERR(0, 1479, __pyx_L1_error)
+  __pyx_tuple__81 = 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__81)) __PYX_ERR(0, 1480, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__81);
   __Pyx_GIVEREF(__pyx_tuple__81);
-  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 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_xsiannotate, 1479, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1479, __pyx_L1_error)
+  __pyx_codeobj__82 = (PyObject*)__Pyx_PyCode_New(1, 3, 5, 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_xsiannotate, 1480, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__82)) __PYX_ERR(0, 1480, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1507
+  /* "lxml/objectify.pyx":1508
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
-  __pyx_tuple__83 = 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__83)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __pyx_tuple__83 = 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__83)) __PYX_ERR(0, 1508, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__83);
   __Pyx_GIVEREF(__pyx_tuple__83);
-  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 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_annotate, 1507, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __pyx_codeobj__84 = (PyObject*)__Pyx_PyCode_New(1, 6, 8, 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_annotate, 1508, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__84)) __PYX_ERR(0, 1508, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1703
+  /* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                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__85 = 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__85)) __PYX_ERR(0, 1703, __pyx_L1_error)
+  __pyx_tuple__85 = 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__85)) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__85);
   __Pyx_GIVEREF(__pyx_tuple__85);
-  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 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_deannotate, 1703, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 1703, __pyx_L1_error)
+  __pyx_codeobj__86 = (PyObject*)__Pyx_PyCode_New(1, 4, 6, 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_deannotate, 1704, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__86)) __PYX_ERR(0, 1704, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1743
+  /* "lxml/objectify.pyx":1744
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
  *     u"""set_default_parser(new_parser = None)
  * 
  */
-  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 1743, __pyx_L1_error)
+  __pyx_tuple__87 = PyTuple_Pack(1, __pyx_n_s_new_parser); if (unlikely(!__pyx_tuple__87)) __PYX_ERR(0, 1744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__87);
   __Pyx_GIVEREF(__pyx_tuple__87);
-  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_set_default_parser, 1743, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 1743, __pyx_L1_error)
-  __pyx_tuple__89 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 1743, __pyx_L1_error)
+  __pyx_codeobj__88 = (PyObject*)__Pyx_PyCode_New(1, 0, 1, 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_set_default_parser, 1744, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__88)) __PYX_ERR(0, 1744, __pyx_L1_error)
+  __pyx_tuple__89 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__89)) __PYX_ERR(0, 1744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__89);
   __Pyx_GIVEREF(__pyx_tuple__89);
 
-  /* "lxml/objectify.pyx":1761
+  /* "lxml/objectify.pyx":1762
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
  *     u"""makeparser(remove_blank_text=True, **kw)
  * 
  */
-  __pyx_tuple__90 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 1761, __pyx_L1_error)
+  __pyx_tuple__90 = PyTuple_Pack(2, __pyx_n_s_kw, __pyx_n_s_parser); if (unlikely(!__pyx_tuple__90)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__90);
   __Pyx_GIVEREF(__pyx_tuple__90);
-  __pyx_codeobj__91 = (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__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1761, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1761, __pyx_L1_error)
+  __pyx_codeobj__91 = (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__90, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_makeparser, 1762, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__91)) __PYX_ERR(0, 1762, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1788
+  /* "lxml/objectify.pyx":1789
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__92 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1788, __pyx_L1_error)
+  __pyx_tuple__92 = PyTuple_Pack(3, __pyx_n_s_xml, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__92)) __PYX_ERR(0, 1789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__92);
   __Pyx_GIVEREF(__pyx_tuple__92);
-  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 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_objectify_pyx, __pyx_n_s_fromstring, 1788, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1788, __pyx_L1_error)
-  __pyx_tuple__94 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 1788, __pyx_L1_error)
+  __pyx_codeobj__93 = (PyObject*)__Pyx_PyCode_New(2, 1, 3, 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_objectify_pyx, __pyx_n_s_fromstring, 1789, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__93)) __PYX_ERR(0, 1789, __pyx_L1_error)
+  __pyx_tuple__94 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__94)) __PYX_ERR(0, 1789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__94);
   __Pyx_GIVEREF(__pyx_tuple__94);
 
-  /* "lxml/objectify.pyx":1804
+  /* "lxml/objectify.pyx":1805
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(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, 1804, __pyx_L1_error)
+  __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, 1805, __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_XML, 1804, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1804, __pyx_L1_error)
-  __pyx_tuple__97 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 1804, __pyx_L1_error)
+  __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_XML, 1805, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__96)) __PYX_ERR(0, 1805, __pyx_L1_error)
+  __pyx_tuple__97 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__97)) __PYX_ERR(0, 1805, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__97);
   __Pyx_GIVEREF(__pyx_tuple__97);
 
-  /* "lxml/objectify.pyx":1823
+  /* "lxml/objectify.pyx":1824
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
-  __pyx_tuple__98 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __pyx_tuple__98 = PyTuple_Pack(3, __pyx_n_s_f, __pyx_n_s_parser, __pyx_n_s_base_url); if (unlikely(!__pyx_tuple__98)) __PYX_ERR(0, 1824, __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_parse, 1823, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1823, __pyx_L1_error)
-  __pyx_tuple__100 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __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_parse, 1824, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__99)) __PYX_ERR(0, 1824, __pyx_L1_error)
+  __pyx_tuple__100 = PyTuple_Pack(1, ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__100)) __PYX_ERR(0, 1824, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__100);
   __Pyx_GIVEREF(__pyx_tuple__100);
 
-  /* "lxml/objectify.pyx":1846
+  /* "lxml/objectify.pyx":1847
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
-  __pyx_tuple__101 = 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__101)) __PYX_ERR(0, 1846, __pyx_L1_error)
+  __pyx_tuple__101 = 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__101)) __PYX_ERR(0, 1847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__101);
   __Pyx_GIVEREF(__pyx_tuple__101);
-  __pyx_codeobj__102 = (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__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1846, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1846, __pyx_L1_error)
-  __pyx_tuple__103 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 1846, __pyx_L1_error)
+  __pyx_codeobj__102 = (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__101, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_Element, 1847, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__102)) __PYX_ERR(0, 1847, __pyx_L1_error)
+  __pyx_tuple__103 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__103)) __PYX_ERR(0, 1847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__103);
   __Pyx_GIVEREF(__pyx_tuple__103);
 
-  /* "lxml/objectify.pyx":1866
+  /* "lxml/objectify.pyx":1867
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
-  __pyx_tuple__104 = 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__104)) __PYX_ERR(0, 1866, __pyx_L1_error)
+  __pyx_tuple__104 = 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__104)) __PYX_ERR(0, 1867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__104);
   __Pyx_GIVEREF(__pyx_tuple__104);
-  __pyx_codeobj__105 = (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__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1866, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 1866, __pyx_L1_error)
-  __pyx_tuple__106 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 1866, __pyx_L1_error)
+  __pyx_codeobj__105 = (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__104, __pyx_empty_tuple, __pyx_empty_tuple, __pyx_kp_s_src_lxml_objectify_pyx, __pyx_n_s_DataElement, 1867, __pyx_empty_bytes); if (unlikely(!__pyx_codeobj__105)) __PYX_ERR(0, 1867, __pyx_L1_error)
+  __pyx_tuple__106 = PyTuple_Pack(2, ((PyObject *)Py_None), ((PyObject *)Py_None)); if (unlikely(!__pyx_tuple__106)) __PYX_ERR(0, 1867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_tuple__106);
   __Pyx_GIVEREF(__pyx_tuple__106);
 
@@ -34998,28 +34999,28 @@ static int __Pyx_modinit_type_init_code(void) {
   if (PyObject_SetAttr(__pyx_m, __pyx_n_s_NoneElement, (PyObject *)&__pyx_type_4lxml_9objectify_NoneElement) < 0) __PYX_ERR(0, 784, __pyx_L1_error)
   __pyx_ptype_4lxml_9objectify_NoneElement = &__pyx_type_4lxml_9objectify_NoneElement;
   __pyx_type_4lxml_9objectify_BoolElement.tp_base = __pyx_ptype_4lxml_9objectify_IntElement;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 809, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 810, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_BoolElement.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_BoolElement.tp_dictoffset && __pyx_type_4lxml_9objectify_BoolElement.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_9objectify_BoolElement.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoolElement, (PyObject *)&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 809, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_BoolElement, (PyObject *)&__pyx_type_4lxml_9objectify_BoolElement) < 0) __PYX_ERR(0, 810, __pyx_L1_error)
   __pyx_ptype_4lxml_9objectify_BoolElement = &__pyx_type_4lxml_9objectify_BoolElement;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 895, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 896, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_PyType.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_PyType.tp_dictoffset && __pyx_type_4lxml_9objectify_PyType.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_9objectify_PyType.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyType, (PyObject *)&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 895, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_PyType, (PyObject *)&__pyx_type_4lxml_9objectify_PyType) < 0) __PYX_ERR(0, 896, __pyx_L1_error)
   __pyx_ptype_4lxml_9objectify_PyType = &__pyx_type_4lxml_9objectify_PyType;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) __PYX_ERR(0, 1125, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller) < 0) __PYX_ERR(0, 1126, __pyx_L1_error)
   __pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_dictoffset && __pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller.tp_getattro = __Pyx_PyObject_GenericGetAttrNoDict;
   }
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1125, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller, "__call__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1126, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__.doc = __pyx_doc_4lxml_9objectify_28_ObjectifyElementMakerCaller___call__;
@@ -35030,22 +35031,22 @@ static int __Pyx_modinit_type_init_code(void) {
   __pyx_ptype_4lxml_9objectify__ObjectifyElementMakerCaller = &__pyx_type_4lxml_9objectify__ObjectifyElementMakerCaller;
   __pyx_vtabptr_4lxml_9objectify_ElementMaker = &__pyx_vtable_4lxml_9objectify_ElementMaker;
   __pyx_vtable_4lxml_9objectify_ElementMaker._build_element_maker = (PyObject *(*)(struct __pyx_obj_4lxml_9objectify_ElementMaker *, PyObject *, int))__pyx_f_4lxml_9objectify_12ElementMaker__build_element_maker;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1216, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_ElementMaker.tp_print = 0;
-  if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMaker, (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1215, __pyx_L1_error)
+  if (__Pyx_SetVtable(__pyx_type_4lxml_9objectify_ElementMaker.tp_dict, __pyx_vtabptr_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1216, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ElementMaker, (PyObject *)&__pyx_type_4lxml_9objectify_ElementMaker) < 0) __PYX_ERR(0, 1216, __pyx_L1_error)
   __pyx_ptype_4lxml_9objectify_ElementMaker = &__pyx_type_4lxml_9objectify_ElementMaker;
   __pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup = __Pyx_ImportType(__pyx_t_1, "lxml.etree", "ElementClassLookup", sizeof(struct LxmlElementClassLookup), __Pyx_ImportType_CheckSize_Warn);
    if (!__pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup) __PYX_ERR(0, 1, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_base = __pyx_ptype_4lxml_8includes_11etreepublic_ElementClassLookup;
-  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1371, __pyx_L1_error)
+  if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1372, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_print = 0;
   if ((CYTHON_USE_TYPE_SLOTS && CYTHON_USE_PYTYPE_LOOKUP) && likely(!__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_dictoffset && __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_getattro == PyObject_GenericGetAttr)) {
     __pyx_type_4lxml_9objectify_ObjectifyElementClassLookup.tp_getattro = __Pyx_PyObject_GenericGetAttr;
   }
   #if CYTHON_COMPILING_IN_CPYTHON
   {
-    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1371, __pyx_L1_error)
+    PyObject *wrapper = PyObject_GetAttrString((PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup, "__init__"); if (unlikely(!wrapper)) __PYX_ERR(0, 1372, __pyx_L1_error)
     if (Py_TYPE(wrapper) == &PyWrapperDescr_Type) {
       __pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__ = *((PyWrapperDescrObject *)wrapper)->d_base;
       __pyx_wrapperbase_4lxml_9objectify_27ObjectifyElementClassLookup___init__.doc = __pyx_doc_4lxml_9objectify_27ObjectifyElementClassLookup___init__;
@@ -35053,7 +35054,7 @@ static int __Pyx_modinit_type_init_code(void) {
     }
   }
   #endif
-  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectifyElementClassLookup, (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1371, __pyx_L1_error)
+  if (PyObject_SetAttr(__pyx_m, __pyx_n_s_ObjectifyElementClassLookup, (PyObject *)&__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup) < 0) __PYX_ERR(0, 1372, __pyx_L1_error)
   __pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup = &__pyx_type_4lxml_9objectify_ObjectifyElementClassLookup;
   if (PyType_Ready(&__pyx_type_4lxml_9objectify_ObjectPath) < 0) __PYX_ERR(1, 13, __pyx_L1_error)
   __pyx_type_4lxml_9objectify_ObjectPath.tp_print = 0;
@@ -35892,143 +35893,143 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_9objectify_StringElement);
 
-  /* "lxml/objectify.pyx":815
+  /* "lxml/objectify.pyx":816
  *     Python's bool type.
  *     """
  *     def _init(self):             # <<<<<<<<<<<<<<
  *         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__55)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 815, __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__55)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 816, __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, 815, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_BoolElement->tp_dict, __pyx_n_s_init, __pyx_t_1) < 0) __PYX_ERR(0, 816, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_9objectify_BoolElement);
 
-  /* "lxml/objectify.pyx":837
- *             return __parseBool(textOf(self._c_node))
+  /* "lxml/objectify.pyx":838
+ *         return __parseBool(textOf(self._c_node))
  * 
  * def __checkBool(s):             # <<<<<<<<<<<<<<
  *     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__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 837, __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__57)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_1) < 0) __PYX_ERR(0, 837, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_checkBool, __pyx_t_1) < 0) __PYX_ERR(0, 838, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":844
+  /* "lxml/objectify.pyx":845
  *         raise ValueError
  * 
  * cpdef bint __parseBool(s) except -1:             # <<<<<<<<<<<<<<
  *     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__59)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 844, __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__59)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseBool, __pyx_t_1) < 0) __PYX_ERR(0, 844, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parseBool, __pyx_t_1) < 0) __PYX_ERR(0, 845, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":942
+  /* "lxml/objectify.pyx":943
  *         return "PyType(%s, %s)" % (self.name, self._type.__name__)
  * 
  *     def register(self, before=None, after=None):             # <<<<<<<<<<<<<<
  *         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__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 942, __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__61)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 943, __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, 942, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_register, __pyx_t_1) < 0) __PYX_ERR(0, 943, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_9objectify_PyType);
 
-  /* "lxml/objectify.pyx":983
+  /* "lxml/objectify.pyx":984
  *             _SCHEMA_TYPE_DICT[xs_type] = self
  * 
  *     def unregister(self):             # <<<<<<<<<<<<<<
  *         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__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 983, __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__63)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 984, __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, 983, __pyx_L1_error)
+  if (PyDict_SetItem((PyObject *)__pyx_ptype_4lxml_9objectify_PyType->tp_dict, __pyx_n_s_unregister, __pyx_t_1) < 0) __PYX_ERR(0, 984, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   PyType_Modified(__pyx_ptype_4lxml_9objectify_PyType);
 
-  /* "lxml/objectify.pyx":1008
+  /* "lxml/objectify.pyx":1009
  * 
  * 
  * cdef dict _PYTYPE_DICT = {}             # <<<<<<<<<<<<<<
  * cdef dict _SCHEMA_TYPE_DICT = {}
  * cdef list _TYPE_CHECKS = []
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1008, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__PYTYPE_DICT);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__PYTYPE_DICT, ((PyObject*)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1009
+  /* "lxml/objectify.pyx":1010
  * 
  * cdef dict _PYTYPE_DICT = {}
  * cdef dict _SCHEMA_TYPE_DICT = {}             # <<<<<<<<<<<<<<
  * cdef list _TYPE_CHECKS = []
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1009, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1010, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__SCHEMA_TYPE_DICT, ((PyObject*)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1010
+  /* "lxml/objectify.pyx":1011
  * cdef dict _PYTYPE_DICT = {}
  * cdef dict _SCHEMA_TYPE_DICT = {}
  * cdef list _TYPE_CHECKS = []             # <<<<<<<<<<<<<<
  * 
  * def __lower_bool(b):
  */
-  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1010, __pyx_L1_error)
+  __pyx_t_1 = PyList_New(0); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1011, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__TYPE_CHECKS);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__TYPE_CHECKS, ((PyObject*)__pyx_t_1));
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1012
+  /* "lxml/objectify.pyx":1013
  * cdef list _TYPE_CHECKS = []
  * 
  * def __lower_bool(b):             # <<<<<<<<<<<<<<
  *     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__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1012, __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__65)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1013, __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, 1012, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_lower_bool, __pyx_t_1) < 0) __PYX_ERR(0, 1013, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1018
+  /* "lxml/objectify.pyx":1019
  *     return u"str" if python._isString(obj) else _typename(obj)
  * 
  * def pytypename(obj):             # <<<<<<<<<<<<<<
  *     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__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1018, __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__67)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1019, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_1) < 0) __PYX_ERR(0, 1018, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pytypename, __pyx_t_1) < 0) __PYX_ERR(0, 1019, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1060
+  /* "lxml/objectify.pyx":1061
  * 
  * # non-registered PyType for inner tree elements
  * cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement)             # <<<<<<<<<<<<<<
  * 
  * _registerPyTypes()
  */
-  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1060, __pyx_L1_error)
+  __pyx_t_1 = PyTuple_New(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_INCREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
   __Pyx_GIVEREF(__pyx_v_4lxml_9objectify_TREE_PYTYPE_NAME);
@@ -36039,7 +36040,7 @@ if (!__Pyx_RefNanny) {
   __Pyx_INCREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
   __Pyx_GIVEREF(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
   PyTuple_SET_ITEM(__pyx_t_1, 2, ((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifiedElement));
-  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1060, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_Call(((PyObject *)__pyx_ptype_4lxml_9objectify_PyType), __pyx_t_1, NULL); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1061, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
   __Pyx_XGOTREF(((PyObject *)__pyx_v_4lxml_9objectify_TREE_PYTYPE));
@@ -36047,30 +36048,30 @@ if (!__Pyx_RefNanny) {
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1062
+  /* "lxml/objectify.pyx":1063
  * cdef PyType TREE_PYTYPE = PyType(TREE_PYTYPE_NAME, None, ObjectifiedElement)
  * 
  * _registerPyTypes()             # <<<<<<<<<<<<<<
  * 
  * def getRegisteredTypes():
  */
-  __pyx_t_2 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1062, __pyx_L1_error)
+  __pyx_t_2 = __pyx_f_4lxml_9objectify__registerPyTypes(); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1063, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1064
+  /* "lxml/objectify.pyx":1065
  * _registerPyTypes()
  * 
  * def getRegisteredTypes():             # <<<<<<<<<<<<<<
  *     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__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1064, __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__69)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1065, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_2) < 0) __PYX_ERR(0, 1064, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_getRegisteredTypes, __pyx_t_2) < 0) __PYX_ERR(0, 1065, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1297
+  /* "lxml/objectify.pyx":1298
  * # Recursive element dumping
  * 
  * cdef bint __RECURSIVE_STR = 0 # default: off             # <<<<<<<<<<<<<<
@@ -36079,227 +36080,227 @@ if (!__Pyx_RefNanny) {
  */
   __pyx_v_4lxml_9objectify___RECURSIVE_STR = 0;
 
-  /* "lxml/objectify.pyx":1299
+  /* "lxml/objectify.pyx":1300
  * cdef bint __RECURSIVE_STR = 0 # default: off
  * 
  * def enable_recursive_str(on=True):             # <<<<<<<<<<<<<<
  *     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__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1299, __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__71)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1300, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__72);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_2) < 0) __PYX_ERR(0, 1299, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_enable_recursive_str, __pyx_t_2) < 0) __PYX_ERR(0, 1300, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1308
+  /* "lxml/objectify.pyx":1309
  *     __RECURSIVE_STR = on
  * 
  * def dump(_Element element not None):             # <<<<<<<<<<<<<<
  *     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__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1308, __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__74)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1309, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 1308, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_dump, __pyx_t_2) < 0) __PYX_ERR(0, 1309, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1351
+  /* "lxml/objectify.pyx":1352
  * # Pickle support for objectified ElementTree
  * 
  * def __unpickleElementTree(data):             # <<<<<<<<<<<<<<
  *     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__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1351, __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__76)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1352, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1351, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_unpickleElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1352, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1362
+  /* "lxml/objectify.pyx":1363
  *                    elementTreeReduceFunction, __unpickleElementTree)
  * 
  * def pickleReduceElementTree(obj):             # <<<<<<<<<<<<<<
  *     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__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1362, __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__78)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1363, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1362, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pickleReduceElementTree, __pyx_t_2) < 0) __PYX_ERR(0, 1363, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1365
+  /* "lxml/objectify.pyx":1366
  *     return __unpickleElementTree, (etree.tostring(obj),)
  * 
  * _setupPickle(pickleReduceElementTree)             # <<<<<<<<<<<<<<
  * del pickleReduceElementTree
  * 
  */
-  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1365, __pyx_L1_error)
+  __Pyx_GetModuleGlobalName(__pyx_t_2, __pyx_n_s_pickleReduceElementTree); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1366, __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, 1365, __pyx_L1_error)
+  __pyx_t_1 = __pyx_f_4lxml_9objectify__setupPickle(__pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1366, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1366
+  /* "lxml/objectify.pyx":1367
  * 
  * _setupPickle(pickleReduceElementTree)
  * del pickleReduceElementTree             # <<<<<<<<<<<<<<
  * 
  * ################################################################################
  */
-  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) __PYX_ERR(0, 1366, __pyx_L1_error)
+  if (__Pyx_PyObject_DelAttrStr(__pyx_m, __pyx_n_s_pickleReduceElementTree) < 0) __PYX_ERR(0, 1367, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1456
+  /* "lxml/objectify.pyx":1457
  *     return None
  * 
  * def pyannotate(element_or_tree, *, ignore_old=False, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None):
  *     u"""pyannotate(element_or_tree, ignore_old=False, ignore_xsi=False, empty_pytype=None)
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1456, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1457, __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, 1456, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1456, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1456, __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__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1456, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1457, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1457, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1457, __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__80)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1457, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_2) < 0) __PYX_ERR(0, 1456, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_pyannotate, __pyx_t_2) < 0) __PYX_ERR(0, 1457, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1479
+  /* "lxml/objectify.pyx":1480
  *     _annotate(element, 0, 1, ignore_xsi, ignore_old, None, empty_pytype)
  * 
  * def xsiannotate(element_or_tree, *, ignore_old=False, ignore_pytype=False,             # <<<<<<<<<<<<<<
  *                 empty_type=None):
  *     u"""xsiannotate(element_or_tree, ignore_old=False, ignore_pytype=False, empty_type=None)
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1479, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1480, __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, 1479, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1479, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1479, __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__82)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1479, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_old, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1480, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_ignore_pytype, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1480, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1480, __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__82)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1480, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1479, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_xsiannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1480, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1507
+  /* "lxml/objectify.pyx":1508
  *     _annotate(element, 1, 0, ignore_old, ignore_pytype, empty_type, None)
  * 
  * def annotate(element_or_tree, *, ignore_old=True, ignore_xsi=False,             # <<<<<<<<<<<<<<
  *              empty_pytype=None, empty_type=None, annotate_xsi=0,
  *              annotate_pytype=1):
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(6); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1508, __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, 1507, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) __PYX_ERR(0, 1507, __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__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1507, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_old, ((PyObject *)Py_True)) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_ignore_xsi, ((PyObject *)Py_False)) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_pytype, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_empty_type, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_xsi, ((PyObject *)__pyx_int_0)) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_annotate_pytype, ((PyObject *)__pyx_int_1)) < 0) __PYX_ERR(0, 1508, __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__84)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1508, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_2) < 0) __PYX_ERR(0, 1507, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_annotate, __pyx_t_2) < 0) __PYX_ERR(0, 1508, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1700
+  /* "lxml/objectify.pyx":1701
  *     return 0
  * 
  * cdef object _strip_attributes = etree.strip_attributes             # <<<<<<<<<<<<<<
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_strip_attributes); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1700, __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, 1701, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__strip_attributes);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__strip_attributes, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1701
+  /* "lxml/objectify.pyx":1702
  * 
  * cdef object _strip_attributes = etree.strip_attributes
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces             # <<<<<<<<<<<<<<
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  */
-  __pyx_t_2 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_cleanup_namespaces); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1701, __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, 1702, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__cleanup_namespaces);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__cleanup_namespaces, __pyx_t_2);
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1703
+  /* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                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_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1703, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(4); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype, __pyx_t_1) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype, __pyx_t_1) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)1)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_t_1) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_t_1) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1704
+  /* "lxml/objectify.pyx":1705
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,
  *                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_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1705, __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, 1703, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_nil, __pyx_t_1) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
-  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyBool_FromLong(((int)0)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1705, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cleanup_namespaces, __pyx_t_1) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_cleanup_namespaces, __pyx_t_1) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1703
+  /* "lxml/objectify.pyx":1704
  * cdef object _cleanup_namespaces = etree.cleanup_namespaces
  * 
  * def deannotate(element_or_tree, *, bint pytype=True, bint xsi=True,             # <<<<<<<<<<<<<<
  *                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__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1703, __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__86)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1704, __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;
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1703, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_deannotate, __pyx_t_1) < 0) __PYX_ERR(0, 1704, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1737
+  /* "lxml/objectify.pyx":1738
  * 
  * cdef object __DEFAULT_PARSER
  * __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True)             # <<<<<<<<<<<<<<
  * __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )
  * 
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_XMLParser); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1737, __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, 1738, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1737, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1738, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_remove_blank_text, Py_True) < 0) __PYX_ERR(0, 1737, __pyx_L1_error)
-  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1737, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_remove_blank_text, Py_True) < 0) __PYX_ERR(0, 1738, __pyx_L1_error)
+  __pyx_t_4 = __Pyx_PyObject_Call(__pyx_t_1, __pyx_empty_tuple, __pyx_t_2); if (unlikely(!__pyx_t_4)) __PYX_ERR(0, 1738, __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;
@@ -36308,24 +36309,24 @@ if (!__Pyx_RefNanny) {
   __Pyx_GIVEREF(__pyx_t_4);
   __pyx_t_4 = 0;
 
-  /* "lxml/objectify.pyx":1738
+  /* "lxml/objectify.pyx":1739
  * cdef object __DEFAULT_PARSER
  * __DEFAULT_PARSER = etree.XMLParser(remove_blank_text=True)
  * __DEFAULT_PARSER.set_element_class_lookup( ObjectifyElementClassLookup() )             # <<<<<<<<<<<<<<
  * 
  * cdef object objectify_parser
  */
-  __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, 1738, __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, 1739, __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, 1738, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ObjectifyElementClassLookup)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1738, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyObject_CallOneArg(__pyx_t_4, __pyx_t_2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1739, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_DECREF(__pyx_t_4); __pyx_t_4 = 0;
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1741
+  /* "lxml/objectify.pyx":1742
  * 
  * cdef object objectify_parser
  * objectify_parser = __DEFAULT_PARSER             # <<<<<<<<<<<<<<
@@ -36337,205 +36338,205 @@ if (!__Pyx_RefNanny) {
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify_objectify_parser, __pyx_v_4lxml_9objectify___DEFAULT_PARSER);
   __Pyx_GIVEREF(__pyx_v_4lxml_9objectify___DEFAULT_PARSER);
 
-  /* "lxml/objectify.pyx":1743
+  /* "lxml/objectify.pyx":1744
  * objectify_parser = __DEFAULT_PARSER
  * 
  * def set_default_parser(new_parser = None):             # <<<<<<<<<<<<<<
  *     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__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1743, __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__88)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1744, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__89);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) __PYX_ERR(0, 1743, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_set_default_parser, __pyx_t_1) < 0) __PYX_ERR(0, 1744, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1761
+  /* "lxml/objectify.pyx":1762
  *         raise TypeError, u"parser must inherit from lxml.etree.XMLParser"
  * 
  * def makeparser(**kw):             # <<<<<<<<<<<<<<
  *     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__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1761, __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__91)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_1) < 0) __PYX_ERR(0, 1761, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_makeparser, __pyx_t_1) < 0) __PYX_ERR(0, 1762, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1784
+  /* "lxml/objectify.pyx":1785
  * 
  * cdef object _fromstring
  * _fromstring = etree.fromstring             # <<<<<<<<<<<<<<
  * 
  * SubElement = etree.SubElement
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_fromstring); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1784, __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, 1785, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__fromstring);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__fromstring, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1786
+  /* "lxml/objectify.pyx":1787
  * _fromstring = etree.fromstring
  * 
  * SubElement = etree.SubElement             # <<<<<<<<<<<<<<
  * 
  * def fromstring(xml, parser=None, *, base_url=None):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_SubElement); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1786, __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, 1787, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 1786, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_SubElement, __pyx_t_1) < 0) __PYX_ERR(0, 1787, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1788
+  /* "lxml/objectify.pyx":1789
  * SubElement = etree.SubElement
  * 
  * def fromstring(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""fromstring(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1788, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1789, __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, 1788, __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__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1788, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1789, __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__93)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1789, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__94);
   __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, 1788, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_fromstring, __pyx_t_2) < 0) __PYX_ERR(0, 1789, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1804
+  /* "lxml/objectify.pyx":1805
  *     return _fromstring(xml, parser, base_url=base_url)
  * 
  * def XML(xml, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""XML(xml, parser=None, base_url=None)
  * 
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1804, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1805, __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, 1804, __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__96)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1804, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1805, __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__96)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1805, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__97);
   __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, 1804, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_XML, __pyx_t_1) < 0) __PYX_ERR(0, 1805, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1821
+  /* "lxml/objectify.pyx":1822
  * 
  * cdef object _parse
  * _parse = etree.parse             # <<<<<<<<<<<<<<
  * 
  * def parse(f, parser=None, *, base_url=None):
  */
-  __pyx_t_1 = __Pyx_PyObject_GetAttrStr(__pyx_v_4lxml_9objectify_etree, __pyx_n_s_parse); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1821, __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, 1822, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__parse);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__parse, __pyx_t_1);
   __Pyx_GIVEREF(__pyx_t_1);
   __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1823
+  /* "lxml/objectify.pyx":1824
  * _parse = etree.parse
  * 
  * def parse(f, parser=None, *, base_url=None):             # <<<<<<<<<<<<<<
  *     u"""parse(f, parser=None, base_url=None)
  * 
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1824, __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, 1823, __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__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1823, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_base_url, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1824, __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__99)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1824, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__100);
   __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, 1823, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_parse, __pyx_t_2) < 0) __PYX_ERR(0, 1824, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1839
+  /* "lxml/objectify.pyx":1840
  * 
  * cdef dict _DEFAULT_NSMAP = {
  *     "py"  : PYTYPE_NAMESPACE,             # <<<<<<<<<<<<<<
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,
  *     "xsd" : XML_SCHEMA_NS
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1839, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(3); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1840, __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, 1839, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_py_2, __pyx_v_4lxml_9objectify_PYTYPE_NAMESPACE) < 0) __PYX_ERR(0, 1840, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1840
+  /* "lxml/objectify.pyx":1841
  * cdef dict _DEFAULT_NSMAP = {
  *     "py"  : PYTYPE_NAMESPACE,
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,             # <<<<<<<<<<<<<<
  *     "xsd" : XML_SCHEMA_NS
  * }
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsi_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_INSTANCE_NS) < 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, 1840, __pyx_L1_error)
 
-  /* "lxml/objectify.pyx":1841
+  /* "lxml/objectify.pyx":1842
  *     "py"  : PYTYPE_NAMESPACE,
  *     "xsi" : XML_SCHEMA_INSTANCE_NS,
  *     "xsd" : XML_SCHEMA_NS             # <<<<<<<<<<<<<<
  * }
  * 
  */
-  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_xsd_2, __pyx_v_4lxml_9objectify_XML_SCHEMA_NS) < 0) __PYX_ERR(0, 1839, __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, 1840, __pyx_L1_error)
   __Pyx_XGOTREF(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP);
   __Pyx_DECREF_SET(__pyx_v_4lxml_9objectify__DEFAULT_NSMAP, ((PyObject*)__pyx_t_2));
   __Pyx_GIVEREF(__pyx_t_2);
   __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1844
+  /* "lxml/objectify.pyx":1845
  * }
  * 
  * E = ElementMaker()             # <<<<<<<<<<<<<<
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):
  */
-  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1844, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyObject_CallNoArg(((PyObject *)__pyx_ptype_4lxml_9objectify_ElementMaker)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1845, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
-  if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_2) < 0) __PYX_ERR(0, 1844, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_E, __pyx_t_2) < 0) __PYX_ERR(0, 1845, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
-  /* "lxml/objectify.pyx":1846
+  /* "lxml/objectify.pyx":1847
  * E = ElementMaker()
  * 
  * def Element(_tag, attrib=None, nsmap=None, *, _pytype=None, **_attributes):             # <<<<<<<<<<<<<<
  *     u"""Element(_tag, attrib=None, nsmap=None, _pytype=None, **_attributes)
  * 
  */
-  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1846, __pyx_L1_error)
+  __pyx_t_2 = __Pyx_PyDict_NewPresized(1); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1847, __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, 1846, __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__102)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1846, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_2, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1847, __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__102)); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1847, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_1);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_1, __pyx_tuple__103);
   __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, 1846, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_Element, __pyx_t_1) < 0) __PYX_ERR(0, 1847, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_1); __pyx_t_1 = 0;
 
-  /* "lxml/objectify.pyx":1866
+  /* "lxml/objectify.pyx":1867
  *     return _makeElement(_tag, None, _attributes, nsmap)
  * 
  * def DataElement(_value, attrib=None, nsmap=None, *, _pytype=None, _xsi=None,             # <<<<<<<<<<<<<<
  *                 **_attributes):
  *     u"""DataElement(_value, attrib=None, nsmap=None, _pytype=None, _xsi=None, **_attributes)
  */
-  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1866, __pyx_L1_error)
+  __pyx_t_1 = __Pyx_PyDict_NewPresized(2); if (unlikely(!__pyx_t_1)) __PYX_ERR(0, 1867, __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, 1866, __pyx_L1_error)
-  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1866, __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__105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1866, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_pytype_2, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1867, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_t_1, __pyx_n_s_xsi_3, ((PyObject *)Py_None)) < 0) __PYX_ERR(0, 1867, __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__105)); if (unlikely(!__pyx_t_2)) __PYX_ERR(0, 1867, __pyx_L1_error)
   __Pyx_GOTREF(__pyx_t_2);
   __Pyx_CyFunction_SetDefaultsTuple(__pyx_t_2, __pyx_tuple__106);
   __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, 1866, __pyx_L1_error)
+  if (PyDict_SetItem(__pyx_d, __pyx_n_s_DataElement, __pyx_t_2) < 0) __PYX_ERR(0, 1867, __pyx_L1_error)
   __Pyx_DECREF(__pyx_t_2); __pyx_t_2 = 0;
 
   /* "src/lxml/objectpath.pxi":10
@@ -37381,22 +37382,26 @@ static CYTHON_INLINE PyObject* __Pyx_PyObject_CallNoArg(PyObject *func) {
 #endif
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
@@ -38344,6 +38349,9 @@ done_or_error:
 #else
    #include <stdint.h>
 #endif
+#if defined(__GNUC__) && (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 6))
+#define GCC_DIAGNOSTIC
+#endif
 static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value, Py_ssize_t width, char padding_char, char format_char) {
     char digits[sizeof(Py_ssize_t)*3+2];
     char *dpos, *end = digits + sizeof(Py_ssize_t)*3+2;
@@ -38351,12 +38359,12 @@ static CYTHON_INLINE PyObject* __Pyx_PyUnicode_From_Py_ssize_t(Py_ssize_t value,
     Py_ssize_t length, ulength;
     int prepend_sign, last_one_off;
     Py_ssize_t remaining;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic push
 #pragma GCC diagnostic ignored "-Wconversion"
 #endif
     const Py_ssize_t neg_one = (Py_ssize_t) -1, const_zero = (Py_ssize_t) 0;
-#ifdef __GNUC__
+#ifdef GCC_DIAGNOSTIC
 #pragma GCC diagnostic pop
 #endif
     const int is_unsigned = neg_one > const_zero;
index f5204e6..f5fe7b5 100644 (file)
@@ -162,28 +162,28 @@ cdef class ObjectifiedElement(ElementBase):
     def __reduce__(self):
         return fromstring, (etree.tostring(self),)
 
-    property text:
-        def __get__(self):
-            return textOf(self._c_node)
+    @property
+    def text(self):
+        return textOf(self._c_node)
 
-    property __dict__:
-        u"""A fake implementation for __dict__ to support dir() etc.
+    @property
+    def __dict__(self):
+        """A fake implementation for __dict__ to support dir() etc.
 
         Note that this only considers the first child with a given name.
         """
-        def __get__(self):
-            cdef _Element child
-            cdef dict children
-            c_ns = tree._getNs(self._c_node)
-            tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
-            children = {}
-            for child in etree.ElementChildIterator(self, tag=tag):
-                if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
-                    continue
-                name = pyunicode(child._c_node.name)
-                if name not in children:
-                    children[name] = child
-            return children
+        cdef _Element child
+        cdef dict children
+        c_ns = tree._getNs(self._c_node)
+        tag = u"{%s}*" % pyunicode(c_ns) if c_ns is not NULL else None
+        children = {}
+        for child in etree.ElementChildIterator(self, tag=tag):
+            if c_ns is NULL and tree._getNs(child._c_node) is not NULL:
+                continue
+            name = pyunicode(child._c_node.name)
+            if name not in children:
+                children[name] = child
+        return children
 
     def __len__(self):
         u"""Count self and siblings with the same tag.
@@ -594,9 +594,9 @@ cdef class ObjectifiedDataElement(ObjectifiedElement):
     u"""This is the base class for all data type Elements.  Subclasses should
     override the 'pyval' property and possibly the __str__ method.
     """
-    property pyval:
-        def __get__(self):
-            return textOf(self._c_node)
+    @property
+    def pyval(self):
+        return textOf(self._c_node)
 
     def __str__(self):
         return textOf(self._c_node) or ''
@@ -619,9 +619,9 @@ cdef class NumberElement(ObjectifiedDataElement):
         """
         self._parse_value = function
 
-    property pyval:
-        def __get__(self):
-            return _parseNumber(self)
+    @property
+    def pyval(self):
+        return _parseNumber(self)
 
     def __int__(self):
         return int(_parseNumber(self))
@@ -726,9 +726,9 @@ cdef class StringElement(ObjectifiedDataElement):
     len(), iter(), str_attr[0], str_attr[0:1], etc. are *not* supported.
     Instead, use the .text attribute to get a 'real' string.
     """
-    property pyval:
-        def __get__(self):
-            return textOf(self._c_node) or u''
+    @property
+    def pyval(self):
+        return textOf(self._c_node) or u''
 
     def __repr__(self):
         return repr(textOf(self._c_node) or u'')
@@ -802,9 +802,10 @@ cdef class NoneElement(ObjectifiedDataElement):
     def __hash__(self):
         return hash(None)
 
-    property pyval:
-        def __get__(self):
-            return None
+    @property
+    def pyval(self):
+        return None
+
 
 cdef class BoolElement(IntElement):
     u"""Boolean type base on string values: 'true' or 'false'.
@@ -830,9 +831,9 @@ cdef class BoolElement(IntElement):
     def __repr__(self):
         return repr(__parseBool(textOf(self._c_node)))
 
-    property pyval:
-        def __get__(self):
-            return __parseBool(textOf(self._c_node))
+    @property
+    def pyval(self):
+        return __parseBool(textOf(self._c_node))
 
 def __checkBool(s):
     cdef int value = -1
index f6f4fe6..ded2fd3 100644 (file)
@@ -620,7 +620,7 @@ cdef void _receiveParserError(void* c_context, xmlerror.xmlError* error) nogil:
             _forwardParserError(<xmlparser.xmlParserCtxt*>c_context, error)
 
 cdef int _raiseParseError(xmlparser.xmlParserCtxt* ctxt, filename,
-                          _ErrorLog error_log) except 0:
+                          _ErrorLog error_log) except -1:
     if filename is not None and \
            ctxt.lastError.domain == xmlerror.XML_FROM_IO:
         if isinstance(filename, bytes):
@@ -940,23 +940,23 @@ cdef class _BaseParser:
         c_ctxt.sax.startDocument = _initSaxDocument
         return c_ctxt
 
-    property error_log:
-        u"""The error log of the last parser run.
+    @property
+    def error_log(self):
+        """The error log of the last parser run.
         """
-        def __get__(self):
-            cdef _ParserContext context
-            context = self._getParserContext()
-            return context._error_log.copy()
+        cdef _ParserContext context
+        context = self._getParserContext()
+        return context._error_log.copy()
 
-    property resolvers:
-        u"The custom resolver registry of this parser."
-        def __get__(self):
-            return self._resolvers
+    @property
+    def resolvers(self):
+        """The custom resolver registry of this parser."""
+        return self._resolvers
 
-    property version:
-        u"The version of the underlying XML parser."
-        def __get__(self):
-            return u"libxml2 %d.%d.%d" % LIBXML_VERSION
+    @property
+    def version(self):
+        """The version of the underlying XML parser."""
+        return u"libxml2 %d.%d.%d" % LIBXML_VERSION
 
     def setElementClassLookup(self, ElementClassLookup lookup = None):
         u":deprecated: use ``parser.set_element_class_lookup(lookup)`` instead."
@@ -1230,14 +1230,14 @@ cdef void _initSaxDocument(void* ctxt) with gil:
 cdef class _FeedParser(_BaseParser):
     cdef bint _feed_parser_running
 
-    property feed_error_log:
-        u"""The error log of the last (or current) run of the feed parser.
+    @property
+    def feed_error_log(self):
+        """The error log of the last (or current) run of the feed parser.
 
         Note that this is local to the feed parser and thus is
         different from what the ``error_log`` property returns.
         """
-        def __get__(self):
-            return self._getPushParserContext()._error_log.copy()
+        return self._getPushParserContext()._error_log.copy()
 
     cpdef feed(self, data):
         u"""feed(self, data)
index fd00bb6..ff277c5 100644 (file)
@@ -337,9 +337,6 @@ cdef int moveNodeToDocument(_Document doc, xmlDoc* c_source_doc,
     c_start_node = c_element
 
     tree.BEGIN_FOR_EACH_FROM(c_element, c_element, 1)
-    # 0) set C doc link
-    c_element.doc = c_doc
-
     if tree._isElementOrXInclude(c_element):
         if hasProxy(c_element):
             proxy_count += 1
@@ -362,14 +359,6 @@ cdef int moveNodeToDocument(_Document doc, xmlDoc* c_source_doc,
         while c_node is not NULL:
             if c_node.ns is not NULL:
                 _fixCNs(doc, c_start_node, c_node, &c_ns_cache, c_del_ns_list)
-
-            # remove attribute from ID table (see xmlSetTreeDoc() in libxml2's tree.c)
-            c_attr = <tree.xmlAttr*>c_node
-            if c_attr.atype == tree.XML_ATTRIBUTE_ID:
-                tree.xmlRemoveID(c_source_doc, c_attr)
-            # set C doc link also for attributes
-            c_node.doc = c_doc
-            _fixDocChildren(c_node.children, c_doc)
             c_node = c_node.next
 
     tree.END_FOR_EACH_FROM(c_element)
@@ -402,10 +391,29 @@ cdef int moveNodeToDocument(_Document doc, xmlDoc* c_source_doc,
     return 0
 
 
+cdef void _setTreeDoc(xmlNode* c_node, xmlDoc* c_doc):
+    """Adaptation of 'xmlSetTreeDoc()' that deep-fix the document links iteratively.
+    It avoids https://gitlab.gnome.org/GNOME/libxml2/issues/42
+    """
+    tree.BEGIN_FOR_EACH_FROM(c_node, c_node, 1)
+    if c_node.type == tree.XML_ELEMENT_NODE:
+        c_attr = <tree.xmlAttr*>c_node.properties
+        while c_attr:
+            if c_attr.atype == tree.XML_ATTRIBUTE_ID:
+                tree.xmlRemoveID(c_node.doc, c_attr)
+            c_attr.doc = c_doc
+            _fixDocChildren(c_attr.children, c_doc)
+            c_attr = c_attr.next
+    # Set doc link for all nodes, not only elements.
+    c_node.doc = c_doc
+    tree.END_FOR_EACH_FROM(c_node)
+
+
 cdef inline void _fixDocChildren(xmlNode* c_child, xmlDoc* c_doc):
     while c_child:
         c_child.doc = c_doc
-        _fixDocChildren(c_child.children, c_doc)
+        if c_child.children:
+            _fixDocChildren(c_child.children, c_doc)
         c_child = c_child.next
 
 
index e532895..41e2d0c 100644 (file)
@@ -26,61 +26,61 @@ cdef class _ReadOnlyProxy:
         """
         self._free_after_use = 1
 
-    property tag:
-        u"""Element tag
+    @property
+    def tag(self):
+        """Element tag
         """
-        def __get__(self):
-            self._assertNode()
-            if self._c_node.type == tree.XML_ELEMENT_NODE:
-                return _namespacedName(self._c_node)
-            elif self._c_node.type == tree.XML_PI_NODE:
-                return ProcessingInstruction
-            elif self._c_node.type == tree.XML_COMMENT_NODE:
-                return Comment
-            elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
-                return Entity
-            else:
-                self._raise_unsupported_type()
+        self._assertNode()
+        if self._c_node.type == tree.XML_ELEMENT_NODE:
+            return _namespacedName(self._c_node)
+        elif self._c_node.type == tree.XML_PI_NODE:
+            return ProcessingInstruction
+        elif self._c_node.type == tree.XML_COMMENT_NODE:
+            return Comment
+        elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+            return Entity
+        else:
+            self._raise_unsupported_type()
 
-    property text:
-        u"""Text before the first subelement. This is either a string or 
+    @property
+    def text(self):
+        """Text before the first subelement. This is either a string or
         the value None, if there was no text.
         """
-        def __get__(self):
-            self._assertNode()
-            if self._c_node.type == tree.XML_ELEMENT_NODE:
-                return _collectText(self._c_node.children)
-            elif self._c_node.type in (tree.XML_PI_NODE,
-                                       tree.XML_COMMENT_NODE):
-                if self._c_node.content is NULL:
-                    return ''
-                else:
-                    return funicode(self._c_node.content)
-            elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
-                return f'&{funicode(self._c_node.name)};'
+        self._assertNode()
+        if self._c_node.type == tree.XML_ELEMENT_NODE:
+            return _collectText(self._c_node.children)
+        elif self._c_node.type in (tree.XML_PI_NODE,
+                                   tree.XML_COMMENT_NODE):
+            if self._c_node.content is NULL:
+                return ''
             else:
-                self._raise_unsupported_type()
+                return funicode(self._c_node.content)
+        elif self._c_node.type == tree.XML_ENTITY_REF_NODE:
+            return f'&{funicode(self._c_node.name)};'
+        else:
+            self._raise_unsupported_type()
         
-    property tail:
-        u"""Text after this element's end tag, but before the next sibling
+    @property
+    def tail(self):
+        """Text after this element's end tag, but before the next sibling
         element's start tag. This is either a string or the value None, if
         there was no text.
         """
-        def __get__(self):
-            self._assertNode()
-            return _collectText(self._c_node.next)
+        self._assertNode()
+        return _collectText(self._c_node.next)
 
-    property sourceline:
-        u"""Original line number as found by the parser or None if unknown.
+    @property
+    def sourceline(self):
+        """Original line number as found by the parser or None if unknown.
         """
-        def __get__(self):
-            cdef long line
-            self._assertNode()
-            line = tree.xmlGetLineNo(self._c_node)
-            if line > 0:
-                return line
-            else:
-                return None
+        cdef long line
+        self._assertNode()
+        line = tree.xmlGetLineNo(self._c_node)
+        if line > 0:
+            return line
+        else:
+            return None
 
     def __repr__(self):
         self._assertNode()
@@ -246,16 +246,16 @@ cdef class _ReadOnlyProxy:
 @cython.final
 @cython.internal
 cdef class _ReadOnlyPIProxy(_ReadOnlyProxy):
-    u"A read-only proxy for processing instructions (for internal use only!)"
-    property target:
-        def __get__(self):
-            self._assertNode()
-            return funicode(self._c_node.name)
+    """A read-only proxy for processing instructions (for internal use only!)"""
+    @property
+    def target(self):
+        self._assertNode()
+        return funicode(self._c_node.name)
 
 @cython.final
 @cython.internal
 cdef class _ReadOnlyEntityProxy(_ReadOnlyProxy):
-    u"A read-only proxy for entity references (for internal use only!)"
+    """A read-only proxy for entity references (for internal use only!)"""
     property name:
         def __get__(self):
             return funicode(self._c_node.name)
@@ -266,29 +266,29 @@ cdef class _ReadOnlyEntityProxy(_ReadOnlyProxy):
                 raise ValueError(f"Invalid entity name '{value}'")
             tree.xmlNodeSetName(self._c_node, _xcstr(value_utf))
 
-    property text:
-        def __get__(self):
-            return f'&{funicode(self._c_node.name)};'
+    @property
+    def text(self):
+        return f'&{funicode(self._c_node.name)};'
 
 
 @cython.internal
 cdef class _ReadOnlyElementProxy(_ReadOnlyProxy):
-    u"The main read-only Element proxy class (for internal use only!)."
+    """The main read-only Element proxy class (for internal use only!)."""
 
-    property attrib:
-        def __get__(self):
-            self._assertNode()
-            return dict(_collectAttributes(self._c_node, 3))
+    @property
+    def attrib(self):
+        self._assertNode()
+        return dict(_collectAttributes(self._c_node, 3))
 
-    property prefix:
-        u"""Namespace prefix or None.
+    @property
+    def prefix(self):
+        """Namespace prefix or None.
         """
-        def __get__(self):
-            self._assertNode()
-            if self._c_node.ns is not NULL:
-                if self._c_node.ns.prefix is not NULL:
-                    return funicode(self._c_node.ns.prefix)
-            return None
+        self._assertNode()
+        if self._c_node.ns is not NULL:
+            if self._c_node.ns.prefix is not NULL:
+                return funicode(self._c_node.ns.prefix)
+        return None
 
     def get(self, key, default=None):
         u"""Gets an element attribute.
@@ -437,7 +437,7 @@ cdef class _ModifyContentOnlyProxy(_ReadOnlyProxy):
 @cython.final
 @cython.internal
 cdef class _ModifyContentOnlyPIProxy(_ModifyContentOnlyProxy):
-    u"""A read-only proxy that allows changing the text/target content of a
+    """A read-only proxy that allows changing the text/target content of a
     processing instruction.
     """
     property target:
@@ -454,7 +454,7 @@ cdef class _ModifyContentOnlyPIProxy(_ModifyContentOnlyProxy):
 @cython.final
 @cython.internal
 cdef class _ModifyContentOnlyEntityProxy(_ModifyContentOnlyProxy):
-    u"A read-only proxy for entity references (for internal use only!)"
+    "A read-only proxy for entity references (for internal use only!)"
     property name:
         def __get__(self):
             return funicode(self._c_node.name)
@@ -494,7 +494,7 @@ cdef class _AppendOnlyElementProxy(_ReadOnlyElementProxy):
             self.append(element)
 
     property text:
-        u"""Text before the first subelement. This is either a string or the
+        """Text before the first subelement. This is either a string or the
         value None, if there was no text.
         """
         def __get__(self):
index 114126d..e39384a 100644 (file)
@@ -1,4 +1,4 @@
-/* Generated by Cython 0.29.5 */
+/* Generated by Cython 0.29.6 */
 
 /* BEGIN: Cython Metadata
 {
@@ -33,8 +33,8 @@ 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_29_5"
-#define CYTHON_HEX_VERSION 0x001D05F0
+#define CYTHON_ABI "0_29_6"
+#define CYTHON_HEX_VERSION 0x001D06F0
 #define CYTHON_FUTURE_DIVISION 0
 #include <stddef.h>
 #ifndef offsetof
@@ -626,7 +626,8 @@ typedef struct {PyObject **p; const char *s; const Py_ssize_t n; const char* enc
                 const char is_unicode; const char is_str; const char intern; } __Pyx_StringTabEntry;
 
 #define __PYX_DEFAULT_STRING_ENCODING_IS_ASCII 0
-#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_UTF8 0
+#define __PYX_DEFAULT_STRING_ENCODING_IS_DEFAULT (PY_MAJOR_VERSION >= 3 && __PYX_DEFAULT_STRING_ENCODING_IS_UTF8)
 #define __PYX_DEFAULT_STRING_ENCODING ""
 #define __Pyx_PyObject_FromString __Pyx_PyBytes_FromString
 #define __Pyx_PyObject_FromStringAndSize __Pyx_PyBytes_FromStringAndSize
@@ -1000,7 +1001,7 @@ 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);
 
 /* PyDictVersioning.proto */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 #define __PYX_DICT_VERSION_INIT  ((PY_UINT64_T) -1)
 #define __PYX_GET_DICT_VERSION(dict)  (((PyDictObject*)(dict))->ma_version_tag)
 #define __PYX_UPDATE_DICT_CACHE(dict, value, cache_var, version_var)\
@@ -10839,22 +10840,26 @@ static void __Pyx_RaiseArgtupleInvalid(
 }
 
 /* PyDictVersioning */
-#if CYTHON_USE_DICT_VERSIONS
+#if CYTHON_USE_DICT_VERSIONS && CYTHON_USE_TYPE_SLOTS
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_tp_dict_version(PyObject *obj) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    return dict ? __PYX_GET_DICT_VERSION(dict) : 0;
+    return likely(dict) ? __PYX_GET_DICT_VERSION(dict) : 0;
 }
 static CYTHON_INLINE PY_UINT64_T __Pyx_get_object_dict_version(PyObject *obj) {
     PyObject **dictptr = NULL;
     Py_ssize_t offset = Py_TYPE(obj)->tp_dictoffset;
     if (offset) {
-        dictptr = (offset > 0) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#if CYTHON_COMPILING_IN_CPYTHON
+        dictptr = (likely(offset > 0)) ? (PyObject **) ((char *)obj + offset) : _PyObject_GetDictPtr(obj);
+#else
+        dictptr = _PyObject_GetDictPtr(obj);
+#endif
     }
     return (dictptr && *dictptr) ? __PYX_GET_DICT_VERSION(*dictptr) : 0;
 }
 static CYTHON_INLINE int __Pyx_object_dict_version_matches(PyObject* obj, PY_UINT64_T tp_dict_version, PY_UINT64_T obj_dict_version) {
     PyObject *dict = Py_TYPE(obj)->tp_dict;
-    if (!dict || tp_dict_version != __PYX_GET_DICT_VERSION(dict))
+    if (unlikely(!dict) || unlikely(tp_dict_version != __PYX_GET_DICT_VERSION(dict)))
         return 0;
     return obj_dict_version == __Pyx_get_object_dict_version(obj);
 }
index 0b82a57..7bd3325 100644 (file)
@@ -789,13 +789,20 @@ class _ETreeTestCaseBase(HelperTestCase):
             result.append(el.tag)
         self.assertEqual([], result)
 
-    def test_iteration_crash(self):
+    def test_iteration_set_tail_empty(self):
         # this would cause a crash in the past
         fromstring = self.etree.fromstring
-        root = etree.fromstring('<html><p></p>x</html>')
+        root = fromstring('<html><p></p>x</html>')
         for elem in root:
             elem.tail = ''
 
+    def test_iteration_clear_tail(self):
+        # this would cause a crash in the past
+        fromstring = self.etree.fromstring
+        root = fromstring('<html><p></p>x</html>')
+        for elem in root:
+            elem.tail = None
+
     def test_iteration_reversed(self):
         XML = self.etree.XML
         root = XML(_bytes('<doc><one/><two>Two</two>Hm<three/></doc>'))
@@ -1735,7 +1742,21 @@ class _ETreeTestCaseBase(HelperTestCase):
             a)
         self.assertEqual('b2', b.tail)
 
-    def _test_getchildren(self):
+    def test_remove_while_iterating(self):
+        # There is no guarantee that this "works", but it should
+        # remove at least one child and not crash.
+        Element = self.etree.Element
+        SubElement = self.etree.SubElement
+
+        a = Element('a')
+        SubElement(a, 'b')
+        SubElement(a, 'c')
+        SubElement(a, 'd')
+        for el in a:
+            a.remove(el)
+        self.assertLess(len(a), 3)
+
+    def test_getchildren(self):
         Element = self.etree.Element
         SubElement = self.etree.SubElement
 
@@ -1784,6 +1805,34 @@ class _ETreeTestCaseBase(HelperTestCase):
             [d],
             list(d.iter()))
 
+    def test_iter_remove_tail(self):
+        Element = self.etree.Element
+        SubElement = self.etree.SubElement
+
+        a = Element('a')
+        a.text = 'a'
+        a.tail = 'a1' * 100
+        b = SubElement(a, 'b')
+        b.text = 'b'
+        b.tail = 'b1' * 100
+        c = SubElement(a, 'c')
+        c.text = 'c'
+        c.tail = 'c1' * 100
+        d = SubElement(b, 'd')
+        d.text = 'd'
+        d.tail = 'd1' * 100
+        e = SubElement(c, 'e')
+        e.text = 'e'
+        e.tail = 'e1' * 100
+
+        for el in a.iter():
+            el.tail = None
+        el = None
+
+        self.assertEqual(
+            [None] * 5,
+            [el.tail for el in a.iter()])
+
     def test_getiterator(self):
         Element = self.etree.Element
         SubElement = self.etree.SubElement
@@ -1919,8 +1968,8 @@ class _ETreeTestCaseBase(HelperTestCase):
         c.text = 'c'
         c.tail = 'c1'
         d = SubElement(b, 'd')
-        c.text = 'd'
-        c.tail = 'd1'
+        d.text = 'd'
+        d.tail = 'd1'
         e = SubElement(c, 'e')
         e.text = 'e'
         e.tail = 'e1'
@@ -1945,8 +1994,8 @@ class _ETreeTestCaseBase(HelperTestCase):
         c.text = 'c'
         c.tail = 'c1'
         d = SubElement(b, 'd')
-        c.text = 'd'
-        c.tail = 'd1'
+        d.text = 'd'
+        d.tail = 'd1'
         e = SubElement(c, 'e')
         e.text = 'e'
         e.tail = 'e1'
index 77fdb41..f73afee 100644 (file)
@@ -19,10 +19,10 @@ cdef class XInclude:
     def __init__(self):
         self._error_log = _ErrorLog()
 
-    property error_log:
-        def __get__(self):
-            assert self._error_log is not None, "XInclude instance not initialised"
-            return self._error_log.copy()
+    @property
+    def error_log(self):
+        assert self._error_log is not None, "XInclude instance not initialised"
+        return self._error_log.copy()
 
     def __call__(self, _Element node not None):
         u"__call__(self, node)"
index 3a7cacc..ff31437 100644 (file)
@@ -112,69 +112,73 @@ cdef class _LogEntry:
             self.filename, self.line, self.column, self.level_name,
             self.domain_name, self.type_name, self.message)
 
-    property domain_name:
+    @property
+    def domain_name(self):
         """The name of the error domain.  See lxml.etree.ErrorDomains
         """
-        def __get__(self):
-            return ErrorDomains._getName(self.domain, u"unknown")
+        return ErrorDomains._getName(self.domain, u"unknown")
 
-    property type_name:
+    @property
+    def type_name(self):
         """The name of the error type.  See lxml.etree.ErrorTypes
         """
-        def __get__(self):
-            if self.domain == ErrorDomains.RELAXNGV:
-                getName = RelaxNGErrorTypes._getName
-            else:
-                getName = ErrorTypes._getName
-            return getName(self.type, u"unknown")
+        if self.domain == ErrorDomains.RELAXNGV:
+            getName = RelaxNGErrorTypes._getName
+        else:
+            getName = ErrorTypes._getName
+        return getName(self.type, u"unknown")
 
-    property level_name:
+    @property
+    def level_name(self):
         """The name of the error level.  See lxml.etree.ErrorLevels
         """
-        def __get__(self):
-            return ErrorLevels._getName(self.level, u"unknown")
-
-    property message:
-        def __get__(self):
-            cdef size_t size
-            if self._message is not None:
-                return self._message
-            if self._c_message is NULL:
-                return None
-            size = cstring_h.strlen(self._c_message)
-            if size > 0 and self._c_message[size-1] == '\n':
-                size -= 1  # strip EOL
-            # cannot use funicode() here because the message may contain
-            # byte encoded file paths etc.
+        return ErrorLevels._getName(self.level, u"unknown")
+
+    @property
+    def message(self):
+        """The log message string.
+        """
+        cdef size_t size
+        if self._message is not None:
+            return self._message
+        if self._c_message is NULL:
+            return None
+        size = cstring_h.strlen(self._c_message)
+        if size > 0 and self._c_message[size-1] == '\n':
+            size -= 1  # strip EOL
+        # cannot use funicode() here because the message may contain
+        # byte encoded file paths etc.
+        try:
+            self._message = self._c_message[:size].decode('utf8')
+        except UnicodeDecodeError:
             try:
-                self._message = self._c_message[:size].decode('utf8')
+                self._message = self._c_message[:size].decode(
+                    'ascii', 'backslashreplace')
             except UnicodeDecodeError:
-                try:
-                    self._message = self._c_message[:size].decode(
-                        'ascii', 'backslashreplace')
-                except UnicodeDecodeError:
-                    self._message = u'<undecodable error message>'
-            if self._c_message:
+                self._message = u'<undecodable error message>'
+        if self._c_message:
+            # clean up early
+            tree.xmlFree(self._c_message)
+            self._c_message = NULL
+        return self._message
+
+    @property
+    def filename(self):
+        """The file path where the report originated, if any.
+        """
+        if self._filename is None:
+            if self._c_filename is not NULL:
+                self._filename = _decodeFilename(self._c_filename)
                 # clean up early
-                tree.xmlFree(self._c_message)
-                self._c_message = NULL
-            return self._message
+                tree.xmlFree(self._c_filename)
+                self._c_filename = NULL
+        return self._filename
 
-    property filename:
-        def __get__(self):
-            if self._filename is None:
-                if self._c_filename is not NULL:
-                    self._filename = _decodeFilename(self._c_filename)
-                    # clean up early
-                    tree.xmlFree(self._c_filename)
-                    self._c_filename = NULL
-            return self._filename
-
-    property path:
+    @property
+    def path(self):
         """The XPath for the node where the error was detected.
         """
-        def __get__(self):
-            return funicode(self._c_path) if self._c_path is not NULL else None
+        return funicode(self._c_path) if self._c_path is not NULL else None
 
 
 cdef class _BaseErrorLog:
index 784987d..b926d55 100644 (file)
@@ -133,10 +133,10 @@ cdef class _XPathEvaluatorBase:
         self._context = _XPathContext(namespaces, extensions, self._error_log,
                                       enable_regexp, None, smart_strings)
 
-    property error_log:
-        def __get__(self):
-            assert self._error_log is not None, "XPath evaluator not initialised"
-            return self._error_log.copy()
+    @property
+    def error_log(self):
+        assert self._error_log is not None, "XPath evaluator not initialised"
+        return self._error_log.copy()
 
     def __dealloc__(self):
         if self._xpathCtxt is not NULL:
@@ -448,11 +448,11 @@ cdef class XPath(_XPathEvaluatorBase):
             self._unlock()
         return result
 
-    property path:
-        u"""The literal XPath expression.
+    @property
+    def path(self):
+        """The literal XPath expression.
         """
-        def __get__(self):
-            return self._path.decode(u'UTF-8')
+        return self._path.decode(u'UTF-8')
 
     def __dealloc__(self):
         if self._xpath is not NULL:
index 54e5655..d63a65e 100644 (file)
@@ -226,16 +226,16 @@ cdef class XSLTAccessControl:
     cdef void _register_in_context(self, xslt.xsltTransformContext* ctxt):
         xslt.xsltSetCtxtSecurityPrefs(self._prefs, ctxt)
 
-    property options:
-        u"The access control configuration as a map of options."
-        def __get__(self):
-            return {
-                u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
-                u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
-                u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
-                u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
-                u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
-                }
+    @property
+    def options(self):
+        """The access control configuration as a map of options."""
+        return {
+            u'read_file': self._optval(xslt.XSLT_SECPREF_READ_FILE),
+            u'write_file': self._optval(xslt.XSLT_SECPREF_WRITE_FILE),
+            u'create_dir': self._optval(xslt.XSLT_SECPREF_CREATE_DIRECTORY),
+            u'read_network': self._optval(xslt.XSLT_SECPREF_READ_NETWORK),
+            u'write_network': self._optval(xslt.XSLT_SECPREF_WRITE_NETWORK),
+        }
 
     @cython.final
     cdef _optval(self, xslt.xsltSecurityOption option):
@@ -427,10 +427,10 @@ cdef class XSLT:
         if self._c_style is not NULL:
             xslt.xsltFreeStylesheet(self._c_style)
 
-    property error_log:
-        u"The log of errors and warnings of an XSLT execution."
-        def __get__(self):
-            return self._error_log.copy()
+    @property
+    def error_log(self):
+        """The log of errors and warnings of an XSLT execution."""
+        return self._error_log.copy()
 
     @staticmethod
     def strparam(strval):
@@ -847,7 +847,7 @@ cdef class _XSLTResultTree(_ElementTree):
         buffer.buf = NULL
 
     property xslt_profile:
-        u"""Return an ElementTree with profiling data for the stylesheet run.
+        """Return an ElementTree with profiling data for the stylesheet run.
         """
         def __get__(self):
             cdef object root
index f77856a..cc2fbe8 100644 (file)
@@ -1 +1 @@
-4.3.1
+4.3.2