@Override
    public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
        username = ExternalizableUtil.getInstance().readSafeUTF(in);
        ExternalizableUtil.getInstance().readExternalizableMap(in, rosterItems, getClass().getClassLoader());
        ExternalizableUtil.getInstance().readStringsMap(in, implicitFrom);
    }
Generates a hash code based on only those fields that are relevant for Roster Versioning (as defined in RFC 6121 section 2.6).

@return A hash code
xmppserver/src/main/java/org/jivesoftware/openfire/roster/Roster.java