`UnmodifiableMultimap.forEach` uses the `Multimap.forEach` default implementation which involves listing entries, and creating a new lambda instead of simply passing the BiConsumer through to the protected instance. This is safe to pass directly though because `forEach(BiConsumer)` is a read-only operation.
public static <T> Ordering<T> explicit(List<T> valuesInOrder) {
    return new ExplicitOrdering<T>(valuesInOrder);
  }
  /**
   * Returns an ordering that compares objects according to the order in which they are given to
   * this method. Only objects present in the argument list (according to {@link Object#equals}) may
   * be compared. This comparator imposes a "partial ordering" over the type {@code T}. Null values
   * in the argument list are not supported.
   *
   * <p>The returned comparator throws a {@link ClassCastException} when it receives an input
   * parameter that isn't among the provided values.
   *
   * <p>The generated comparator is serializable if all the provided values are serializable.
   *
   * @param leastValue the value which the returned comparator should consider the "least" of all
   *     values
   * @param remainingValuesInOrder the rest of the values that the returned comparator will be able
   *     to compare, in the order the comparator should follow
   * @return the comparator described above
   * @throws NullPointerException if any of the provided values is null
   * @throws IllegalArgumentException if any duplicate values (according to {@link
   *     Object#equals(Object)}) are present among the method arguments
   */
  
  @GwtCompatible(serializable = true)
  public static <T> Ordering<T> explicit(T leastValue, T... remainingValuesInOrder) {
    return explicit(Lists.asList(leastValue, remainingValuesInOrder));
  }
  
  /**