org_apache_struts2_StrutsTestCaseTest_java
org.springframework.util.ClassUtils
public static Method getMostSpecificMethod(Method method, Class<?> targetClass) {
        if (method != null && ClassUtils.isOverridable(method, targetClass) && targetClass != null && targetClass != method.getDeclaringClass()) {
            try {
                if (Modifier.isPublic(method.getModifiers())) {
                    try {
                        return targetClass.getMethod(method.getName(), method.getParameterTypes());
                    }
                    catch (NoSuchMethodException ex) {
                        return method;
                    }
                }
                Method specificMethod = ReflectionUtils.findMethod(targetClass, method.getName(), method.getParameterTypes());
                return specificMethod != null ? specificMethod : method;
            }
            catch (SecurityException securityException) {
                // empty catch block
            }
        }
        return method;
    }
 -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPrivate(int): boolean -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPublic(int): boolean -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isProtected(int): boolean -> java.lang.reflect.Method.getDeclaringClass(): java.lang.Class -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPublic(int): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.lang.Class.isInterface(): boolean -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Object.hashCode(): int -> java.lang.ref.ReferenceQueue.poll(): java.lang.ref.Reference -> java.lang.ref.SoftReference.get(): java.lang.Object -> java.lang.ref.SoftReference.get(): java.lang.Object -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.isInterface(): boolean -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.Object.hashCode(): int -> java.lang.ref.ReferenceQueue.poll(): java.lang.ref.Reference -> java.lang.ref.SoftReference.get(): java.lang.Object -> java.lang.ref.SoftReference.get(): java.lang.Object -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.util.Arrays.equals(java.lang.Object[],java.lang.Object[]): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.util.Arrays.equals(java.lang.Object[],java.lang.Object[]): boolean
 [CALL] [CALL] -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPrivate(int): boolean -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPublic(int): boolean -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isProtected(int): boolean [EXIT] -> java.lang.reflect.Method.getDeclaringClass(): java.lang.Class -> java.lang.reflect.Method.getModifiers(): int -> java.lang.reflect.Modifier.isPublic(int): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.Class.isInterface(): boolean [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [CALL] [CALL] [CALL] -> java.lang.Object.hashCode(): int [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.lang.ref.ReferenceQueue.poll(): java.lang.ref.Reference [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.lang.ref.SoftReference.get(): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] -> java.lang.ref.SoftReference.get(): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.Class.getSuperclass(): java.lang.Class -> java.lang.Class.isInterface(): boolean [CALL] [CALL] [EXIT] -> java.util.Map.get(java.lang.Object): java.lang.Object [CALL] [CALL] [CALL] [CALL] -> java.lang.Object.hashCode(): int [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] -> java.lang.ref.ReferenceQueue.poll(): java.lang.ref.Reference [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] -> java.lang.ref.SoftReference.get(): java.lang.Object [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] -> java.lang.ref.SoftReference.get(): java.lang.Object [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.util.Arrays.equals(java.lang.Object[],java.lang.Object[]): boolean -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.String.equals(java.lang.Object): boolean -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.util.Arrays.equals(java.lang.Object[],java.lang.Object[]): boolean [EXIT] [EXIT]