@Override
 protected void buildMessage(
     final FudgeSerializer serializer,
     final MutableFudgeMsg message,
     final MulticurveProviderDiscount object) {
   final Map<Currency, YieldAndDiscountCurve> discountingCurves = object.getDiscountingCurves();
   for (final Map.Entry<Currency, YieldAndDiscountCurve> entry : discountingCurves.entrySet()) {
     message.add(CURRENCY_FIELD, entry.getKey().getCode());
     serializer.addToMessageWithClassHeaders(
         message, DISCOUNTING_CURVE_FIELD, null, entry.getValue());
   }
   final Map<IborIndex, YieldAndDiscountCurve> forwardIborCurves = object.getForwardIborCurves();
   for (final Map.Entry<IborIndex, YieldAndDiscountCurve> entry : forwardIborCurves.entrySet()) {
     serializer.addToMessageWithClassHeaders(message, INDEX_IBOR_FIELD, null, entry.getKey());
     serializer.addToMessageWithClassHeaders(message, INDEX_IBOR_CURVE, null, entry.getValue());
   }
   final Map<IndexON, YieldAndDiscountCurve> forwardONCurves = object.getForwardONCurves();
   for (final Map.Entry<IndexON, YieldAndDiscountCurve> entry : forwardONCurves.entrySet()) {
     serializer.addToMessageWithClassHeaders(message, INDEX_ON_FIELD, null, entry.getKey());
     serializer.addToMessageWithClassHeaders(
         message, OVERNIGHT_CURVE_FIELD, null, entry.getValue());
   }
   serializer.addToMessageWithClassHeaders(message, FX_MATRIX_FIELD, null, object.getFxRates());
 }