code: @Override
  	public Set<Class<?>> resolveByAnnotation(
  			final Class<? extends Annotation> annotation) throws IOException {
  		Matcher<Class<?>> matcher = new Matcher<Class<?>>() {
  			
  			public boolean matches(Class<?> clazz) {
  				Annotation[] annotations = clazz.getAnnotations();
  				
  				for (Annotation a : annotations) {
  					if (a.annotationType().equals(annotation)) {
  						return true;
  					}
  				}
  				
  				return false;
  			}
  			
  		};
  		return resolve(matcher);
  	}
docs: Resolves the classes that is annotated by the specified annotation as
  {@code java.lang.Class}.
  
  @param annotation The annotation the class being annotated.
  @return Classes that is annotated by the specified annotation as
  {@code java.lang.Class}.
  @throws IOException If any I/O access fails while traversing the search
  path.