docs: protected <K> FMap<K, C> groupByInternal(Function<? super E, ? extends K> f) {
  		LinkedHashFMap<K, CollectionBuilder<E,C>> build = new LinkedHashFMap<>(new LinkedHashMap<>());
  		for(E e: this) {
  			build.computeIfAbsent(f.apply(e), k -> builder()).add(e);
  		}
  		
  		LinkedHashFMap<K, C> ret = new LinkedHashFMap<>(new LinkedHashMap<>());
  		for (Entry<K, CollectionBuilder<E, C>> entry : build.entrySet()) {
  			ret.put(entry.getKey(), entry.getValue().build());
  		}
  		return ret;
  	}