Source:
<code>private List<Map<Class<? extends Annotation>, ParameterInfo<?>>> createParametersInfos(Method method) { if (method.getParameterTypes().length <= 2) { return ImmutableList.of(); } ImmutableList.Builder<Map<Class<? extends Annotation>, ParameterInfo<?>>> result = ImmutableList.builder(); Type[] parameterTypes = method.getGenericParameterTypes(); Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for (int i = 2; i < parameterAnnotations.length; i++) { Annotation[] annotations = parameterAnnotations[i]; Map<Class<? extends Annotation>, ParameterInfo<?>> paramAnnotations = Maps.newIdentityHashMap(); for (Annotation annotation : annotations) { Class<? extends Annotation> annotationType = annotation.annotationType(); ParameterInfo<?> parameterInfo; if (PathParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createPathParamConverter(parameterTypes[i])); } else if (QueryParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createQueryParamConverter(parameterTypes[i])); } else if (HeaderParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createHeaderParamConverter(parameterTypes[i])); } else { parameterInfo = ParameterInfo.create(annotation, null); } paramAnnotations.put(annotationType, parameterInfo); } if (Sets.intersection(SUPPORTED_PARAM_ANNOTATIONS, paramAnnotations.keySet()).size() != 1) { throw new IllegalArgumentException( <START> String.format("Missing have exactly one annotation from %s for parameter %d in method %s", <END> SUPPORTED_PARAM_ANNOTATIONS, i, method)); } result.add(Collections.unmodifiableMap(paramAnnotations)); } return result.build(); }</code><technical_language>"Must annotation..."</technical_language>

Target:
private List<Map<Class<? extends Annotation>, ParameterInfo<?>>> createParametersInfos(Method method) { if (method.getParameterTypes().length <= 2) { return ImmutableList.of(); } ImmutableList.Builder<Map<Class<? extends Annotation>, ParameterInfo<?>>> result = ImmutableList.builder(); Type[] parameterTypes = method.getGenericParameterTypes(); Annotation[][] parameterAnnotations = method.getParameterAnnotations(); for (int i = 2; i < parameterAnnotations.length; i++) { Annotation[] annotations = parameterAnnotations[i]; Map<Class<? extends Annotation>, ParameterInfo<?>> paramAnnotations = Maps.newIdentityHashMap(); for (Annotation annotation : annotations) { Class<? extends Annotation> annotationType = annotation.annotationType(); ParameterInfo<?> parameterInfo; if (PathParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createPathParamConverter(parameterTypes[i])); } else if (QueryParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createQueryParamConverter(parameterTypes[i])); } else if (HeaderParam.class.isAssignableFrom(annotationType)) { parameterInfo = ParameterInfo.create(annotation, ParamConvertUtils.createHeaderParamConverter(parameterTypes[i])); } else { parameterInfo = ParameterInfo.create(annotation, null); } paramAnnotations.put(annotationType, parameterInfo); } if (Sets.intersection(SUPPORTED_PARAM_ANNOTATIONS, paramAnnotations.keySet()).size() != 1) { throw new IllegalArgumentException( String.format("Must have exactly one annotation from %s for parameter %d in method %s", SUPPORTED_PARAM_ANNOTATIONS, i, method)); } result.add(Collections.unmodifiableMap(paramAnnotations)); } return result.build(); }