this.accrualEndTimes_ = new ArrayList<Double>(size_);
this.accrualPeriod_ = new ArrayList<Double>(size_);
this.m1 = new Array(size_);
this.m2 = new Array(size_);
final DayCounter dayCounter = index_.dayCounter();
final List<CashFlow> flows = null /* cashFlows() */; // FIXME: translate cashFlows();
QL.require(this.size_ == flows.size() , wrong_number_of_cashflows); // QA:[RG]::verified // TODO: message
final Date settlement = index_.termStructure().currentLink().referenceDate();
final Date startDate = ((IborCoupon) flows.get(0)).fixingDate();
for (int i = 0; i < size_; ++i) {
final IborCoupon coupon = (IborCoupon) flows.get(i);
QL.require(coupon.date().eq(coupon.accrualEndDate()) , irregular_coupon_types); // QA:[RG]::verified // TODO: message
initialValues_.set(i, coupon.rate());
accrualPeriod_.set(i, coupon.accrualPeriod());
fixingDates_.set(i, coupon.fixingDate());
fixingTimes_.set(i, dayCounter.yearFraction(startDate, coupon.fixingDate()));
accrualStartTimes_.set(i, dayCounter.yearFraction(settlement, coupon.accrualStartDate()));
accrualEndTimes_.set(i, dayCounter.yearFraction(settlement, coupon.accrualEndDate()));
}
}