code: def multiline_frame_function(frame_function: types.FrameFunction,
                               height: int,
                               offset: int = 0,
                               *args,
                               **kwargs) -> types.FrameGenerator:
      
      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
docs: 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