// JoinCollector comes from parent, which has
 @SuppressWarnings("unchecked") // no static type for the slot this sits in
 public void accept(CompositeRecordReader.JoinCollector i, K key) throws IOException {
   vjoin.clear();
   if (0 == cmp.compare(key, khead)) {
     do {
       vjoin.add(vhead);
     } while (next() && 0 == cmp.compare(key, khead));
   }
   i.add(id, vjoin);
 }
 /**
  * Add an iterator to the collector at the position occupied by this RecordReader over the values
  * in this stream paired with the key provided (ie register a stream of values from this source
  * matching K with a collector).
  */
 @SuppressWarnings("unchecked")
 public void accept(CompositeRecordReader.JoinCollector i, K key)
     throws IOException, InterruptedException {
   vjoin.clear();
   if (key() != null && 0 == cmp.compare(key, key())) {
     do {
       vjoin.add(value);
     } while (next() && 0 == cmp.compare(key, key()));
   }
   i.add(id, vjoin);
 }