*/
private double valueCDS(final ISDACDSDerivative cds, final ISDACurve hazardRateCurve, final Timeline paymentTimeline, final Timeline accrualTimeline, final Timeline contingentTimeline,
final double stepinTime, final double stepinDiscountFactor, final double settlementDiscountFactor, final boolean cleanPrice) {
if (stepinTime < PRICING_TIME) {
throw new OpenGammaRuntimeException("Cannot value a CDS with step-in date before pricing date");
}
final double contingentLeg = valueContingentLeg(cds, contingentTimeline, hazardRateCurve, settlementDiscountFactor);
final double feeLeg = valueFeeLeg(cds, paymentTimeline, accrualTimeline, hazardRateCurve, stepinTime, stepinDiscountFactor, settlementDiscountFactor);
final double dirtyPrice = (contingentLeg - feeLeg) * cds.getNotional();