@Override
  public final boolean process(Set<? extends TypeElement> annotations, RoundEnvironment round) {
    try {
      env.initRound(annotations, round);

      if (!round.processingOver()) {
        // removed error raised check: && !round.errorRaised()
        // It would be worse to cancel generation, more symbol not found problems
        // will clog the errors output
        process();
      }
      env.completeRound();
      if (round.processingOver()) {
        env.completeProcessing();
      }
    } catch (Exception ex) {
      processingEnv.getMessager()
          .printMessage(Diagnostic.Kind.ERROR,
              getClass().getName() + " threw " + Throwables.getStackTraceAsString(ex));
    }
    return false;
  }
Override process method and call {@link #invoke(org.immutables.generator.Templates.Invokable)}
from inside it passing invokable fragments from generated template instances.
generator/src/org/immutables/generator/AbstractGenerator.java