CompilerScope is the data structure which the Compiler keeps information related to compiling scopes. It stores the following information: 1. Parent relationship (for resolving variables) 2. Information about hoisted variables 3. Information for resolving closures Instances are produced by VariableBinder, which does a tree walk looking for scope nodes: LambdaExpression and BlockExpression.