code: public boolean next(K key, TupleWritable value) throws IOException {
      if (jc.flush(value)) {
        WritableUtils.cloneInto(key, jc.key());
        return true;
      }
      jc.clear();
      K iterkey = createKey();
      final PriorityQueue<ComposableRecordReader<K,?>> q = getRecordReaderQueue();
      while (!q.isEmpty()) {
        fillJoinCollector(iterkey);
        jc.reset(iterkey);
        if (jc.flush(value)) {
          WritableUtils.cloneInto(key, jc.key());
          return true;
        }
        jc.clear();
      }
      return false;
    }
docs: Emit the next set of key, value pairs as defined by the child
  RecordReaders and operation associated with this composite RR.