code: public static void traverseScopeRoots(
        AbstractCompiler compiler,
        @Nullable Node root,
        @Nullable List<Node> scopeNodes,
        final Callback cb,
        final boolean traverseNested) {
      traverseScopeRoots(compiler, root, scopeNodes, cb, null, traverseNested);
    }
docs: Traverses *just* the contents of provided scope nodes (and optionally scopes nested within
  them) but will fall back on traversing the entire AST from root if a null scope nodes list is
  provided.
  @param root If scopeNodes is null, this method will just traverse 'root' instead. If scopeNodes
  is not null, this parameter is ignored.