@Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      if (interestedClients != null && interestedClients.size() > 0) {
        sb.append("interestedClients:");
        sb.append(interestedClients);
      }
      if (interestedClientsInv != null && interestedClientsInv.size() > 0) {
        sb.append(", interestedClientsInv:");
        sb.append(interestedClientsInv);
      }
      if (InternalDistributedSystem.getLogger().finerEnabled()) {
        if (cqs != null) {
          sb.append(", cqs=");
          sb.append(cqs.keySet());
        }
      } else {
        if (cqs != null) {
          sb.append(", ").append(cqs.size()).append(" cqs");
        }
      }
      return sb.toString();
    }
FilterInfo fields are only deserialized if they are needed. We send all FilterInfo routings
to all members that receive a cache op message but each member is only interested in its own
routing, so there is no need to deserialize the routings for other members
geode-core/src/main/java/org/apache/geode/internal/cache/FilterRoutingInfo.java