Format the input string using each possible combination of lists
        in the provided environment. Returns a list of formated strings.

def format_all(format_string, env):
    """ Format the input string using each possible combination of lists
        in the provided environment. Returns a list of formated strings.
    """

    prepared_env = parse_pattern(format_string, env, lambda x, y: [FormatWrapper(x, z) for z in y])
    # Generate each possible combination, format the string with it and yield
    # the resulting string:
    for field_values in product(*prepared_env.itervalues()):
        format_env = dict(izip(prepared_env.iterkeys(), field_values))
        yield format_string.format(**format_env)