public <K> List<K> registerInterestList(final @NotNull List<K> keys,
      final @NotNull InterestResultPolicy policy,
      final boolean isDurable, final boolean receiveUpdatesAsInvalidates,
      final @NotNull DataPolicy regionDataPolicy) {
    final RegisterInterestTracker rit = pool.getRITracker();
    List<K> result;
    boolean finished = false;
    try {
      // register with the tracker early
      rit.addInterestList(region, keys, policy, isDurable, receiveUpdatesAsInvalidates);
      result = RegisterInterestListOp.execute(pool, regionName, keys, policy, isDurable,
          receiveUpdatesAsInvalidates, regionDataPolicy);
      finished = true;
      //////// TEST PURPOSE ONLY ///////////
      if (PoolImpl.AFTER_REGISTER_CALLBACK_FLAG) {
        ClientServerObserver bo = ClientServerObserverHolder.getInstance();
        bo.afterInterestRegistration();
      }
      /////////////////////////////////////////
      return result;
    } finally {
      if (!finished) {
        rit.removeInterestList(region, keys, isDurable, receiveUpdatesAsInvalidates);
      }
    }
  }
Does a region registerInterestList on a server

@param keys list of keys we are interested in
@param policy the interest result policy for this registration
@param isDurable true if this registration is durable
@param regionDataPolicy the data policy ordinal of the region
@return list of keys
geode-core/src/main/java/org/apache/geode/cache/client/internal/ServerRegionProxy.java