code: public String generateMainClass(final Collection<TableModel> tables, final boolean enableVisualizationSupport) {
          Objects.requireNonNull(tables);
  
          //get package from the table models
          final String targetPackage = ((TableModel) tables.toArray()[0]).getPackageName();
          final ST template = this.stGroup.getInstanceOf("mainClass");
          LOG.debug("Filling main class template containing helpers for {} classes...", tables.size());
          template.add("package", targetPackage);
          // TODO: make prefix usable
          template.add("prefix", "");
          template.add("enableVisualizationSupport", enableVisualizationSupport);
          LOG.debug("Package is {} | Prefix is {}", targetPackage, "");
  
          template.add("tables", tables);
  
          return template.render();
      }
docs: Generates the main class used for creating the extractor objects and later generating the insert statements.
  For each passed table a appropriate creation method will be generated that will return the new object and internally add it to the list of objects that
  will be used to generate the insert strings
  
  @param tables                     All tables that should get a creation method in the main class
  @param enableVisualizationSupport If {@code true}, the RedG visualization features will be enabled for the generated code. This will result in a small
  performance hit and slightly more memory usage if activated.
  @return The generated source code