code: public void generate(List<TableModel> tables, Path targetWithPkgFolders, final boolean enableVisualizationSupport) {
          LOG.info("Starting code generation...");
          LOG.info("Generation code for tables...");
          for (TableModel table : tables) {
              LOG.debug("Generating code for table {} ({})", table.getSqlFullName(), table.getName());
              try {
                  final String result = generateCodeForTable(table, enableVisualizationSupport);
                  FileUtils.writeCodeFile(targetWithPkgFolders, table.getClassName(), result);
  
                  if (!table.getPrimaryKeyColumns().isEmpty()) {
                      final String existingResult = generateExistingClassCodeForTable(table);
                      FileUtils.writeCodeFile(targetWithPkgFolders, "Existing" + table.getClassName(), existingResult);
                  }
  
              } catch (IOException e) {
                  LOG.error("Failed writing code to file", e);
                  throw new RedGGenerationException("Failed writing code to file", e);
              }
          }
          LOG.info("Generating code for main builder class...");
          final String mainCode = generateMainClass(tables, enableVisualizationSupport);
          try {
              FileUtils.writeCodeFile(targetWithPkgFolders, "RedG", mainCode);
          } catch (IOException e) {
              LOG.error("Failed writing code to file", e);
              throw new RedGGenerationException("Failed writing code to file", e);
          }
          LOG.info("Code generation finished successfully.");
      }
docs: Generates the code for the passed {@link TableModel}s and writes the output into the passed folder. Each {@link TableModel} results
  in two files (one for the main entity, one for the existing entity reference) and a "main" manager class is generated as well,
  which contains all the instantiation and management methods.
  
  @param tables                     The {@link TableModel}s that code should be generated for.
  @param targetWithPkgFolders       The path pointing to the location the .java files should be places at.
  @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.