public override void Marshall(MarshallingContext context, object obj)
 {
     context.CreateIndirectionWithinSlot();
     if (IsNotHandlingConcreteType(context))
     {
         _typeHandler.Write(context, obj);
         return;
     }
     if (_typeHandler is IInstantiatingTypeHandler)
     {
         IInstantiatingTypeHandler instantiating = (IInstantiatingTypeHandler)_typeHandler;
         instantiating.WriteInstantiation(context, obj);
         instantiating.Write(context, obj);
     }
     else
     {
         _typeHandler.Write(context, obj);
     }
 }