public final @NotNull <K, V> Map<K, V> toMap(@NotNull Convertor<? super E, ? extends K> toKey,
                                               @NotNull Convertor<? super E, ? extends V> toValue) {
    if (this == EMPTY) return Collections.emptyMap();
    Map<K, V> map = new LinkedHashMap<>();
    for (E e : this) map.put(toKey.convert(e), toValue.convert(e));
    return map.isEmpty() ? Collections.emptyMap() : Collections.unmodifiableMap(map);
  }
public final @NotNull <K, V> Map<K, V> toMap(@NotNull Convertor<? super E, ? extends K> toKey,
                                               @NotNull Convertor<? super E, ? extends V> toValue)