Do we honor the java.io.Serializable readObject/readResolve contract such that one can control what object is returned? A typical example of using this is the old type safe enum pattern that maps a string/int onto a static final instance.