The document describes a pseudo-code program with nested functions and asks what would be printed under different scoping rules. Under dynamic scoping and shallow binding, the program would print 3. This is because when function C calls D, D would see the innermost declaration of x as 3, since dynamic scoping uses the current execution environment. Under static/lexical scoping, the program would print 4, since lexical scoping uses the environment in which a function is defined, so D would see x as 4, the value declared when B is defined.