static AnnotationStrategy strategyFor(Annotation annotation){
  checkNotNull(annotation,"annotation");
  Class<? extends Annotation> annotationType=annotation.annotationType();
  ensureRetainedAtRuntime(annotationType);
  ensureIsBindingAnnotation(annotationType);
  if (annotationType.getDeclaredMethods().length == 0) {
    return new AnnotationTypeStrategy(annotationType,annotation);
  }
  return new AnnotationInstanceStrategy(annotation);
}

static AnnotationStrategy strategyFor ( Annotation annotation ) { checkNotNull ( annotation , "annotation" ) ; Class < ? extends Annotation > annotationType = annotation . annotationType ( ) ; ensureRetainedAtRuntime ( annotationType ) ; ensureIsBindingAnnotation ( annotationType ) ; if ( annotationType . getDeclaredMethods ( ) . length == 0 ) { return new AnnotationTypeStrategy ( annotationType , annotation ) ; } return new AnnotationInstanceStrategy ( annotation ) ; }
gets the strategy for an annotation .
