docs: def _parseSCPDVariableTypes(self, variableListElement, variableTypes):
          """Internal method to parse the SCPD definitions.
  
          :param variableListElement: the xml root node of the variable list
          :type variableListElement: xml.etree.ElementTree.Element
          :param dict variableTypes: a container to store the variables
          """
  
          # iterate through all variables
          for variableElement in variableListElement.getchildren():
  
              variable = {}
  
              # iterate through the variable definition
              for inVariableElement in variableElement.getchildren():
                  tagName = inVariableElement.tag.lower()
  
                  if tagName.endswith("name"):
                      variable["name"] = inVariableElement.text
                  elif tagName.endswith("datatype"):
                      variable["dataType"] = inVariableElement.text
                  elif tagName.endswith("defaultvalue"):
                      variable["defaultValue"] = inVariableElement.text
  
              if "name" not in variable.keys():
                  raise ValueError("Variable has no name defined.")
  
              if "dataType" not in variable.keys():
                  raise ValueError("No dataType was defined by variable: " + variable["name"])
  
              if variable["name"] in variableTypes.keys():
                  raise ValueError("Variable has been defined multiple times: " + variable["name"])
  
              variableTypes[variable["name"]] = variable