@Test
  public void testUnregisterInterestKeysInvForOneClientDoesNotAffectOtherClient() throws Exception {
    server0.invoke(() -> UnregisterInterestDUnitTest.checkRIArtifacts(list, 0, 0));
    client1.invoke(UnregisterInterestDUnitTest.class, "registerInterest", new Object[] {list,
        !receiveValuesConstant, new String[] {"key_1", "key_2", "key_3", "key_4", "key_5"}});
    client2.invoke(UnregisterInterestDUnitTest.class, "registerInterest", new Object[] {list,
        !receiveValuesConstant, new String[] {"key_1", "key_2", "key_3", "key_4", "key_5"}});
    server0.invoke(() -> UnregisterInterestDUnitTest.checkRIArtifacts(list, 0, 2));
    client1.invoke(UnregisterInterestDUnitTest.class, "unregisterInterest",
        new Object[] {new String[] {"key_1", "key_2", "key_3"}});
    server0.invoke(UnregisterInterestDUnitTest.class, "updateKeys",
        new Object[] {new String[] {"key_1", "key_2", "key_3", "key_4", "key_5"}});
    client1.invoke(() -> UnregisterInterestDUnitTest.timedWaitForInvalidates(2));
    client2.invoke(() -> UnregisterInterestDUnitTest.timedWaitForInvalidates(5));
  }
The test starts two clients who register interest in a common list of keys, with the option of
receiving updates as invalidates. One of the clients later unregisters its interests in the
list of keys. Server then does some puts on the keys. The test then verifies that the server
does send these updates to the second client while first client sees no events.

See bug #47717
geode-core/src/distributedTest/java/org/apache/geode/internal/cache/tier/sockets/UnregisterInterestDUnitTest.java