code: @Beta
    public static <K, V> ImmutableMap<K, V> copyOf(
        Iterable<? extends Entry<? extends K, ? extends V>> entries) {
      @SuppressWarnings("unchecked") // we'll only be using getKey and getValue, which are covariant
      Entry<K, V>[] entryArray = (Entry<K, V>[]) Iterables.toArray(entries, EMPTY_ENTRY_ARRAY);
      switch (entryArray.length) {
        case 0:
          return of();
        case 1:
          Entry<K, V> onlyEntry = entryArray[0];
          return of(onlyEntry.getKey(), onlyEntry.getValue());
        default:
          /*
           * The current implementation will end up using entryArray directly, though it will write
           * over the (arbitrary, potentially mutable) Entry objects actually stored in entryArray.
           */
          return RegularImmutableMap.fromEntries(entryArray);
      }
    }
docs: Returns an immutable map containing the specified entries. The returned map iterates over
  entries in the same order as the original iterable.
  
  @throws NullPointerException if any key, value, or entry is null
  @throws IllegalArgumentException if two entries have the same key
  @since 19.0