public static <T, A> Map<A, Collection<T>> group(Collection<T> col,
			F1<T, A> groupF) {
		F1<A, Collection<T>> cacheCreation = obj -> new ArrayList<T>();
		Cache<A, Collection<T>> indiceCache = new Cache<>(cacheCreation);
		
		// Index
		for (T object : col) {
			A index = groupF.e(object);
			
			indiceCache.get(index).add(object);
		}
        return indiceCache.getData();
	}