org_apache_struts2_StrutsSpringTestCaseTest_java
org.springframework.beans.GenericTypeAwarePropertyDescriptor
public GenericTypeAwarePropertyDescriptor(Class<?> beanClass, String propertyName, Method readMethod, Method writeMethod, Class<?> propertyEditorClass) throws IntrospectionException {
        super(propertyName, null, null);
        Method candidate;
        if (beanClass == null) {
            throw new IntrospectionException("Bean class must not be null");
        }
        this.beanClass = beanClass;
        Method readMethodToUse = BridgeMethodResolver.findBridgedMethod(readMethod);
        Method writeMethodToUse = BridgeMethodResolver.findBridgedMethod(writeMethod);
        if (writeMethodToUse == null && readMethodToUse != null && (candidate = ClassUtils.getMethodIfAvailable(this.beanClass, "set" + StringUtils.capitalize(this.getName()), null)) != null && candidate.getParameterTypes().length == 1) {
            writeMethodToUse = candidate;
        }
        this.readMethod = readMethodToUse;
        this.writeMethod = writeMethodToUse;
        if (this.writeMethod != null) {
            if (this.readMethod == null) {
                HashSet<Method> ambiguousCandidates = new HashSet<Method>();
                for (Method method : beanClass.getMethods()) {
                    if (!method.getName().equals(writeMethodToUse.getName()) || method.equals(writeMethodToUse) || method.isBridge() || method.getParameterTypes().length != writeMethodToUse.getParameterTypes().length) continue;
                    ambiguousCandidates.add(method);
                }
                if (!ambiguousCandidates.isEmpty()) {
                    this.ambiguousWriteMethods = ambiguousCandidates;
                }
            }
            this.writeMethodParameter = new MethodParameter(this.writeMethod, 0);
            GenericTypeResolver.resolveParameterType(this.writeMethodParameter, this.beanClass);
        }
        if (this.readMethod != null) {
            this.propertyType = GenericTypeResolver.resolveReturnType(this.readMethod, this.beanClass);
        } else if (this.writeMethodParameter != null) {
            this.propertyType = this.writeMethodParameter.getParameterType();
        }
        this.propertyEditorClass = propertyEditorClass;
    }
 -> java.lang.reflect.Method.isBridge(): boolean -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.String.isEmpty(): boolean -> java.lang.String.charAt(int): char -> java.lang.Character.toUpperCase(char): char -> java.lang.String.toCharArray(): char[] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.lang.Class.getMethods(): java.lang.reflect.Method[] -> 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.util.Set.add(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.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.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.util.Set.size(): int -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.next(): java.lang.Object -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isArray(): boolean -> java.lang.Class.getGenericInterfaces(): java.lang.reflect.Type[] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isArray(): boolean -> java.lang.Class.getGenericInterfaces(): java.lang.reflect.Type[] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type -> java.lang.reflect.Method.getName(): java.lang.String -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.lang.reflect.Method.getGenericReturnType(): java.lang.reflect.Type -> java.lang.reflect.Method.getReturnType(): java.lang.Class
 [CALL] [CALL] [EXIT] [CALL] -> java.lang.reflect.Method.isBridge(): boolean [EXIT] [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder [CALL] [CALL] [CALL] -> java.lang.String.isEmpty(): boolean [EXIT] -> java.lang.String.charAt(int): char -> java.lang.Character.toUpperCase(char): char -> java.lang.String.toCharArray(): char[] [EXIT] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.Class.getMethods(): java.lang.reflect.Method[] -> 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.util.Set.add(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.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.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.util.Set.size(): int -> java.util.Set.iterator(): java.util.Iterator -> java.util.Iterator.next(): java.lang.Object [EXIT] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isArray(): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.Class.getGenericInterfaces(): java.lang.reflect.Type[] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Method.getName(): java.lang.String [CALL] [EXIT] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [CALL] [EXIT] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Class.isArray(): boolean [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.Class.getGenericInterfaces(): java.lang.reflect.Type[] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.Class.getGenericSuperclass(): java.lang.reflect.Type [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.reflect.Method.getName(): java.lang.String [CALL] [EXIT] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [CALL] [EXIT] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class [EXIT] [CALL] [EXIT] [EXIT] [CALL] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [CALL] [CALL] [CALL] [CALL] [EXIT] -> java.lang.reflect.Method.getGenericReturnType(): java.lang.reflect.Type [EXIT] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [EXIT] [EXIT] [EXIT] -> java.lang.reflect.Method.getReturnType(): java.lang.Class [CALL] [EXIT] [EXIT] [EXIT]