docs: private RandomVariable getOnePlusInterpolatedLIBORDt(int timeIndex, double periodStartTime, int liborPeriodIndex) throws CalculationException
  	{
  		double tenorPeriodStartTime       = getLiborPeriod(liborPeriodIndex);
  		double tenorPeriodEndTime         = getLiborPeriod(liborPeriodIndex + 1);
  		double tenorDt                    = tenorPeriodEndTime - tenorPeriodStartTime;
  		if(tenorPeriodStartTime < getTime(timeIndex)) {
  			// Fixed at Long LIBOR period Start.
  			timeIndex  = Math.min(timeIndex, getTimeIndex(tenorPeriodStartTime));
  			if(timeIndex < 0) {
  				//				timeIndex = -timeIndex-2;			// mapping to last known fixing.
  				throw new IllegalArgumentException("Tenor discretization not part of time discretization.");
  			}
  		}
  		RandomVariable onePlusLongLIBORDt = getLIBOR(timeIndex , liborPeriodIndex).mult(tenorDt).add(1.0);
  
  		double smallDt                    = tenorPeriodEndTime - periodStartTime;
  		double alpha                      = smallDt / tenorDt;
  
  		RandomVariable onePlusInterpolatedLIBORDt;
  		switch(interpolationMethod)
  		{
  		case LINEAR:
  			onePlusInterpolatedLIBORDt = onePlusLongLIBORDt.mult(alpha).add(1 - alpha);
  			break;
  		case LOG_LINEAR_UNCORRECTED:
  			onePlusInterpolatedLIBORDt = onePlusLongLIBORDt.log().mult(alpha).exp();
  			break;
  		case LOG_LINEAR_CORRECTED:
  			double adjustmentCoefficient     = 0.5 * smallDt * (tenorPeriodStartTime - periodStartTime);
  			RandomVariable adjustment        = getInterpolationDriftAdjustment(timeIndex, liborPeriodIndex);
  			adjustment = adjustment.mult(adjustmentCoefficient);
  			onePlusInterpolatedLIBORDt = onePlusLongLIBORDt.log().mult(alpha).sub(adjustment).exp();
  			break;
  		default: throw new IllegalArgumentException("Method for enum " + interpolationMethod.name() + " not implemented!");
  		}
  
  		// Analytic adjustment for the interpolation
  		// @TODO reference to AnalyticModelFromCuvesAndVols must not be null
  		// @TODO This adjustment only applies if the corresponding adjustment in getNumeraire is enabled
  		double analyticOnePlusLongLIBORDt   = 1 + getForwardRateCurve().getForward(getAnalyticModel(), tenorPeriodStartTime, tenorDt) * tenorDt;
  		double analyticOnePlusShortLIBORDt	= 1 + getForwardRateCurve().getForward(getAnalyticModel(), periodStartTime, smallDt) * smallDt;
  
  		double analyticOnePlusInterpolatedLIBORDt;
  		switch(interpolationMethod)
  		{
  		case LINEAR:
  			analyticOnePlusInterpolatedLIBORDt = analyticOnePlusLongLIBORDt * alpha + (1-alpha);
  			break;
  		case LOG_LINEAR_UNCORRECTED:
  		case LOG_LINEAR_CORRECTED:
  			analyticOnePlusInterpolatedLIBORDt = Math.exp(Math.log(analyticOnePlusLongLIBORDt) * alpha);
  			break;
  		default: throw new IllegalArgumentException("Method for enum " + interpolationMethod.name() + " not implemented!");
  		}
  		onePlusInterpolatedLIBORDt = onePlusInterpolatedLIBORDt.mult(analyticOnePlusShortLIBORDt / analyticOnePlusInterpolatedLIBORDt);
  
  		return onePlusInterpolatedLIBORDt;
  	}