in reply to Caching a default instance to avoid initializing it every time (with Moo)
This is a Singleton pattern, and that is how you should implement it. For instance, let there be a sub instance which either returns a cached copy or creates a new instance and caches it. Don't try to do this in a constructor or a wrapper around it – you will confuse other people, at best. Give them what they are conditioned to expect to see. You also need to be very sure that you are storing the cached instance in a persistent global variable as you think you are.