code: public Set<String> getSupportedAnnotationTypes() {
              SupportedAnnotationTypes sat = this.getClass().getAnnotation(SupportedAnnotationTypes.class);
              boolean initialized = isInitialized();
              if  (sat == null) {
                  if (initialized)
                      processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING,
                                                               "No SupportedAnnotationTypes annotation " +
                                                               "found on " + this.getClass().getName() +
                                                               ", returning an empty set.");
                  return Collections.emptySet();
              } else {
                  boolean stripModulePrefixes =
                          initialized &&
                          processingEnv.getSourceVersion().compareTo(SourceVersion.RELEASE_8) <= 0;
                  return arrayToSet(sat.value(), stripModulePrefixes);
              }
          }
docs: If the processor class is annotated with {@link
  SupportedAnnotationTypes}, return an unmodifiable set with the
  same set of strings as the annotation.  If the class is not so
  annotated, an empty set is returned.
  
  If the {@link ProcessingEnvironment#getSourceVersion source
  version} does not support modules, in other words if it is less
  than or equal to {@link SourceVersion#RELEASE_8 RELEASE_8},
  then any leading {@link Processor#getSupportedAnnotationTypes
  module prefixes} are stripped from the names.
  
  @return the names of the annotation types supported by this
  processor, or an empty set if none