code: def make_loop_body_and_orelse(top_of_loop, body_instrs, else_instrs, context):
      
      # Remove the JUMP_ABSOLUTE and POP_BLOCK instructions at the bottom of the
      # loop.
      body_instrs.pop()
      body_instrs.pop()
      body = instrs_to_body(body_instrs, context.update(top_of_loop=top_of_loop))
  
      if else_instrs:
          else_body = instrs_to_body(else_instrs, context)
      else:
          else_body = []
  
      return body, else_body
docs: Make body and orelse lists for a for/while loop whose first instruction is
      `top_of_loop`.
  
      Parameters
      ----------
      top_of_loop : Instruction
          The first body of the loop.  For a for-loop, this should always be a
          FOR_ITER.  For a while loop, it's the first instruction of the stack
          builders for the loop test expression
      body_instrs : deque
          Queue of Instructions that form the body of the loop.  The last two
          elements of body_instrs should be a JUMP_ABSOLUTE to `top_of_loop` and
          a POP_BLOCK.
      else_instrs : deque
          Queue of Instructions that form the else block of the loop.  Should be
          an empty deque if there is no else block.
      context : DecompilationContext
  
      Returns
      -------
      body : list[ast.AST]
          List of ast nodes forming the loop body.
      orelse_body : list[ast.AST]
          List of ast nodes forming the else-block body.