Static singleton members cannot be serialized.

Use readResolved() to initialize static member, or to return existing singleton.

Use writeReplace() to serialize a proxy object instead of the original class.