docs: def get_states(self):
          """
          Add outcome to variables of XMLBIF
  
          Return
          ------
          dict: dict of type {variable: outcome tags}
  
          Examples
          --------
          >>> writer = XMLBIFWriter(model)
          >>> writer.get_states()
          {'dog-out': [<Element OUTCOME at 0x7ffbabfcdec8>, <Element OUTCOME at 0x7ffbabfcdf08>],
           'family-out': [<Element OUTCOME at 0x7ffbabfd4108>, <Element OUTCOME at 0x7ffbabfd4148>],
           'bowel-problem': [<Element OUTCOME at 0x7ffbabfd4088>, <Element OUTCOME at 0x7ffbabfd40c8>],
           'hear-bark': [<Element OUTCOME at 0x7ffbabfcdf48>, <Element OUTCOME at 0x7ffbabfcdf88>],
           'light-on': [<Element OUTCOME at 0x7ffbabfcdfc8>, <Element OUTCOME at 0x7ffbabfd4048>]}
          """
          outcome_tag = {}
          cpds = self.model.get_cpds()
          for cpd in cpds:
              var = cpd.variable
              outcome_tag[var] = []
              if cpd.state_names is None or cpd.state_names.get(var) is None:
                  states = range(cpd.get_cardinality([var])[var])
              else:
                  states = cpd.state_names[var]
  
              for state in states:
                  state_tag = etree.SubElement(self.variables[var], "OUTCOME")
                  state_tag.text = self._make_valid_state_name(state)
                  outcome_tag[var].append(state_tag)
          return outcome_tag