Implementers can be written to a
StreamOutput and read from a
StreamInput. If the implementer also
implements equals and hashCode then a copy made by serializing and deserializing must be equal and have the same hashCode.
It isn't required that such a copy be entirely unchanged.