code: public Set<Class<?>> getTypesAnnotatedWith(final Class<? extends Annotation> annotation, boolean honorInherited) {
          Iterable<String> annotated = store.get(index(TypeAnnotationsScanner.class), annotation.getName());
          Iterable<String> classes = getAllAnnotated(annotated, annotation.isAnnotationPresent(Inherited.class), honorInherited);
          return Sets.newHashSet(concat(forNames(annotated, loaders()), forNames(classes, loaders())));
      }
docs: get types annotated with a given annotation, both classes and annotations
  <p>{@link java.lang.annotation.Inherited} is honored according to given honorInherited.
  <p>when honoring @Inherited, meta-annotation should only effect annotated super classes and it's sub types
  <p>when not honoring @Inherited, meta annotation effects all subtypes, including annotations interfaces and classes
  <p><i>Note that this (@Inherited) meta-annotation type has no effect if the annotated type is used for anything other then a class.
  Also, this meta-annotation causes annotations to be inherited only from superclasses; annotations on implemented interfaces have no effect.</i>
  <p/>depends on TypeAnnotationsScanner and SubTypesScanner configured