@Override
public final VelMethod getMethod(Object obj, String methodName, Object[] args, Info info) throws Exception {
final AnnotatedValueHelper valueHelper = AnnotatedValueHelperFactory.getValueHelper(obj, CLASS_RESOLVER);
final Object[] unboxedArgs = BoxingUtils.unboxArrayElements(args);
VelMethod method = super.getMethod(valueHelper.unbox(), methodName, unboxedArgs, info);
if (method == null) {
return null;
}
method = checkAndGenerateAnnotationPreservingProxy(valueHelper, method, unboxedArgs, info);
Method refMethod = lookupMethod(methodName, valueHelper, unboxedArgs, info);
Collection<Annotation> returnValueAnnotations = getMethodAnnotations(refMethod);
if (!returnValueAnnotations.isEmpty()) {
method = new AnnotationBoxingMethod(method, returnValueAnnotations);
}
return new UnboxingMethod(method);
}