docs: def _parseSCPDActions(self, actionListElement, actions, variableParameterDict):
          """Internal method to parse the SCPD definitions.
  
          :param actionListElement: the action xml element
          :type actionListElement: xml.etree.ElementTree.Element
          :param dict actions: a container to store all actions
          :param dict variableParameterDict: remember where a variable gets referenced
          """
  
          # go through all action elements in this list
          for actionElement in actionListElement.getchildren():
  
              action = {}
  
              # go through all elements in this action
              for inActionElement in actionElement.getchildren():
                  tagName = inActionElement.tag.lower()
  
                  if tagName.endswith("name"):
                      # action name
                      action["name"] = inActionElement.text
                  elif tagName.endswith("argumentlist"):
                      # parse the arguments of this action
                      for argumentElement in inActionElement.getchildren():
  
                          argument = {}
  
                          # go through the argument definition
                          for inArgumentElement in argumentElement.getchildren():
                              tagName = inArgumentElement.tag.lower()
  
                              if tagName.endswith("name"):
                                  # remember the argument name
                                  argument["name"] = inArgumentElement.text
                              elif tagName.endswith("direction"):
                                  # is it an in or out argument
                                  argument["direction"] = inArgumentElement.text
                              elif tagName.endswith("relatedstatevariable"):
                                  # remember the argument and safe it under the variable name to dereference later
                                  argument["variable"] = inArgumentElement.text
  
                                  if argument["variable"] not in variableParameterDict.keys():
                                      variableParameterDict[argument["variable"]] = []
  
                                  variableParameterDict[argument["variable"]].append(argument)
  
                          if "name" not in argument.keys():
                              raise ValueError("Parameter definition does not contain a name.")
  
                          if "direction" not in argument.keys():
                              raise ValueError("Parameter definition does not contain a direction: " + argument["name"])
  
                          direction = argument["direction"] + "Parameter"
  
                          # store the actual argument in the action
                          if direction not in action.keys():
                              action[direction] = {}
  
                          action[direction][argument["name"]] = argument
  
                          # cleanup, we stored the argument we dont need these values in there anymore otherwise they
                          # would be redundant
                          del argument["name"]
                          del argument["direction"]
  
              if "name" not in action.keys():
                  raise ValueError("Action has not a name assigned.")
  
              if action["name"] in actions.keys():
                  raise ValueError("Action name defined more than ones: " + action["name"])
  
              # save the action under its name
              actions[action["name"]] = action
  
              # cleanup, as we have saved the action under its name in the container it would be redundant
              del action["name"]