code: public static <K, L, R, V> StreamJoin<K, L, R, V> create(Comparator<K> keyComparator,
  	                                                         Function<L, K> leftKeyFunction, Function<R, K> rightKeyFunction,
  	                                                         Joiner<K, L, R, V> joiner) {
  		return new StreamJoin<>(keyComparator, leftKeyFunction, rightKeyFunction, joiner);
  	}
docs: Creates a new instance of StreamJoin
  
  @param keyComparator    comparator for compare keys
  @param leftKeyFunction  function for counting keys of left stream
  @param rightKeyFunction function for counting keys of right stream
  @param joiner           joiner which will join streams