// Calculate the unbumped value of the index
final double presentValue = indexPresentValue.getIntrinsicPresentValueIndexCreditDefaultSwap(valuationDate, indexCDS, breakevenSpreads, yieldCurves, hazardRateCurves);
// Extract out the underlying pool from the index CDS
UnderlyingPool modifiedPool = indexCDS.getUnderlyingPool();
double[] recoveryRates = modifiedPool.getRecoveryRates();
//final double recoveryRate = modifiedPool.getRecoveryRates()[i];
final double[] bumpedRecoveryRates = recoveryRateBumper.getBumpedRecoveryRate(recoveryRates, recoveryRateBump, recoveryRateBumpType);
// Modify the temp pool object to have the bumped recovery rate vector
modifiedPool = modifiedPool.withRecoveryRates(bumpedRecoveryRates);
// Construct a temporary index CDS
IndexCreditDefaultSwapDefinition tempIndex = indexCDS;
// Modify the temporary index to have the modified underlying pool