org_apache_dubbo_validation_support_jvalidation_JValidatorTest_java
org.hibernate.validator.internal.metadata.provider.AnnotationMetaDataProvider
private List<ConstrainedParameter> getParameterMetaData(ExecutableElement executable) {
        ArrayList<ConstrainedParameter> metaData = CollectionHelper.newArrayList();
        List<String> parameterNames = executable.getParameterNames(this.parameterNameProvider);
        int i = 0;
        for (Annotation[] parameterAnnotations : executable.getParameterAnnotations()) {
            boolean parameterIsCascading = false;
            String parameterName = parameterNames.get(i);
            HashSet<MetaConstraint<?>> parameterConstraints = CollectionHelper.newHashSet();
            Set<Object> typeArgumentsConstraints = CollectionHelper.newHashSet();
            ConvertGroup groupConversion = null;
            ConvertGroup.List groupConversionList = null;
            if (this.annotationProcessingOptions.areParameterConstraintsIgnoredFor(executable.getMember(), i)) {
                metaData.add(new ConstrainedParameter(ConfigurationSource.ANNOTATION, ConstraintLocation.forParameter(executable, i), ReflectionHelper.typeOf(executable, i), i, parameterName, parameterConstraints, typeArgumentsConstraints, this.getGroupConversions(groupConversion, groupConversionList), false, UnwrapMode.AUTOMATIC));
                ++i;
                continue;
            }
            UnwrapValidatedValue unwrapValidatedValue = null;
            for (Annotation parameterAnnotation : parameterAnnotations) {
                if (parameterAnnotation.annotationType().equals(Valid.class)) {
                    parameterIsCascading = true;
                } else if (parameterAnnotation.annotationType().equals(ConvertGroup.class)) {
                    groupConversion = (ConvertGroup)parameterAnnotation;
                } else if (parameterAnnotation.annotationType().equals(ConvertGroup.List.class)) {
                    groupConversionList = (ConvertGroup.List)parameterAnnotation;
                } else if (parameterAnnotation.annotationType().equals(UnwrapValidatedValue.class)) {
                    unwrapValidatedValue = (UnwrapValidatedValue)parameterAnnotation;
                }
                List<ConstraintDescriptorImpl<?>> constraints = this.findConstraintAnnotations(executable.getMember(), parameterAnnotation, ElementType.PARAMETER);
                for (ConstraintDescriptorImpl<?> constraintDescriptorImpl : constraints) {
                    parameterConstraints.add(this.createParameterMetaConstraint(executable, i, constraintDescriptorImpl));
                }
            }
            typeArgumentsConstraints = this.findTypeAnnotationConstraintsForExecutableParameter(executable.getMember(), i);
            boolean typeArgumentAnnotated = !typeArgumentsConstraints.isEmpty();
            boolean isCollection = ReflectionHelper.isCollection(ReflectionHelper.typeOf(executable, i));
            UnwrapMode unwrapMode = this.unwrapMode(typeArgumentAnnotated, isCollection, unwrapValidatedValue);
            metaData.add(new ConstrainedParameter(ConfigurationSource.ANNOTATION, ConstraintLocation.forParameter(executable, i), ReflectionHelper.typeOf(executable, i), i, parameterName, parameterConstraints, typeArgumentsConstraints, this.getGroupConversions(groupConversion, groupConversionList), parameterIsCascading, unwrapMode));
            ++i;
        }
        return metaData;
    }
 -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean -> java.lang.reflect.Method.getParameterAnnotations(): java.lang.annotation.Annotation[][] -> java.util.List.get(int): java.lang.Object -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.Object.hashCode(): int -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.util.Map.containsKey(java.lang.Object): boolean -> java.util.Map.containsKey(java.lang.Object): boolean -> java.lang.reflect.Executable.getParameters(): java.lang.reflect.Parameter[] -> java.lang.reflect.Parameter.getAnnotatedType(): java.lang.reflect.AnnotatedType -> java.lang.reflect.Parameter.isAnnotationPresent(java.lang.Class): boolean -> java.lang.Object.getClass(): java.lang.Class -> java.lang.Object.equals(java.lang.Object): boolean -> java.lang.Class.isPrimitive(): boolean -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean -> java.util.Optional.empty(): java.util.Optional -> java.util.Optional.isPresent(): boolean -> java.util.Collections.emptySet(): java.util.Set -> java.util.Set.isEmpty(): boolean -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] -> java.lang.Class.isPrimitive(): boolean -> java.util.Map.get(java.lang.Object): java.lang.Object -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set -> java.util.Collections.unmodifiableMap(java.util.Map): java.util.Map -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set -> java.util.List.add(java.lang.Object): boolean
 [CALL] [CALL] [EXIT] [CALL] [CALL] -> java.lang.reflect.Method.getParameterTypes(): java.lang.Class[] [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.StringBuilder.append(java.lang.String): java.lang.StringBuilder -> java.lang.StringBuilder.append(int): java.lang.StringBuilder -> java.lang.StringBuilder.toString(): java.lang.String -> java.util.List.add(java.lang.Object): boolean [EXIT] [EXIT] [EXIT] [CALL] -> java.lang.reflect.Method.getParameterAnnotations(): java.lang.annotation.Annotation[][] [EXIT] -> java.util.List.get(int): java.lang.Object [CALL] [EXIT] [CALL] [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.util.Map.containsKey(java.lang.Object): boolean [CALL] -> java.lang.Object.hashCode(): int [EXIT] [CALL] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class -> java.util.Map.containsKey(java.lang.Object): boolean [CALL] -> java.util.Map.containsKey(java.lang.Object): boolean [EXIT] [EXIT] [EXIT] [CALL] [EXIT] [CALL] -> java.lang.reflect.Executable.getParameters(): java.lang.reflect.Parameter[] -> java.lang.reflect.Parameter.getAnnotatedType(): java.lang.reflect.AnnotatedType -> java.lang.reflect.Parameter.isAnnotationPresent(java.lang.Class): boolean [CALL] [CALL] -> java.lang.Object.getClass(): java.lang.Class [CALL] [CALL] [EXIT] [CALL] [EXIT] -> java.lang.Object.equals(java.lang.Object): boolean [CALL] -> java.lang.Class.isPrimitive(): boolean -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean [EXIT] [EXIT] -> java.util.Optional.empty(): java.util.Optional [EXIT] -> java.util.Optional.isPresent(): boolean -> java.util.Collections.emptySet(): java.util.Set [EXIT] [EXIT] -> java.util.Set.isEmpty(): boolean [CALL] [CALL] -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] [EXIT] [EXIT] [CALL] -> java.lang.Class.isAssignableFrom(java.lang.Class): boolean [EXIT] [CALL] [EXIT] [CALL] [CALL] [EXIT] -> java.lang.reflect.Member.getDeclaringClass(): java.lang.Class [CALL] [EXIT] [CALL] [CALL] -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] [EXIT] [EXIT] [CALL] -> java.lang.Class.isPrimitive(): boolean [CALL] -> java.util.Map.get(java.lang.Object): java.lang.Object [EXIT] [EXIT] [EXIT] [CALL] [CALL] -> java.lang.reflect.Method.getGenericParameterTypes(): java.lang.reflect.Type[] [EXIT] [EXIT] [CALL] [CALL] [EXIT] [EXIT] [CALL] [CALL] -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set -> java.util.Collections.unmodifiableMap(java.util.Map): java.util.Map [EXIT] -> java.util.Collections.unmodifiableSet(java.util.Set): java.util.Set [EXIT] -> java.util.List.add(java.lang.Object): boolean [EXIT]