code: public <K, C extends Collection<T>> Map<K, C> groupingTo(Function<? super T, ? extends K> classifier,
              Supplier<C> collectionFactory) {
          return groupingBy(classifier, Collectors.toCollection(collectionFactory));
      }
docs: Returns a {@code Map} whose keys are the values resulting from applying
  the classification function to the input elements, and whose
  corresponding values are the collections of the input elements which map
  to the associated key under the classification function.
  
  <p>
  There are no guarantees on the type, mutability or serializability of the
  {@code Map} objects returned.
  
  <p>
  This is a <a href="package-summary.html#StreamOps">terminal</a>
  operation.
  
  @param <K> the type of the keys
  @param <C> the type of the collection used in resulting {@code Map}
  values
  @param classifier the classifier function mapping input elements to keys
  @param collectionFactory a function which returns a new empty
  {@code Collection} which will be used to store the stream
  elements.
  @return a {@code Map} containing the results of the group-by operation
  
  @see #groupingBy(Function, Collector)
  @see Collectors#groupingBy(Function, Collector)
  @see Collectors#groupingByConcurrent(Function, Collector)
  @since 0.2.2