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.

def eval(self):
        """ 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.
        """
        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