static void StoreObjectCore(TypeSerializers typeSerializers, AbstractBufferedWriter writer, object obj, InfoForType infoForType, ITypeSerializersLightMapping mapping)
{
writer.WriteVUInt32((uint)infoForType.Id);
if (!infoForType.KnownSimpleSaver)
{
infoForType.SimpleSaver = typeSerializers.GetSimpleSaver(infoForType.Descriptor);
infoForType.KnownSimpleSaver = true;
}
var simpleSaver = infoForType.SimpleSaver;
if (simpleSaver != null)
{
simpleSaver(writer, obj);
return;
}
if (!infoForType.KnownComplexSaver)
{
infoForType.ComplexSaver = typeSerializers.GetComplexSaver(infoForType.Descriptor);
infoForType.KnownComplexSaver = true;
}
var complexSaver = infoForType.ComplexSaver;
var ctx = new TypeBinarySerializerContext(mapping, writer, obj);
complexSaver(writer, ctx, obj);
}