If the singleton is updated to a newer version, optimizedSerializationDataCache would point to the wrong thing.

I would prefer pushing this down into the actual implementation.