code: @Override
    public void enterScope(NodeTraversal t) {
      Node n = t.getScopeRoot();
      BasicBlock parent = blockStack.isEmpty() ? null : peek(blockStack);
      // Don't add all ES6 scope roots to blockStack, only those that are also scopes according to
      // the ES5 scoping rules. Other nodes that ought to be considered the root of a BasicBlock
      // are added in shouldTraverse() or processScope() and removed in visit().
      if (t.isHoistScope()) {
        blockStack.add(new BasicBlock(parent, n));
      }
    }
docs: Updates block stack and invokes any additional behavior.