docs: def makeelement(E, tagname, **kwargs):
      """Internal function"""
      if sys.version < '3':
          try:
              kwargs2 = {}
              for k,v in kwargs.items():
                  kwargs2[k.encode('utf-8')] = v.encode('utf-8')
                  #return E._makeelement(tagname.encode('utf-8'), **{ k.encode('utf-8'): v.encode('utf-8') for k,v in kwargs.items() } )   #In one go fails on some older Python 2.6s
              return E._makeelement(tagname.encode('utf-8'), **kwargs2 ) #pylint: disable=protected-access
          except ValueError as e:
              try:
                  #older versions of lxml may misbehave, compensate:
                  e =  E._makeelement(tagname.encode('utf-8')) #pylint: disable=protected-access
                  for k,v in kwargs.items():
                      e.attrib[k.encode('utf-8')] = v
                  return e
              except ValueError:
                  print(e,file=stderr)
                  print("tagname=",tagname,file=stderr)
                  print("kwargs=",kwargs,file=stderr)
                  raise e
      else:
          return E._makeelement(tagname,**kwargs)