docs: def serialize(self, node):
          """Serialize a node object (typically an ElementTree object)"""
          if isinstance(node.tag, types.FunctionType):
              # this looks like a bug of ElementTree: comments are stored as
              # functions!?? see https://hg.python.org/sandbox/python2.7/file/tip/Lib/xml/etree/ElementTree.py#l458
              return
          if self.nsmap is not None:
              tag = self.shorten(node.tag)
          else:
              tag = node.tag
          with warnings.catch_warnings():  # unwanted ElementTree warning
              warnings.simplefilter('ignore')
              leafnode = not node
          # NB: we cannot use len(node) to identify leafs since nodes containing
          # an iterator have no length. They are always True, even if empty :-(
          if leafnode and node.text is None:
              self.emptyElement(tag, node.attrib)
              return
          self.start_tag(tag, node.attrib)
          if node.text is not None:
              txt = escape(scientificformat(node.text).strip())
              if txt:
                  self._write(txt)
          for subnode in node:
              self.serialize(subnode)
          self.end_tag(tag)