private static RateCalculation parseRateCalculation( CsvRow row, String leg, FloatingRateIndex index, DayCount defaultFixedLegDayCount, BusinessDayAdjustment bda, Currency currency) { if (index instanceof IborIndex) { return parseIborRateCalculation(row, leg, (IborIndex) index, bda, currency); } else if (index instanceof OvernightIndex) { Optional<FloatingRateName> frnOpt = FloatingRateName.extendedEnum().find(getValue(row, leg, INDEX_FIELD)); if (frnOpt.isPresent()) { FloatingRateName frn = frnOpt.get(); if (frn.getType() == FloatingRateType.OVERNIGHT_AVERAGED) { return parseOvernightRateCalculation(row, leg, (OvernightIndex) index, OvernightAccrualMethod.AVERAGED); } } return parseOvernightRateCalculation(row, leg, (OvernightIndex) index, OvernightAccrualMethod.COMPOUNDED); } else if (index instanceof PriceIndex) { return parseInflationRateCalculation(row, leg, (PriceIndex) index, currency); } else { return parseFixedRateCalculation(row, leg, currency, defaultFixedLegDayCount); } }