In some occasions (like during anonymous classes), we actually traverse a part of the subtree manually so we need to
"store" the original global variables, and use new global variables for that traversal. Once completed, we return to
the original global variables.