docs: @Override
      public void constructorFactory(Sink sink, String dataTypeName, String factoryName, List<String> typeParametrs, Constructor constructor) {
          if (constructor.args.isEmpty()) {
          	if (typeParametrs.isEmpty()) {
              	logger.finest("Generating no args, no types factory for " + constructor.name);
          	} else {
              	logger.finest("Generating no args, type arguments factory for " + constructor.name);
          		sink.write("   @SuppressWarnings(\"rawtypes\")\n");
          	}
              sink.write("   private static final " + dataTypeName + " _" + factoryName + " = new " + constructor.name + "();\n");
              sink.write(ASTPrinter.printComments("   ", commentProcessor.leftAlign(commentProcessor.javaDocOnly(constructor.comments))));
          	if (!typeParametrs.isEmpty()) {
          		sink.write("   @SuppressWarnings(\"unchecked\")\n");
          	}
          	sink.write("   public static final ");
          	emitParameterizedTypeName(sink, typeParametrs);
          	sink.write(" ");
          	sink.write(dataTypeName);
          	emitParameterizedTypeName(sink, typeParametrs);
          	sink.write(" _" + factoryName + "() { return _" + factoryName + "; }");
          } else {
          	logger.finest("Generating args factory for " + constructor.name);
              sink.write(ASTPrinter.printComments("   ", commentProcessor.leftAlign(constructor.comments)));
              sink.write("   public static final ");
              emitParameterizedTypeName(sink, typeParametrs);
          	sink.write(" ");
          	sink.write(dataTypeName);
              emitParameterizedTypeName(sink, typeParametrs);
              sink.write(" _" + factoryName + "(");
              constructorArgs(sink, constructor, true);
              sink.write(") { return new " + constructor.name);
              emitParameterizedTypeName(sink, typeParametrs);
              sink.write("("); 
              constructorArgs(sink, constructor, false);
              sink.write("); }");            
          }
      }