@Override
 public void writeExternal(ObjectOutput out) throws IOException {
   SpliceLogUtils.trace(LOG, "writeExternal");
   super.writeExternal(out);
   out.writeInt(leftHashKeyItem);
   out.writeInt(rightHashKeyItem);
   out.writeInt(emptyRightRowsReturned);
 }
 @Override
 public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
   SpliceLogUtils.trace(LOG, "readExternal");
   super.readExternal(in);
   leftHashKeyItem = in.readInt();
   rightHashKeyItem = in.readInt();
   emptyRightRowsReturned = in.readInt();
 }
 @Override
 public void init(SpliceOperationContext context) throws StandardException, IOException {
   SpliceLogUtils.trace(LOG, "init");
   super.init(context);
   SpliceLogUtils.trace(
       LOG, "leftHashkeyItem=%d,rightHashKeyItem=%d", leftHashKeyItem, rightHashKeyItem);
   emptyRightRowsReturned = 0;
   leftHashKeys = generateHashKeys(leftHashKeyItem);
   rightHashKeys = generateHashKeys(rightHashKeyItem);
   JoinUtils.getMergedRow(leftRow, rightRow, wasRightOuterJoin, mergedRow);
 }