code: @NonNull
    public SelfT withNodeFilter(@NonNull String profileName, @NonNull Predicate<Node> nodeFilter) {
      this.nodeFilters.put(profileName, nodeFilter);
      return self;
    }
docs: Adds a custom filter to include/exclude nodes for a particular execution profile. This assumes
  that you're also using a dedicated load balancing policy for that profile.
  
  <p>The predicate's {@link Predicate#test(Object) test()} method will be invoked each time the
  {@link LoadBalancingPolicy} processes a topology or state change: if it returns false, the
  policy will suggest distance IGNORED (meaning the driver won't ever connect to it if all
  policies agree), and never included in any query plan.
  
  <p>Note that this behavior is implemented in the default load balancing policy. If you use a
  custom policy implementation, you'll need to explicitly invoke the filter.
  
  <p>If the filter is specified programmatically with this method, it overrides the configuration
  (that is, the {@code load-balancing-policy.filter.class} option will be ignored).
  
  @see #withNodeFilter(Predicate)