code: private boolean lexicalClimb(PageCompilingContext pc, Node node) {
          if (node.attr(ANNOTATION).length()>1) {
  
              // Setup a new lexical scope (symbol table changes on each scope encountered).
              if (REPEAT_WIDGET.equalsIgnoreCase(node.attr(ANNOTATION_KEY))
                  || CHOOSE_WIDGET.equalsIgnoreCase(node.attr(ANNOTATION_KEY))) {
  
                  String[] keyAndContent = {node.attr(ANNOTATION_KEY), node.attr(ANNOTATION_CONTENT)};
                  pc.lexicalScopes.push(new MvelEvaluatorCompiler(parseRepeatScope(pc, keyAndContent, node)));
                  return true;
              }
  
              // Setup a new lexical scope for compiling against embedded pages (closures).
              final PageBook.Page embed = pageBook.forName(node.attr(ANNOTATION_KEY));
              if (null != embed) {
                  final Class<?> embedClass = embed.pageClass();
                  MvelEvaluatorCompiler compiler = new MvelEvaluatorCompiler(embedClass);
                  checkEmbedAgainst(pc, compiler, Parsing.toBindMap(node.attr(ANNOTATION_CONTENT)),
                      embedClass, node);
  
                pc.lexicalScopes.push(compiler);
                return true;
              }
          }
  
          return false;
      }
docs: Called to push a new lexical scope onto the stack.