code: protected String generate(JClassType inputType, TreeLogger logger, GeneratorContext context) {
  
      String packageName = inputType.getPackage().getName();
      String simpleName = createClassName(inputType);
      logger.log(TreeLogger.DEBUG, getClass().getSimpleName() + ": Generating " + simpleName);
      ClassSourceFileComposerFactory sourceComposerFactory = new ClassSourceFileComposerFactory(packageName,
          simpleName);
      // Import statements
      generateImportStatements(inputType, logger, sourceComposerFactory, context);
  
      // Class declaration
      generateClassDeclaration(inputType, logger, sourceComposerFactory, context);
  
      PrintWriter writer = context.tryCreate(logger, packageName, simpleName);
      if (writer != null) {
        SourceWriter sourceWriter = sourceComposerFactory.createSourceWriter(context, writer);
  
        generateClassContents(inputType, logger, sourceWriter, simpleName, context);
        sourceWriter.commit(logger);
      }
      return sourceComposerFactory.getCreatedClassName();
    }
docs: This method performs the actual generation of the {@link Class} to rebind.
  
  @param inputType is the {@link JClassType} reflecting the input-type that triggered the generation via
  {@link com.google.gwt.core.client.GWT#create(Class)}.
  @param logger is the {@link TreeLogger}.
  @param context is the {@link GeneratorContext}.
  @return the fully qualified name of the generated class.