code: private Dimensions computeDef(final String propName) {
  		final String property = definition.getProperty(propName);
  		final Matcher multiMethodCallMatcher = CALLS.matcher(property);
  		if (multiMethodCallMatcher.matches()) {
  			final String[] methodsLiterals = property.split(CALL_REG);
  			final String dependancyName = multiMethodCallMatcher.group(1);
  			Dimensions result = null;
  			if (definition.containsKey(PREFIX_DEF + dependancyName)) {
  				result = computeDef(PREFIX_DEF + dependancyName);
  			} else {
  				result = computeVal(PREFIX_VAL + dependancyName);
  			}
  			for (int i = 1; i < methodsLiterals.length; i++) {
  				try {
  					final Matcher methodCallMatcher = METHOD.matcher(methodsLiterals[i]);
  					methodCallMatcher.matches();
  					final Method method = Dimensions.class.getMethod(methodCallMatcher.group(1), int.class);
  					final int arg = Integer.parseInt(methodCallMatcher.group(2));
  					result = (Dimensions) method.invoke(result, arg);
  				} catch (final Exception e) {
  					throw new IllegalArgumentException(property, e);
  				}
  			}
  			return result;
  		}
  		throw new IllegalArgumentException(property);
  	}
docs: Computes a def from a property name. The string contained in the property
  must have this format : valName[.methodOnDefinitions(int)]+
  
  @param propName
  the property containg the def to compute
  @return a {@link Dimensions} created by applying the method calls on the
  val