docs: def fromxml(node):
          """Static method returning a ParameterCondition instance from the given XML description. Node can be a string or an etree._Element."""
          if not isinstance(node,ElementTree._Element): #pylint: disable=protected-access
              node = parsexmlstring(node)
          assert node.tag.lower() == 'parametercondition'
  
          kwargs = {}
  
          found = False
          for node in node:
              if node.tag == 'if':
                  #interpret conditions:
                  for subnode in node:
                      operator = subnode.tag
                      parameter = subnode.attrib['parameter']
                      value = subnode.text
                      kwargs[parameter + '_' + operator] = value
                      found = True
              elif node.tag == 'then' or node.tag == 'else' or node.tag == 'otherwise':
                  #interpret statements:
                  for subnode in node: #MAYBE TODO LATER: Support for multiple statement in then=, else= ?
                      if subnode.tag.lower() == 'parametercondition':
                          kwargs[node.tag] = ParameterCondition.fromxml(subnode)
                      elif subnode.tag == 'meta':
                          #assume metafield?
                          kwargs[node.tag] = AbstractMetaField.fromxml(subnode)
                      elif subnode.tag.lower() == 'outputtemplate':
                          kwargs[node.tag] = OutputTemplate.fromxml(subnode)
          if not found:
              raise Exception("No condition found in ParameterCondition!")
          return ParameterCondition(**kwargs)