docs: def add_potential(self, potential, potential_dict):
          """
          Adds Potential to the potential dict.
  
          Parameters
          ----------
          potential: <Element Potential at Potentials node in XML>
              etree Element consisting Potential tag.
          potential_dict: dict{}
              Dictionary to parse Potential tag.
  
          Examples
          -------
          >>> reader = ProbModelXMLReader()
          >>> reader.add_potential(potential, potential_dict)
          """
          potential_type = potential.attrib['type']
          potential_dict['type'] = potential_type
          try:
              potential_dict['role'] = potential.attrib['role']
          except KeyError:
              pass
          if potential.find('Comment') is not None:
              potential_dict['Comment'] = potential.find('Comment').text
          for prop in potential.findall('AdditionalProperties/Property'):
              potential_dict['AdditionalProperties'][prop.attrib['name']] = prop.attrib['value']
          if potential_type == "delta":
              potential_dict['Variable'] = potential.find('Variable').attrib['name']
              if potential.find('State') is not None:
                  potential_dict['State'] = potential.find('State').text
              if potential.find('StateIndex') is not None:
                  potential_dict['StateIndex'] = potential.find('StateIndex').text
              if potential.find('NumericValue') is not None:
                  potential_dict['NumericValue'] = potential.find('NumericValue').text
          else:
              if potential.find('UtilityVariable') is not None:
                  potential_dict['UtilityVaribale'] = potential.find('UtilityVariable').attrib['name']
              if len(potential.findall('Variables/Variable')):
                  potential_dict['Variables'] = {}
                  var_list = []
                  for var in potential.findall('Variables/Variable'):
                      var_list.append(var.attrib['name'])
                  potential_dict['Variables'][var_list[0]] = var_list[1:]
              if potential.find('Values') is not None:
                  potential_dict['Values'] = potential.find('Values').text
              if len(potential.findall('UncertainValues/Value')):
                  potential_dict['UncertainValues'] = []
                  for value in potential.findall('UncertainValues/Value'):
                      try:
                          potential_dict['UncertainValues'].append(
                              {'distribution': value.attrib['distribution'], 'name': value.attrib['name'],
                               'value': value.text})
                      except KeyError:
                          potential_dict['UncertainValues'].append(
                              {'distribution': value.attrib['distribution'], 'value': value.text})
              if potential.find('TopVariable') is not None:
                  potential_dict['TopVariable'] = potential.find('TopVariable').attrib['name']
  
              if len(potential.findall('Branches/Branch')):
                  potential_dict['Branches'] = []
                  for branch in potential.findall('Branches/Branch'):
                      branch_dict = {}
                      if len(branch.findall('States/State')):
                          states = []
                          for state in branch.findall('States/State'):
                              states.append({'name': state.attrib['name']})
                          branch_dict['States'] = states
                      if branch.find('Potential') is not None:
                          branch_potential = {}
                          self.add_potential(branch.find('Potential'), branch_potential)
                          branch_dict['Potential'] = branch_potential
                      if branch.find('Label') is not None:
                          label = branch.find('Label').text
                          branch_dict['Label'] = label
                      if branch.find('Reference') is not None:
                          reference = branch.find('Reference').text
                          branch_dict['Reference'] = reference
                      if len(branch.findall('Thresholds/Threshold')):
                          thresholds = []
                          for threshold in branch.findall('Thresholds/Threshold'):
                              try:
                                  thresholds.append({
                                      'value': threshold.attrib['value'], 'belongsTo': threshold.attrib['belongsTo']})
                              except KeyError:
                                  thresholds.append({'value': threshold.attrib['value']})
                          branch_dict['Thresholds'] = thresholds
                      potential_dict['Branches'].append(branch_dict)
  
              if potential.find('Model') is not None:
                  potential_dict['Model'] = potential.find('Model').text
              if len(potential.findall('Subpotentials/Potential')):
                  potential_dict['Subpotentials'] = []
                  for subpotential in potential.findall('Subpotentials/Potential'):
                      subpotential_dict = {}
                      self.add_potential(subpotential, subpotential_dict)
                      potential_dict['Subpotentials'].append(subpotential_dict)
              if potential.find('Coefficients') is not None:
                  potential_dict['Coefficients'] = potential.find('Coefficients').text
              if potential.find('CovarianceMatrix') is not None:
                  potential_dict['CovarianceMatrix'] = potential.find('CovarianceMatrix').text
              if potential.find('Potential') is not None:
                  potential_dict['Potential'] = {}
                  self.add_potential(potential.find('Potential'), potential_dict['Potential'])
              if len(potential.findall('NumericVariables/Variable')):
                  potential_dict['NumericVariables'] = []
                  for variable in potential.findall('NumericVariables/Variable'):
                      potential_dict['NumericVariables'].append(variable.attrib['name'])