def cascade(sequence, full=False):
if len(sequence) == <NUM_LIT:1>:<EOL><INDENT>return sequence[<NUM_LIT:0>]<EOL><DEDENT>left = sequence[<NUM_LIT:0>]<EOL>if full:<EOL><INDENT>intermed = []<EOL><DEDENT>for cdiff in sequence[<NUM_LIT:1>:]:<EOL><INDENT>right = restore(cdiff, left)<EOL>if full:<EOL><INDENT>intermed.append(right)<EOL><DEDENT>left = right<EOL><DEDENT>return left<EOL>
Restores a sequence of string definitions using the first entry as the
    original and then applying a series of :func:`~acorn.logging.diff.restore`
    calls.

    Args:
        sequence (list): of results returned by
          :func:`~acorn.logging.diff.compress`, except that the first entry should
          be a list of string entries for the very first instance.
        full (bool): when True, return all the intermediate entries as well;
          otherwise they are not stored in memory and only the final entry in
          the list is returned.