private AggregatedParameterMetaData getAggregatedParameterMetaData(Method method, boolean cacheValueAllowed) {
final Class<?>[] parameterTypes = method.getParameterTypes();
final Annotation[][] parameterAnnotations = method.getParameterAnnotations();
final List<ParameterMetaData> parameters = new ArrayList<ParameterMetaData>();
final List<ParameterMetaData> keyParameters = new ArrayList<ParameterMetaData>();
ParameterMetaData valueParameter = null;
for (int i = 0; i < parameterTypes.length; i++) {
final Set<Annotation> annotations = asSet(parameterAnnotations[i]);
final ParameterMetaData parameterMetaData = new ParameterMetaData(parameterTypes[i], i, annotations);
for (Annotation oneAnnotation : annotations) {
final Class<?> type = oneAnnotation.annotationType();
if (CacheKeyParam.class.equals(type)) {