class KvCoder extends StructuredCoder<KV<K, V>> {

  @Override
  public TypeDescriptor<KV<K, V>> getEncodedTypeDescriptor() {
    return new TypeDescriptor<KV<K, V>>() {}.where(
            new TypeParameter<K>() {}, keyCoder.getEncodedTypeDescriptor())
        .where(new TypeParameter<V>() {}, valueCoder.getEncodedTypeDescriptor());
  }

  private  KvCoder(Coder<K> keyCoder, Coder<V> valueCoder);

}