docs: static SymbolTable newSharedSymbolTable(String name, int version,
                                              SymbolTable priorSymtab,
                                              Iterator<String> symbols)
      {
          if (name == null || name.length() < 1)
          {
              throw new IllegalArgumentException("name must be non-empty");
          }
          if (version < 1)
          {
              throw new IllegalArgumentException("version must be at least 1");
          }
  
          List<String> symbolsList = new ArrayList<String>();
          Map<String, Integer> symbolsMap = new HashMap<String, Integer>();
  
          assert version ==
              (priorSymtab == null ? 1 : priorSymtab.getVersion() + 1);
  
          prepSymbolsListAndMap(priorSymtab, symbols, symbolsList, symbolsMap);
  
          // We have all necessary data, pass it over to the private constructor.
          return new SharedSymbolTable(name, version, symbolsList, symbolsMap);
      }