private List<Object> unwrap(List<Object> values) {
    if (values == null) {
      return null;
    }
    unwrapped.clear();
    for (int pos = 0; pos < valueIndex.length; pos++) {
      int index = valueIndex[pos];
      if (index >= 0) {
        if (currentKey == null) {
          unwrapped.add(null);
        } else if (converters[pos] != null) {
          unwrapped.add(converters[pos].convert(currentKey[index]));
        } else {
          unwrapped.add(currentKey[index]);
        }
      } else {
        unwrapped.add(values.get(-index - 1));
      }
    }
    if (tagged) {

      // Append filter tag.
      final int size = values.size();
      if (size == 0) {
        unwrapped.add(ALL_ALIAS_FILTER_SHORT_WRITABLE);
      } else {
        unwrapped.add(values.get(size - 1));
      }
    }
    return unwrapped;
  }
Unwraps values from current key with valueIndex in mapjoin desc
ql/src/java/org/apache/hadoop/hive/ql/exec/persistence/UnwrapRowContainer.java