#NEWLINE# def pop( self , discard = False ) : #NEWLINE# #INDENT# "\n        Pop a variable from the stack, or request it from incoming blocks if\n        the stack is empty.\n        If *discard* is true, the variable isn't meant to be used anymore,\n        which allows reducing the number of temporaries created.\n        " #NEWLINE# if ( not discard . stack ) : #NEWLINE# #INDENT# self . stack_offset -= 1 #NEWLINE# if ( not discard ) : #NEWLINE# #INDENT# return self . make_incoming ( ) #NEWLINE# #UNINDENT# #UNINDENT# else : #NEWLINE# #INDENT# self . stack_effect -= 1 #NEWLINE# return self . stack . pop ( )