docs: public static ForwardCurveInterpolation createForwardCurveFromDiscountFactors(String name, double[] times, RandomVariable[] givenDiscountFactors, double paymentOffset) {
  		ForwardCurveInterpolation forwardCurveInterpolation = new ForwardCurveInterpolation(name, paymentOffset, InterpolationEntityForward.FORWARD, null);
  
  		if(times.length == 0) {
  			throw new IllegalArgumentException("Vector of times must not be empty.");
  		}
  
  		if(times[0] > 0) {
  			// Add first forward
  			RandomVariable forward = givenDiscountFactors[0].sub(1.0).pow(-1.0).div(times[0]);
  			forwardCurveInterpolation.addForward(null, 0.0, forward, true);
  		}
  
  		for(int timeIndex=0; timeIndex<times.length-1;timeIndex++) {
  			RandomVariable 	forward		= givenDiscountFactors[timeIndex].div(givenDiscountFactors[timeIndex+1].sub(1.0)).div(times[timeIndex+1] - times[timeIndex]);
  			double	fixingTime	= times[timeIndex];
  			boolean	isParameter	= (fixingTime > 0);
  			forwardCurveInterpolation.addForward(null, fixingTime, forward, isParameter);
  		}
  
  		return forwardCurveInterpolation;
  	}