Tree.TypeArguments typeArguments = expr.getTypeArguments();
boolean prevSyntheticClassBody = withinSyntheticClassBody(true);
try {
if (member.isStaticallyImportable()) {
if (member instanceof Method) {
Method method = (Method)member;
ProducedReference producedReference = method.getProducedReference(qualifyingType, typeArguments.getTypeModels());
return CallableBuilder.javaStaticMethodReference(
gen(),
expr.getTypeModel(),
method,
producedReference).build();
} else if (member instanceof FieldValue) {
return naming.makeName(
(TypedDeclaration)member, Naming.NA_FQ | Naming.NA_WRAPPER_UNQUOTED);
} else if (member instanceof Value) {
CallBuilder callBuilder = CallBuilder.instance(this);
JCExpression qualExpr = naming.makeTypeDeclarationExpression(null, (TypeDeclaration)member.getContainer(), DeclNameFlag.QUALIFIED);
callBuilder.invoke(naming.makeQualifiedName(qualExpr, (TypedDeclaration)member, Naming.NA_GETTER | Naming.NA_MEMBER));
return callBuilder.build();
} else if (member instanceof Class) {
ProducedReference producedReference = expr.getTarget();
return CallableBuilder.javaStaticMethodReference(
gen(),
expr.getTypeModel(),
(Class)member,
producedReference).build();
}
}
if (member instanceof Method) {
Method method = (Method)member;
if (!method.isParameter()) {
ProducedReference producedReference = method.getProducedReference(qualifyingType, typeArguments.getTypeModels());
return CallableBuilder.unboundFunctionalMemberReference(
gen(),
expr,
expr.getTypeModel(),
method,
producedReference).build();
} else {
ProducedReference producedReference = method.getProducedReference(qualifyingType, typeArguments.getTypeModels());
return CallableBuilder.unboundFunctionalMemberReference(
gen(),
expr,
expr.getTypeModel(),
method,