final List<FudgeField> dateFields = message.getAllByName(DATES_FIELD);
final List<FudgeField> pairsField = message.getAllByName(PAIRS_FIELD);
final Map<LocalDate, List<Pair<CurrencyAmount, String>>> values = Maps.newHashMapWithExpectedSize(dateFields.size());
for (int i = 0; i < dateFields.size(); i++) {
final LocalDate date = deserializer.fieldValueToObject(LocalDate.class, dateFields.get(i));
final FudgeMsg perDateMessage = (FudgeMsg) pairsField.get(i).getValue();
final List<FudgeField> caMessage = perDateMessage.getAllByName(CA_FIELD);
final List<FudgeField> resetIndexMessage = perDateMessage.getAllByName(RESET_INDEX_FIELD);
final List<Pair<CurrencyAmount, String>> list = Lists.newArrayListWithCapacity(caMessage.size());
for (int j = 0; j < caMessage.size(); j++) {
final CurrencyAmount ca = deserializer.fieldValueToObject(CurrencyAmount.class, caMessage.get(j));
final String resetIndex = (String) deserializer.fieldValueToObject(String.class, resetIndexMessage.get(j));
list.add(Pair.of(ca, resetIndex));