public TypeEmbedingPolymorhicMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema)
            : base(ownerContext)
        {
            if (typeof(T).GetIsValueType())
            {
                throw SerializationExceptions.NewValueTypeCannotBePolymorphic(typeof(T));
            }

            this._schema = schema.FilterSelf();
        }
        public KnownTypePolymorphicMessagePackSerializer(SerializationContext ownerContext, PolymorphismSchema schema)
            : base(ownerContext, SerializerCapabilities.PackTo | SerializerCapabilities.UnpackFrom | SerializerCapabilities.UnpackTo)
        {
            if (typeof(T).GetIsValueType())
            {
                throw SerializationExceptions.NewValueTypeCannotBePolymorphic(typeof(T));
            }

            this._schema        = schema.FilterSelf();
            this._typeHandleMap = BuildTypeCodeTypeHandleMap(schema.CodeTypeMapping);
            this._typeCodeMap   = BuildTypeHandleTypeCodeMap(schema.CodeTypeMapping);
        }