<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def multiline_frame_function(frame_function: types.FrameFunction, height: int, offset: int = 0, *args, **kwargs) -> types.FrameGenerator: """Multiline a singlelined frame function. Simply chains several frame generators together, and applies the specified offset to each one. Args: frame_function: A function that returns a singleline FrameGenerator. height: The amount of frame generators to stack vertically (determines the height in characters). offset: An offset to apply to each successive generator. If the offset is 2, then the first generator starts at frame 0, the second at frame 2, the third at frame 4, and so on. Returns: a multiline version fo the generator returned by frame_function """

    frame_generators = []
    for i in range(height):
        frame_generators.append(frame_function(*args, **kwargs))
        for _ in range(i * offset):  # advance animation
            frame_generators[i].__next__()
    frame_gen = concatechain(*frame_generators, separator='\n')
    yield from frame_gen