docs: def _StackSummary_extract(frame_gen, limit=None, lookup_lines=True, capture_locals=False):
      """
      Replacement for :func:`StackSummary.extract`.
  
      Create a StackSummary from a traceback or stack object.
      Very simplified copy of the original StackSummary.extract().
      We want always to capture locals, that is why we overwrite it.
      Additionally, we also capture the frame.
      This is a bit hacky and also not like this is originally intended (to not keep refs).
  
      :param frame_gen: A generator that yields (frame, lineno) tuples to
          include in the stack.
      :param limit: None to include all frames or the number of frames to
          include.
      :param lookup_lines: If True, lookup lines for each frame immediately,
          otherwise lookup is deferred until the frame is rendered.
      :param capture_locals: If True, the local variables from each frame will
          be captured as object representations into the FrameSummary.
      """
      result = StackSummary()
      for f, lineno in frame_gen:
          co = f.f_code
          filename = co.co_filename
          name = co.co_name
          result.append(ExtendedFrameSummary(
              frame=f, filename=filename, lineno=lineno, name=name, lookup_line=False))
      return result