code: def MAKE_FUNCTION(self, instr):
      code = self.ast_stack.pop()
  
      ndefaults = bitrange(instr.oparg, 0, 8)
      nkwonly_defaults = bitrange(instr.oparg, 8, 16)
      nannotations = bitrange(instr.oparg, 16, 32) - 1
  
      annotations = []
      for i in range(nannotations):
          annotations.insert(0, self.ast_stack.pop())
  
      kw_defaults = []
      for i in range(nkwonly_defaults * 2):
          kw_defaults.insert(0, self.ast_stack.pop())
  
      defaults = []
      for i in range(ndefaults):
          defaults.insert(0, self.ast_stack.pop())
  
      function = make_function(
          code,
          defaults,
          lineno=instr.lineno,
          annotations=annotations,
          kw_defaults=kw_defaults,
      )
  
      doc = code.co_consts[0] if code.co_consts else None
  
      if isinstance(doc, str):
          function.body.insert(
              0,
              _ast.Expr(
                  value=_ast.Str(
                      s=doc, lineno=instr.lineno, col_offset=0
                  ),
                  lineno=instr.lineno,
                  col_offset=0,
              ),
          )
  
      self.ast_stack.append(function)
  
imports: from __future__ import print_function
  from __future__ import division
  from __future__ import absolute_import
  from ..decompiler.simple_instructions import SimpleInstructions
  from ..decompiler.control_flow_instructions import CtrlFlowInstructions
  import _ast
  from ..asttools import print_ast
  from ..utils import py3, py3op, py2op
label_desc: Use image node_id 6 for calling the Instructions obj's underlying member method code with example usage: obj.MAKE_FUNCTION(instr) without return types