docs: private RandomVariable getValueUnderlyingNumeraireRelative(LIBORModelMonteCarloSimulationModel model, Schedule legSchedule, boolean paysFloat, double swaprate, double notional) throws CalculationException {
  		RandomVariable value	= model.getRandomVariableForConstant(0.0);
  
  		for(int periodIndex = legSchedule.getNumberOfPeriods() - 1; periodIndex >= 0; periodIndex--) {
  
  			double fixingTime = FloatingpointDate.getFloatingPointDateFromDate(model.getReferenceDate().toLocalDate(), legSchedule.getPeriod(periodIndex).getFixing());
  			double paymentTime = FloatingpointDate.getFloatingPointDateFromDate(model.getReferenceDate().toLocalDate(), legSchedule.getPeriod(periodIndex).getPayment());
  			double periodLength	= legSchedule.getPeriodLength(periodIndex);
  
  			RandomVariable	numeraireAtPayment  = model.getNumeraire(paymentTime);
  			RandomVariable	monteCarloProbabilitiesAtPayment = model.getMonteCarloWeights(paymentTime);
  			if(swaprate != 0.0) {
  				RandomVariable periodCashFlowFix = model.getRandomVariableForConstant(swaprate * periodLength * notional).div(numeraireAtPayment).mult(monteCarloProbabilitiesAtPayment);
  				value = value.add(periodCashFlowFix);
  			}
  			if(paysFloat) {
  				RandomVariable libor = model.getLIBOR(fixingTime, fixingTime, paymentTime);
  				RandomVariable periodCashFlowFloat = libor.mult(periodLength).mult(notional).div(numeraireAtPayment).mult(monteCarloProbabilitiesAtPayment);
  				value = value.add(periodCashFlowFloat);
  			}
  		}
  		return value;
  	}