@Override
  public Set<String> getSupportedAnnotationTypes() {
    Set<String> set = new HashSet<>();
    // Analyze @SupportedAnnotationTypes
    SupportedAnnotationTypes sat = this.getClass().getAnnotation(SupportedAnnotationTypes.class);
    if (sat != null) {
      Arrays.stream(sat.value()).forEach(set::add);
    }
    // Analyze @SupportedAnnotation
    SupportedAnnotation sa = this.getClass().getAnnotation(SupportedAnnotation.class);
    if (sa != null) {
      Arrays.stream(sa.value()).map(Class::getCanonicalName).forEach(set::add);
    }
    if (set.isEmpty() && isInitialized()) {
      debug().log("No SupportedAnnotationTypes annotation found on " + this.getClass().getName()
          + ", returning an empty set.");
    }
    return Collections.unmodifiableSet(set);
  }
@ Override public Set < String > getSupportedAnnotationTypes ( ) { Set < String > set = new HashSet < > ( ) ; SupportedAnnotationTypes sat = this . getClass ( ) . getAnnotation ( SupportedAnnotationTypes . class ) ; if ( sat != null ) { Arrays . stream ( sat . value ( ) ) . forEach ( set :: add ) ; } SupportedAnnotation sa = this . getClass ( ) . getAnnotation ( SupportedAnnotation . class ) ; if ( sa != null ) { Arrays . stream ( sa . value ( ) ) . map ( Class :: getCanonicalName ) . forEach ( set :: add ) ; } if ( set . isEmpty ( ) && isInitialized ( ) ) { debug ( ) . log ( "No SupportedAnnotationTypes annotation found on " + this . getClass ( ) . getName ( ) + ", returning an empty set." ) ; } return Collections . unmodifiableSet ( set ) ; }
If the processor class is annotated with {@link SupportedAnnotation} or
{@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.