code: def eval(self):
          
          max_size = _get_max_size(self.parts)
          parts_list = _grow([[]], max_size-1)
  
          counter = Ticker(max_size)
          parts = self.parts[:]
          while len(parts) > 0:
              parts_list, counter = _get_parts_list(parts,
                  parts_list, counter)
  
          commands = []
          for i, parts in enumerate(parts_list):
              alias = self._get_alias(i+1)
              new_parts = copy.deepcopy(parts)
              commands.append(Command(alias=alias, parts=new_parts))
          return commands
docs: Returns a list of Command objects that can be evaluated as their
          string values. Each command will track it's preliminary dependencies,
          but these values should not be depended on for running commands.