code: public static <K, T> StreamMerger<K, T> create(Function<T, K> keyFunction,
  			Comparator<K> keyComparator,
  			boolean distinct) {
  		return new StreamMerger<>(keyFunction, keyComparator, distinct);
  	}
docs: Returns new instance of StreamMerger
  
  @param keyComparator comparator for compare keys
  @param keyFunction   function for counting key
  @param distinct   if it is true it means that in result will be not objects with same key
  @param <K>           type of key for mapping
  @param <T>           type of output data