docs: public static RandomVariableInterface blackScholesGeneralizedOptionValue(
  			RandomVariableInterface forward,
  			RandomVariableInterface volatility,
  			double optionMaturity,
  			double optionStrike,
  			RandomVariableInterface payoffUnit)
  	{
  		if(optionMaturity < 0) {
  			return forward.mult(0.0);
  		}
  		else
  		{
  			RandomVariableInterface dPlus	= forward.div(optionStrike).log().add(volatility.squared().mult(0.5 * optionMaturity)).div(volatility).div(Math.sqrt(optionMaturity));
  			RandomVariableInterface dMinus	= dPlus.sub(volatility.mult(Math.sqrt(optionMaturity)));
  
  			UnivariateFunction cumulativeNormal = new UnivariateFunction() {
  				public double value(double x) { return NormalDistribution.cumulativeDistribution(x); }
  			};
  
  			RandomVariableInterface valueAnalytic = dPlus.apply(cumulativeNormal).mult(forward).sub(dMinus.apply(cumulativeNormal).mult(optionStrike)).mult(payoffUnit);
  
  			return valueAnalytic;
  		}
  	}