docs: def get_variables(self):
          """
          Returns list of variables of the network
  
          Example
          -------
          >>> reader = PomdpXReader("pomdpx.xml")
          >>> reader.get_variables()
          {'StateVar': [
                          {'vnamePrev': 'rover_0',
                           'vnameCurr': 'rover_1',
                           'ValueEnum': ['s0', 's1', 's2'],
                           'fullyObs': True},
                          {'vnamePrev': 'rock_0',
                           'vnameCurr': 'rock_1',
                           'fullyObs': False,
                           'ValueEnum': ['good', 'bad']}],
                          'ObsVar': [{'vname': 'obs_sensor',
                                      'ValueEnum': ['ogood', 'obad']}],
                          'RewardVar': [{'vname': 'reward_rover'}],
                          'ActionVar': [{'vname': 'action_rover',
                                         'ValueEnum': ['amw', 'ame',
                                                       'ac', 'as']}]
                          }
          """
          self.variables = defaultdict(list)
          for variable in self.network.findall('Variable'):
              _variables = defaultdict(list)
              for var in variable.findall('StateVar'):
                  state_variables = defaultdict(list)
                  state_variables['vnamePrev'] = var.get('vnamePrev')
                  state_variables['vnameCurr'] = var.get('vnameCurr')
                  if var.get('fullyObs'):
                      state_variables['fullyObs'] = True
                  else:
                      state_variables['fullyObs'] = False
                  state_variables['ValueEnum'] = []
                  if var.find('NumValues') is not None:
                      for i in range(0, int(var.find('NumValues').text)):
                          state_variables['ValueEnum'].append('s' + str(i))
                  if var.find('ValueEnum') is not None:
                      state_variables['ValueEnum'] = \
                          var.find('ValueEnum').text.split()
                  _variables['StateVar'].append(state_variables)
  
              for var in variable.findall('ObsVar'):
                  obs_variables = defaultdict(list)
                  obs_variables['vname'] = var.get('vname')
                  obs_variables['ValueEnum'] = \
                      var.find('ValueEnum').text.split()
                  _variables['ObsVar'].append(obs_variables)
  
              for var in variable.findall('ActionVar'):
                  action_variables = defaultdict(list)
                  action_variables['vname'] = var.get('vname')
                  action_variables['ValueEnum'] = \
                      var.find('ValueEnum').text.split()
                  _variables['ActionVar'].append(action_variables)
  
              for var in variable.findall('RewardVar'):
                  reward_variables = defaultdict(list)
                  reward_variables['vname'] = var.get('vname')
                  _variables['RewardVar'].append(reward_variables)
  
              self.variables.update(_variables)
  
          return self.variables