/**
  * this method uses CacheClientNotifier to try to obtain an ID that is equal to this one. This is
  * used during deserialization to reduce storage overhead.
  */
 private ClientProxyMembershipID canonicalReference() {
   CacheClientNotifier ccn = CacheClientNotifier.getInstance();
   if (ccn != null) {
     CacheClientProxy cp = ccn.getClientProxy(this, true);
     if (cp != null) {
       if (this.isCanonicalEquals(cp.getProxyID())) {
         return cp.getProxyID();
       }
     }
   }
   return this;
 }
  @Override
  protected Message getMessage(CacheClientProxy proxy, byte[] latestValue) throws IOException {
    Version clientVersion = proxy.getVersion();
    Message message = null;
    if (clientVersion.compareTo(Version.GFE_57) >= 0) {
      message = getGFEMessage(proxy.getProxyID(), null, clientVersion);
    } else {
      throw new IOException(
          "Unsupported client version for server-to-client message creation: " + clientVersion);
    }

    return message;
  }