@Override
 public MutableFudgeMsg buildMessage(
     FudgeSerializationContext context, CurveInstrumentProvider object) {
   if (object instanceof BloombergFutureCurveInstrumentProvider) {
     return _bloombergFutureBuilder.buildMessage(
         context, (BloombergFutureCurveInstrumentProvider) object);
   } else if (object instanceof StaticCurveInstrumentProvider) {
     return _staticBuilder.buildMessage(context, (StaticCurveInstrumentProvider) object);
   } else if (object instanceof SyntheticIdentifierCurveInstrumentProvider) {
     return _syntheticBuilder.buildMessage(
         context, (SyntheticIdentifierCurveInstrumentProvider) object);
   } else {
     throw new OpenGammaRuntimeException(
         "Unsupported subclass - needs explicit support for mongo serialization");
   }
 }
 @Override
 public CurveInstrumentProvider buildObject(
     FudgeDeserializationContext context, FudgeMsg message) {
   String type = message.getString("type");
   if (type.equals(BloombergFutureCurveInstrumentProviderBuilder.TYPE)) {
     return _bloombergFutureBuilder.buildObject(context, message);
   } else if (type.equals(StaticCurveInstrumentProviderBuilder.TYPE)) {
     return _staticBuilder.buildObject(context, message);
   } else if (type.equals(SyntheticIdentifierCurveInstrumentProviderBuilder.TYPE)) {
     return _syntheticBuilder.buildObject(context, message);
   } else {
     throw new OpenGammaRuntimeException(
         "Unsupported subclass type ('"
             + type
             + "') - needs explicit support for mongo serialization");
   }
 }