private void notifySecondariesAndClient(String regionName, Object keyOfInterest,
      InterestResultPolicy policy, boolean isDurable, boolean receiveValues,
      final @NotNull InterestType interestType) {
    // Create a client interest message for the keyOfInterest
    ClientInterestMessageImpl message = new ClientInterestMessageImpl(
        new EventID(_cache.getDistributedSystem()), regionName, keyOfInterest, interestType,
        policy.getOrdinal(), isDurable, !receiveValues, ClientInterestMessageImpl.REGISTER);

    // Notify all secondary proxies of a change in interest
    notifySecondariesOfInterestChange(message);

    // Modify interest registration
    if (keyOfInterest instanceof List) {
      registerClientInterestList(regionName, (List<?>) keyOfInterest, isDurable, !receiveValues,
          true);
    } else {
      registerClientInterest(regionName, keyOfInterest, interestType, isDurable, !receiveValues,
          true);
    }

    // Enqueue the interest registration message for the client.
    enqueueInterestRegistrationMessage(message);
  }
Close the <code>CacheClientProxy</code>.

@param checkQueue Whether to message check the queue and process any contained messages (up to
       MAXIMUM_SHUTDOWN_PEEKS).
@param stoppedNormally Whether client stopped normally

@return whether to keep this <code>CacheClientProxy</code>
@see CacheClientProxy#MAXIMUM_SHUTDOWN_PEEKS
geode-core/src/main/java/org/apache/geode/internal/cache/tier/sockets/CacheClientProxy.java