@Override
    protected Iterable<? extends Step> steps() {
      return ImmutableSet.of(
          new Step() {
            @Override
            public ImmutableSet<? extends Element> process(
                ImmutableSetMultimap<String, Element> elementsByAnnotation) {
              processArguments.add(ImmutableSetMultimap.copyOf(elementsByAnnotation));
              int numberOfAnnotatedElements = elementsByAnnotation.size();
              if (numberOfAnnotatedElements == 0) {
                return ImmutableSet.of();
              }

              generateClass(
                  processingEnv.getFiler(),
                  "GeneratedByOneMethodAtATimeProcessor_"
                      + elementsByAnnotation.values().iterator().next().getSimpleName());
              if (numberOfAnnotatedElements > 1) {
                rejectedRounds++;
              }
              return ImmutableSet.copyOf(
                  elementsByAnnotation.values().asList().subList(1, numberOfAnnotatedElements));
            }

            @Override
            public ImmutableSet<String> annotations() {
              return ImmutableSet.of(ENCLOSING_CLASS_NAME + ".OneMethodAtATime");
            }
          });
    }
Rejects elements unless the class generated by {@link GeneratesCode}'s processor is present.
common/src/test/java/com/google/auto/common/BasicAnnotationProcessorTest.java