code: def expand(self):
          
          expanded_variables = []
          for i in range(self.dimensionality):
              one_d_variable = deepcopy(self)
              one_d_variable.dimensionality = 1
              if self.dimensionality > 1:
                  one_d_variable.name = '{}_{}'.format(self.name, i+1)
              else:
                  one_d_variable.name = self.name
              one_d_variable.dimensionality_in_model = 1
              expanded_variables.append(one_d_variable)
          return expanded_variables
docs: Builds a list of single dimensional variables representing current variable.
  
          Examples:
          For single dimensional variable, it is returned as is
          discrete of (0,2,4) -> discrete of (0,2,4)
          For multi dimensional variable, a list of variables is returned, each representing a single dimension
          continuous {0<=x<=1, 2<=y<=3} -> continuous {0<=x<=1}, continuous {2<=y<=3}