docs: @Override
      public void setInitialSymbolTable(SymbolTable symtab)
      {
          mutationCheck();
  
          if (symtab != null)
          {
              if (symtab.isLocalTable())
              {
                  SymbolTable[] imports =
                      ((LocalSymbolTable) symtab).getImportedTablesNoCopy();
                  for (SymbolTable imported : imports)
                  {
                      if (imported.isSubstitute())
                      {
                          String message =
                              "Cannot encode with substitute symbol table: " +
                              imported.getName();
                          throw new SubstituteSymbolTableException(message);
                      }
                  }
              }
              else if (! symtab.isSystemTable())
              {
                  String message = "symtab must be local or system table";
                  throw new IllegalArgumentException(message);
              }
          }
  
          myInitialSymbolTable = symtab;
          myBinaryWriterBuilder.withInitialSymbolTable(symtab);
      }