docs: def xmltreefromstring(s):
      """Internal function, deals with different Python versions, unicode strings versus bytes, and with the leak bug in lxml"""
      if sys.version < '3':
          #Python 2
          if isinstance(s,unicode): #pylint: disable=undefined-variable
              s = s.encode('utf-8')
          try:
              return ElementTree.parse(StringIO(s), ElementTree.XMLParser(collect_ids=False))
          except TypeError:
              return ElementTree.parse(StringIO(s), ElementTree.XMLParser()) #older lxml, may leak!!!!
      else:
          #Python 3
          if isinstance(s,str):
              s = s.encode('utf-8')
          try:
              return ElementTree.parse(BytesIO(s), ElementTree.XMLParser(collect_ids=False))
          except TypeError:
              return ElementTree.parse(BytesIO(s), ElementTree.XMLParser())