code: private void crossSecond1withNValues(T2 val1, T1 firstValN,
  			Iterator<T1> valsN, GenericJoiner<T1, T2, O> matchFunction, Collector<O> collector)
  	throws Exception
  	{
  		this.copy2 = this.serializer2.copy(val1, this.copy2);
  		matchFunction.join(firstValN, this.copy2, collector);
  		
  		// set copy and match first element
  		boolean more = true;
  		do {
  			final T1 nRec = valsN.next();
  			
  			if (valsN.hasNext()) {
  				this.copy2 = this.serializer2.copy(val1, this.copy2);
  				matchFunction.join(nRec, this.copy2, collector);
  			} else {
  				matchFunction.join(nRec, val1, collector);
  				more = false;
  			}
  		}
  		while (more);
  	}
docs: Crosses a single value from the second side with N values, all sharing a common key.
  Effectively realizes a <i>N:1</i> match (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.