code: @Override
  	public boolean next() {
  		boolean hasmore2 = ss2.next();
  		if (hasmore2 && ss2.getVal(fldName2).equals(joinVal))
  			return true;
  
  		boolean hasmore1 = ss1.next();
  		if (hasmore1 && ss1.getVal(fldName1).equals(joinVal)) {
  			ss2.restorePosition();
  			return true;
  		}
  
  		while (hasmore1 && hasmore2) {
  			Constant v1 = ss1.getVal(fldName1);
  			Constant v2 = ss2.getVal(fldName2);
  			if (v1.compareTo(v2) < 0)
  				hasmore1 = ss1.next();
  			else if (v1.compareTo(v2) > 0)
  				hasmore2 = ss2.next();
  			else {
  				ss2.savePosition();
  				joinVal = ss2.getVal(fldName2);
  				return true;
  			}
  		}
  		return false;
  	}
docs: Moves to the next record. This is where the action is.
  <P>
  If the next RHS record has the same join value, then move to it.
  Otherwise, if the next LHS record has the same join value, then
  reposition the RHS scan back to the first record having that join value.
  Otherwise, repeatedly move the scan having the smallest value until a
  common join value is found. When one of the scans runs out of records,
  return false.
  
  @see Scan#next()