### Question:
AvroGroupedTableType extends PGroupedTableType<K, V> { @Override public Pair<K, Iterable<V>> getDetachedValue(Pair<K, Iterable<V>> value) { return PTables.getGroupedDetachedValue(this, value); } AvroGroupedTableType(AvroTableType<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; Person person = new Person(); person.setName("John Doe"); person.setAge(42); person.setSiblingnames(Lists.<CharSequence> newArrayList()); Iterable<Person> inputPersonIterable = Lists.newArrayList(person); Pair<Integer, Iterable<Person>> pair = Pair.of(integerValue, inputPersonIterable); PGroupedTableType<Integer, Person> groupedTableType = Avros.tableOf(Avros.ints(), Avros.reflects(Person.class)).getGroupedTableType(); Pair<Integer, Iterable<Person>> detachedPair = groupedTableType.getDetachedValue(pair); assertSame(integerValue, detachedPair.first()); List<Person> personList = Lists.newArrayList(detachedPair.second()); assertEquals(inputPersonIterable, personList); assertNotSame(person, personList.get(0)); }