@Override
  public final boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
    checkState(elementUtils != null);
    checkState(messager != null);
    checkState(steps != null);

    // If this is the last round, report all of the missing elements if there
    // were no errors raised in the round; otherwise reporting the missing
    // elements just adds noise to the output.
    if (roundEnv.processingOver()) {
      postRound(roundEnv);
      if (!roundEnv.errorRaised()) {
        reportMissingElements(
            ImmutableSet.<ElementFactory>builder()
                .addAll(deferredEnclosingElements)
                .addAll(elementsDeferredBySteps.values())
                .build());
      }
      return false;
    }

    process(getWellFormedElementsByAnnotationType(roundEnv));

    postRound(roundEnv);

    return false;
  }
Returns the set of supported annotation types as collected from registered {@linkplain Step
processing steps}.
common/src/main/java/com/google/auto/common/BasicAnnotationProcessor.java