### Question:
WritableTableType implements PTableType<K, V> { @Override public Pair<K, V> getDetachedValue(Pair<K, V> value) { return PTables.getDetachedValue(this, value); } WritableTableType(WritableType<K, Writable> keyType,
      WritableType<V, Writable> valueType); @Override Class<Pair<K, V>> getTypeClass(); @Override List<PType> getSubTypes(); @Override MapFn getInputMapFn(); @Override MapFn getOutputMapFn(); @Override Converter getConverter(); @Override PTypeFamily getFamily(); PType<K> getKeyType(); PType<V> getValueType(); @Override PGroupedTableType<K, V> getGroupedTableType(); @Override SourceTarget<Pair<K, V>> getDefaultFileSource(Path path); @Override Pair<K, V> getDetachedValue(Pair<K, V> value); @Override boolean equals(Object obj); @Override int hashCode();  }### Answer:
@Test public void testGetDetachedValue() { Integer integerValue = 42; Text textValue = new Text("forty-two"); Pair<Integer, Text> pair = Pair.of(integerValue, textValue); WritableTableType<Integer, Text> tableType = Writables.tableOf(Writables.ints(), Writables.writables(Text.class)); Pair<Integer, Text> detachedPair = tableType.getDetachedValue(pair); assertSame(integerValue, detachedPair.first()); assertEquals(textValue, detachedPair.second()); assertNotSame(textValue, detachedPair.second()); }