code: void removeGeneratedSymbols() {
      IdentityHashMap<Node, Symbol> nodeToSymbol = null;
      // Need to iterate over copy of values list because removeSymbol() will change the map
      // and we'll get ConcurrentModificationException
      for (Symbol symbol : ImmutableList.copyOf(symbols.values())) {
        if (symbol.getDeclaration() != null
            && symbol.getDeclaration().getNode().getBooleanProp(Node.MODULE_EXPORT)) {
  
          // Lazy initialize nodeToSymbol map as it's needed only when ES6 modules are used.
          if (nodeToSymbol == null) {
            nodeToSymbol = new IdentityHashMap<>();
            for (Symbol s : symbols.values()) {
              for (Node node : s.references.keySet()) {
                nodeToSymbol.put(node, s);
              }
            }
          }
  
          inlineEs6ExportProperty(symbol, nodeToSymbol);
        } else if (isSymbolAQuotedObjectKey(symbol)) {
          // Quoted object keys are not considered symbols. Only unquoted keys and dot-access
          // properties are considered symbols. Remove the quoted key.
          boolean symbolAlreadyRemoved = !getScope(symbol).ownSymbols.containsKey(symbol.getName());
          if (!symbolAlreadyRemoved) {
            removeSymbol(symbol);
          }
        }
      }
      mergeExternSymbolsDuplicatedOnWindow();
    }
docs: Removes various generated symbols that are invisible to users and pollute or mess up index.
  Jscompiler does transpilations that might introduce extra nodes/symbols. Most of these symbols
  should not get into final SymbolTable because SymbolTable should contain only symbols that
  correspond to a symbol in original source code (before transpilation).