public ConstrainedParameter build(
     ConstraintHelper constraintHelper, ParameterNameProvider parameterNameProvider) {
   // TODO HV-919 Support specification of type parameter constraints via XML and API
   return new ConstrainedParameter(
       ConfigurationSource.API,
       ConstraintLocation.forParameter(executableContext.getExecutable(), parameterIndex),
       ReflectionHelper.typeOf(executableContext.getExecutable(), parameterIndex),
       parameterIndex,
       executableContext
           .getExecutable()
           .getParameterNames(parameterNameProvider)
           .get(parameterIndex),
       getConstraints(constraintHelper),
       Collections.<MetaConstraint<?>>emptySet(),
       groupConversions,
       isCascading,
       unwrapMode());
 }
  private List<ConstrainedParameter> getParameters(
      ConstraintHelper constraintHelper, ParameterNameProvider parameterNameProvider) {
    List<ConstrainedParameter> constrainedParameters = newArrayList();

    for (int i = 0; i < parameterContexts.length; i++) {
      ParameterConstraintMappingContextImpl parameter = parameterContexts[i];
      if (parameter != null) {
        constrainedParameters.add(parameter.build(constraintHelper, parameterNameProvider));
      } else {
        constrainedParameters.add(
            new ConstrainedParameter(
                ConfigurationSource.API,
                ConstraintLocation.forParameter(executable, i),
                ReflectionHelper.typeOf(executable, i),
                i,
                executable.getParameterNames(parameterNameProvider).get(i)));
      }
    }

    return constrainedParameters;
  }