docs: private RandomVariable getB(double time, double maturity) {
  		int timeIndexStart = volatilityModel.getTimeDiscretization().getTimeIndex(time);
  		if(timeIndexStart < 0) {
  			timeIndexStart = -timeIndexStart-2;	// Get timeIndex corresponding to previous point
  		}
  
  		int timeIndexEnd =volatilityModel.getTimeDiscretization().getTimeIndex(maturity);
  		if(timeIndexEnd < 0) {
  			timeIndexEnd = -timeIndexEnd-2;	// Get timeIndex corresponding to previous point
  		}
  
  		RandomVariable integral = new Scalar(0.0);
  		double timePrev = time;
  		double timeNext;
  		for(int timeIndex=timeIndexStart+1; timeIndex<=timeIndexEnd; timeIndex++) {
  			timeNext = volatilityModel.getTimeDiscretization().getTime(timeIndex);
  			RandomVariable meanReversion = volatilityModel.getMeanReversion(timeIndex-1);
  			integral = integral.add(
  					getMRTime(timeNext,maturity).mult(-1.0).exp().sub(
  							getMRTime(timePrev,maturity).mult(-1.0).exp()).div(meanReversion));
  			timePrev = timeNext;
  		}
  		RandomVariable meanReversion = volatilityModel.getMeanReversion(timeIndexEnd);
  		timeNext = maturity;
  		integral = integral.add(
  				getMRTime(timeNext,maturity).mult(-1.0).exp().sub(
  						getMRTime(timePrev,maturity).mult(-1.0).exp()).div(meanReversion));
  
  		return integral;
  	}