private static ImmutableMap<String, TypeMirror> typesFromTestClass(TypeElement type) {
      // Reads the types of the fields from the compiled TestClass and uses them to produce
      // a map from type spellings to types. This method depends on type.getEnclosedElements()
      // returning the fields in source order, which it is specified to do.
      ImmutableMap.Builder<String, TypeMirror> typeSpellingToTypeBuilder = ImmutableMap.builder();
      int i = 0;
      for (VariableElement field : fieldsIn(type.getEnclosedElements())) {
        String spelling = TYPE_SPELLINGS.get(i);
        typeSpellingToTypeBuilder.put(spelling, field.asType());
        i++;
      }
      return typeSpellingToTypeBuilder.build();
    }
The types that we will compile and then recreate. They are referenced in a context where {@code
Set} is unambiguous but not {@code List}, which allows us to test the placement of annotations
in unqualified types like {@code Set<T>} and qualified types like {@code java.util.List<T>}.
value/src/test/java/com/google/auto/value/processor/SimplifyWithAnnotationsTest.java