import itertools


def unsorted_lists(min_stop, max_stop, until):
    """
    Return an itertools.cycle of lists from reversed ranges with stop between
    (incl.) min_stop and max_stop.
    If until is greater than zero, return an itertools.islice of the cycle up to until.
    Else return an unbounded generator.
    >>> cycle = unsorted_lists(2, 4, 0)
    >>> next(cycle)
    [2, 1]
    >>> next(cycle)
    [3, 2, 1]
    >>> next(cycle)
    [4, 3, 2, 1]
    >>> next(cycle)
    [2, 1]
    >>> g = unsorted_lists(2, 4, 1)
    >>> next(g)
    [2, 1]
    >>> next(g)
    Traceback (most recent call last):
    ...
    StopIteration
    """
    cycle = itertools.cycle(list(range(n, 0, -1)) for n in range(min_stop, max_stop+1))
    if until > 0:
        cycle = itertools.islice(cycle, until)
    return cycle