'Pop a variable from the stack, or request it from incoming blocks if
the stack is empty.
If *discard* is true, the variable isn\'t meant to be used anymore,
which allows reducing the number of temporaries created.'

def pop(self, discard=False):

    if (not self.stack):
        self.stack_offset -= 1
        if (not discard):
            return self.make_incoming()
    else:
        self.stack_effect -= 1
        return self.stack.pop()
