static InjectionMethod create(InjectionSite injectionSite, DaggerElements elements) {
String methodName = methodName(injectionSite);
ClassName proxyEnclosingClass = membersInjectorNameForType(
MoreElements.asType(injectionSite.element().getEnclosingElement()));
switch (injectionSite.kind()) {
case METHOD:
return methodProxy(
proxyEnclosingClass,
MoreElements.asExecutable(injectionSite.element()),
methodName,
ReceiverAccessibility.CAST_IF_NOT_PUBLIC,
CheckNotNullPolicy.IGNORE,
elements);
case FIELD:
return fieldProxy(
proxyEnclosingClass,
MoreElements.asVariable(injectionSite.element()),
methodName,
elements);
default:
throw new AssertionError(injectionSite);
}
}