docs: public LocalDate createDateFromDateAndOffsetCode(LocalDate baseDate, String dateOffsetCode) {
  		dateOffsetCode = dateOffsetCode.trim();
  
  		StringTokenizer tokenizer = new StringTokenizer(dateOffsetCode);
  
  		LocalDate maturityDate = baseDate;
  		while(tokenizer.hasMoreTokens()) {
  			String maturityCodeSingle = tokenizer.nextToken();
  			String[] maturityCodeSingleParts = maturityCodeSingle.split("(?<=[0-9|\\.])(?=[A-Z|a-z])");
  
  			/*
  			 * If no unit is given, the number is interpreted as ACT/365.
  			 * Otherwise we switch according to dateOffsetUnit.
  			 */
  			if(maturityCodeSingleParts.length == 1) {
  				// Try to parse a double as ACT/365
  				double maturityValue	= Double.valueOf(maturityCodeSingle);
  				maturityDate = maturityDate.plusDays((int)Math.round(maturityValue * 365));
  			}
  			else if(maturityCodeSingleParts.length == 2) {
  				int maturityValue = Integer.valueOf(maturityCodeSingleParts[0]);
  				DateOffsetUnit dateOffsetUnit = DateOffsetUnit.getEnum(maturityCodeSingleParts[1]);
  
  				switch(dateOffsetUnit) {
  				case DAYS:
  				{
  					maturityDate = maturityDate.plusDays(maturityValue);
  					break;
  				}
  				case BUSINESS_DAYS:
  				{
  					maturityDate = getRolledDate(maturityDate,maturityValue);
  					break;
  				}
  				case WEEKS:
  				{
  					maturityDate = maturityDate.plusWeeks(maturityValue);
  					break;
  				}
  				case MONTHS:
  				{
  					maturityDate = maturityDate.plusMonths(maturityValue);
  					break;
  				}
  				case YEARS:
  				{
  					maturityDate = maturityDate.plusYears(maturityValue);
  					break;
  				}
  				default:
  					throw new IllegalArgumentException("Cannot handle dateOffsetCode '" + dateOffsetCode + "'.");
  				}
  			}
  			else {
  				throw new IllegalArgumentException("Cannot handle dateOffsetCode '" + dateOffsetCode + "'.");
  			}
  		}
  
  		return maturityDate;
  	}