### Question:
WritableGroupedTableType extends PGroupedTableType<K, V> { @Override public Pair<K, Iterable<V>> getDetachedValue(Pair<K, Iterable<V>> value) { return PTables.getGroupedDetachedValue(this, value); } WritableGroupedTableType(WritableTableType<K, V> tableType); @Override Class<Pair<K, Iterable<V>>> getTypeClass(); @Override Converter getGroupingConverter(); @Override MapFn getInputMapFn(); @Override MapFn getOutputMapFn(); @Override Pair<K, Iterable<V>> getDetachedValue(Pair<K, Iterable<V>> value); @Override void configureShuffle(Job job, GroupingOptions options);  }### Answer:
@Test public void testGetDetachedValue() { Integer integerValue = 42; Text textValue = new Text("forty-two"); Iterable<Text> inputTextIterable = Lists.newArrayList(textValue); Pair<Integer, Iterable<Text>> pair = Pair.of(integerValue, inputTextIterable); PGroupedTableType<Integer, Text> groupedTableType = Writables.tableOf(Writables.ints(), Writables.writables(Text.class)) .getGroupedTableType(); Pair<Integer, Iterable<Text>> detachedPair = groupedTableType.getDetachedValue(pair); assertSame(integerValue, detachedPair.first()); List<Text> textList = Lists.newArrayList(detachedPair.second()); assertEquals(inputTextIterable, textList); assertNotSame(textValue, textList.get(0)); }