Protobuf-net creando typemodel con interfaz y clase base abstracta

Estoy tratando de serializar un modelo usando el gran Protobuf-NET. No puedo usar los atributos (los objetos son desconocidos en tiempo de compilación), así que construí un TypeModel. Mi modelo de objeto consiste en una clase TestDataObject, esta clase tiene una propiedad de ITestDataExtension. La clase base abstracta TestDataExtensionBase implementa esta interfaz y la clase TestDataExtension (myDataObjectExtA en código) hereda de esta clase base.

My TypeModel se construye así:

        System.IO.MemoryStream tmpMemoryStream = new System.IO.MemoryStream();
        RuntimeTypeModel model = TypeModel.Create();
        MetaType basetype = model.Add(typeof(TestDataObject), true);
        MetaType interfaceType = model.Add(typeof(ITestDataExtension), true);
        //MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
        MetaType extType = interfaceType.AddSubType(200, myDataObjectExtA.GetType());
        model.Add(typeof(TestDataExtensionBase), true);
        model.Add(myDataObjectA.Ext.GetType(), true);
        model.CompileInPlace();
        model.Serialize(tmpMemoryStream, myDataObjectA);
        byte[] tmpDat = tmpMemoryStream.ToArray();

Si ejecuto lo siguiente, las propiedades de la clase base no se serializan, y necesito que se serialicen.
En mi opinión, debería haber agregado un subtipo para TestDataExtensionBase como este:

        MetaType extBaseType = interfaceType.AddSubType(100, typeof(TestDataExtensionBase));
        MetaType extType = extBaseType.AddSubType(200, myDataObjectExtA.GetType());

Pero esto da como resultado un: Subtipo inesperado: TestDataExtension. ¿Alguien sabe lo que estoy haciendo mal? Cualquier ayuda sería apreciada

Respuestas a la pregunta(2)

Su respuesta a la pregunta