docs: @SuppressWarnings("unchecked")
      private ImmutableMap<String, ProcedureRunnerNTGenerator> loadSystemProcedures(boolean startup) {
          ImmutableMap.Builder<String, ProcedureRunnerNTGenerator> builder =
                  ImmutableMap.<String, ProcedureRunnerNTGenerator>builder();
  
          Set<Entry<String,Config>> entrySet = SystemProcedureCatalog.listing.entrySet();
          for (Entry<String, Config> entry : entrySet) {
              String procName = entry.getKey();
              Config sysProc = entry.getValue();
  
              // transactional sysprocs handled by LoadedProcedureSet
              if (sysProc.transactional) {
                  continue;
              }
  
              final String className = sysProc.getClassname();
              Class<? extends VoltNonTransactionalProcedure> procClass = null;
  
              // this check is for sysprocs that don't have a procedure class
              if (className != null) {
                  try {
                      procClass = (Class<? extends VoltNonTransactionalProcedure>) Class.forName(className);
                  }
                  catch (final ClassNotFoundException e) {
                      if (sysProc.commercial) {
                          continue;
                      }
                      VoltDB.crashLocalVoltDB("Missing Java class for NT System Procedure: " + procName);
                  }
  
                  if (startup) {
                      // This is a startup-time check to make sure we can instantiate
                      try {
                          if ((procClass.newInstance() instanceof VoltNTSystemProcedure) == false) {
                              VoltDB.crashLocalVoltDB("NT System Procedure is incorrect class type: " + procName);
                          }
                      }
                      catch (InstantiationException | IllegalAccessException e) {
                          VoltDB.crashLocalVoltDB("Unable to instantiate NT System Procedure: " + procName);
                      }
                  }
  
                  ProcedureRunnerNTGenerator prntg = new ProcedureRunnerNTGenerator(procClass);
                  builder.put(procName, prntg);
              }
          }
          return builder.build();
      }