public static <T>Key<T> of(Class<T> type,Class<? extends Annotation> annType){
  Objects.requireNonNull(type);
  Objects.requireNonNull(annType);
  return new Key<>(type,new Class[]{annType});
}

public static < T > Key < T > of ( Class < T > type , Class < ? extends Annotation > annType ) { Objects . requireNonNull ( type ) ; Objects . requireNonNull ( annType ) ; return new Key < > ( type , new Class [ ] { annType } ) ; }
builds key from class and annotation type
