code: public void process()
      {
          try
          {
              check();
  
              boolean isReconcilePhase = false;
  
              // In the Eclipse IDE's integration between JDT and APT, annotation processors
              // run in two phases -- reconcile and build.  These translate into the
              // check and generate phases for a TwoPhaseAnnotationProcessor.  In order to
              // optimize for hosting in this environment (and other IDE-centric AP environments)
              // the generate phase can be cut out when performing only the check phase.
              // Custom AP environments that wish to control this shoudl set the "phase" flag of the
              // annotation processor to "RECONCILE".
              try {
                  String phase = (String)CompilerUtils.isReconcilePhase(getAnnotationProcessorEnvironment());
                  isReconcilePhase = "RECONCILE".equals(phase);
              }
              catch(FatalCompileTimeException e) {
                  e.printDiagnostic(this);
              }
  
              // Do not call generate if check resulted in errors of if the AP is running in
              // a phase called "reconcile"
              if (!isReconcilePhase && !hasErrors()) {
                  generate();
              }
          }
          catch ( FatalCompileTimeException e )
          {
              e.printDiagnostic( this );
          }
      }
docs: Implements CoreAnnotationProcessor.process() as two phases, "check" and "generate".
  "generate" will not be called if "check" emitted any errors (via printError()).