code: public <X extends Exception> boolean removeAllIf(Collection<?> values, Try.BiPredicate<? super K, ? super V, X> predicate) throws X {
          Set<K> removingKeys = null;
  
          for (Map.Entry<K, V> entry : this.valueMap.entrySet()) {
              if (predicate.test(entry.getKey(), entry.getValue())) {
                  if (removingKeys == null) {
                      removingKeys = new HashSet<>();
                  }
  
                  removingKeys.add(entry.getKey());
              }
          }
  
          if (N.isNullOrEmpty(removingKeys)) {
              return false;
          }
  
          boolean modified = false;
  
          for (K k : removingKeys) {
              if (removeAll(k, values)) {
                  modified = true;
              }
          }
  
          return modified;
      }
docs: Remove the specified values (all occurrences) from the value set associated with keys which satisfy the specified <code>predicate</code>.
  
  @param values
  @param predicate
  @return <code>true</code> if this Multimap is modified by this operation, otherwise <code>false</code>.