PType[] ptypes = new PType[1 + rest.length];
ptypes[0] = first.getValueType();
for (int i = 0; i < rest.length; i++) {
ptypes[i + 1] = rest[i].getValueType();
}
PType<Union> itype = ptf.unionOf(ptypes);
PTable<K, Union> firstInter = first.mapValues("coGroupTag1",
new CogroupFn(0), itype);
PTable<K, Union>[] inter = new PTable[rest.length];
for (int i = 0; i < rest.length; i++) {