docs: def make_function(function_builders, *, closure):
      """
      Construct a FunctionDef AST node from a sequence of the form:
  
      LOAD_CLOSURE, N times (when handling MAKE_CLOSURE)
      BUILD_TUPLE(N) (when handling MAKE_CLOSURE)
      <decorator builders> (optional)
      <default builders>, (optional)
      <annotation builders> (optional)
      LOAD_CONST(<tuple of annotated names>) (optional)
      LOAD_CONST(code),
      LOAD_CONST(name),
      MAKE_FUNCTION | MAKE_CLOSURE
      <decorator calls> (optional)
      """
      decorator_calls = deque()
      while isinstance(function_builders[-1], instrs.CALL_FUNCTION):
          decorator_calls.appendleft(function_builders.pop())
  
      *builders, load_code_instr, load_name_instr, make_function_instr = (
          function_builders
      )
  
      _check_make_function_instrs(
          load_code_instr, load_name_instr, make_function_instr,
      )
  
      co = load_code_instr.arg
      name = load_name_instr.arg
      args, kwonly, varargs, varkwargs = paramnames(co)
  
      # Convert default and annotation builders to AST nodes.
      defaults, kw_defaults, annotations = make_defaults_and_annotations(
          make_function_instr,
          builders,
      )
  
      # Convert decorator function builders.  The stack is in reverse order.
      decorators = [make_expr(builders) for _ in decorator_calls]
      decorators.reverse()
  
      if closure:
          # There should be a tuple of closure cells still on the stack here.
          # These don't appear in the AST, but we need to consume them to ensure
          # correctness down the line.
          closure_cells = make_closure_cells(builders)  # noqa
  
      # We should have consumed all our builders by this point.
      if builders:
          raise DecompilationError(
              "Unexpected leftover builders for %s: %s." % (
                  make_function_instr, builders
              )
          )
  
      return ast.FunctionDef(
          body_code=co,
          name=name.split('.')[-1],
          args=make_function_arguments(
              args,
              kwonly,
              varargs,
              varkwargs,
              defaults,
              kw_defaults,
              annotations,
          ),
          body=pycode_to_body(co, DecompilationContext(in_function_block=True)),
          decorator_list=decorators,
          returns=annotations.get('return'),
      )