static <T> InjectionPoint<T> of(Key<T> key, Type type, String name, Annotation []annotations, Class<?> declaringClass) { return new InjectionPointImpl<>(key, type, name, annotations, declaringClass); } }
@Override public String toString() { return (getClass().getSimpleName() + "[" + _key + "," + name() + "," + declaringClass().getSimpleName() + "]"); } }
static <T> InjectionPoint<T> of(Field f) { return new InjectionPointImpl<>(Key.of(f), f.getGenericType(), f.getName(), f.getAnnotations(), f.getDeclaringClass()); }
static <T> InjectionPoint<T> of(Class<?> declaringClass, Class<T> paramType, Annotation []annotations) { return new InjectionPointImpl<>(Key.of(paramType), paramType, declaringClass.getName(), annotations, declaringClass); }
static <T> InjectionPoint<T> of(Class<T> type) { return new InjectionPointImpl<>(Key.of(type), type, type.getSimpleName(), type.getAnnotations(), type); }
static <T> InjectionPoint<T> of(Method m) { return new InjectionPointImpl<>(Key.of(m), m.getGenericReturnType(), m.getName(), m.getAnnotations(), m.getDeclaringClass()); }
static <T> InjectionPoint<T> of(Constructor<?> c) { return new InjectionPointImpl<>(Key.of(c), c.getDeclaringClass(), c.getDeclaringClass().getSimpleName(), c.getAnnotations(), c.getDeclaringClass()); }
static <T> InjectionPoint<T> of(Key<T> key) { return new InjectionPointImpl<>(key, key.type(), key.rawClass().getSimpleName(), key.annotations(), key.rawClass()); }
static <T> InjectionPoint<T> of(Parameter p) { return new InjectionPointImpl<>((Key<T>) Key.of(p), p.getParameterizedType(), p.getName(), p.getAnnotations(), p.getDeclaringExecutable().getDeclaringClass()); }