final Handle<YieldTermStructure> rTS = new Handle<YieldTermStructure>(flatRate(referenceDate, rRate, dc));
final Handle<YieldTermStructure> qTS = new Handle<YieldTermStructure>(flatRate(referenceDate, qRate, dc));
final Handle<BlackVolTermStructure> volTS = new Handle<BlackVolTermStructure>(flatVol(referenceDate, vol, cal, dc));
// obtain stochastic process
this.stochProcess = new BlackScholesMertonProcess(new Handle<Quote>(spot), qTS, rTS, volTS);
// obtain a pricing engine and assign to this option :: 3 intervals a day
final int timeSteps = (int) (exercise.lastDate().sub(referenceDate) * 3);
final PricingEngine engine = new BinomialDividendVanillaEngine<CoxRossRubinstein>(CoxRossRubinstein.class, stochProcess, timeSteps) { /* anonymous */ };