code: private void joinAndCollect(Object[] tags, ResetableIterator[] values,
                                Object key, OutputCollector output, Reporter reporter)
      throws IOException {
      if (values.length < 1) {
        return;
      }
      Object[] partialList = new Object[values.length];
      joinAndCollect(tags, values, 0, partialList, key, output, reporter);
    }
docs: join the list of the value lists, and collect the results.
  
  @param tags
  a list of input tags
  @param values
  a list of value lists, each corresponding to one input source
  @param key
  @param output
  @throws IOException