code: private void crossFirst1withNValues(final T1 val1, final T2 firstValN,
  										final Iterator<T2> valsN, final FlatJoinFunction<T1, T2, O> joinFunction, final Collector<O> collector)
  			throws Exception {
  		T1 copy1 = createCopy(serializer1, val1, this.copy1);
  		joinFunction.join(copy1, firstValN, collector);
  
  		// set copy and join first element
  		boolean more = true;
  		do {
  			final T2 nRec = valsN.next();
  
  			if (valsN.hasNext()) {
  				copy1 = createCopy(serializer1, val1, this.copy1);
  				joinFunction.join(copy1, nRec, collector);
  			} else {
  				joinFunction.join(val1, nRec, collector);
  				more = false;
  			}
  		}
  		while (more);
  	}
docs: Crosses a single value from the first input with N values, all sharing a common key.
  Effectively realizes a <i>1:N</i> join.
  
  @param val1      The value form the <i>1</i> side.
  @param firstValN The first of the values from the <i>N</i> side.
  @param valsN     Iterator over remaining <i>N</i> side values.
  @throws Exception Forwards all exceptions thrown by the stub.