"Does the object already exist?"

However, I'm not really sure about this one ... you're only utilizing the 'store_object' preference if the object doesn't already exist, which makes it not really that useful. In fact, I'm not sure if that preference should exist at all ...

On the other hand, storing all objects OR not checking for the option here may cause backwards compatibility problems for code that utilizes a constructor. When the same class is instantiated multiple times - the constructor would be called every time, while this patch changes this behavior. I don't think this is such a big deal, but anyway - either check for the 'store_object' (and probably rename it) setting at all times or remove it altogether.