code: private void visitGetprop(NodeTraversal t, Node n) {
      Node receiverNode = n.getFirstChild();
      String propName = receiverNode.getNext().getString();
      if (isGlobalSymbol(t, receiverNode)) {
        compiler.ensureLibraryInjected("es6/symbol", false);
        Node statement = NodeUtil.getEnclosingStatement(n);
        switch (propName) {
          case "iterator":
            {
              Node init =
                  IR.exprResult(IR.call(NodeUtil.newQName(compiler, "$jscomp.initSymbolIterator")))
                      .useSourceInfoFromForTree(statement);
              statement.getParent().addChildBefore(init, statement);
              compiler.reportChangeToEnclosingScope(init);
              break;
            }
          case "asyncIterator":
            {
              Node init =
                  IR.exprResult(
                          IR.call(NodeUtil.newQName(compiler, "$jscomp.initSymbolAsyncIterator")))
                      .useSourceInfoFromForTree(statement);
              statement.getParent().addChildBefore(init, statement);
              compiler.reportChangeToEnclosingScope(init);
              break;
            }
          default:
            // TODO(bradfordcsmith): Should we warn for unrecognized symbol names?
            break;
        }
      }
    }
docs: TODO(tbreisacher): Do this for all well-known symbols.