/// <summary>
 /// Sets an Avro deserializer for keys.
 /// </summary>
 /// <typeparam name="TKey">
 /// The type of key to be deserialized.
 /// </typeparam>
 /// <typeparam name="TValue">
 /// The type of value to be deserialized.
 /// </typeparam>
 /// <param name="consumerBuilder">
 /// A <see cref="ConsumerBuilder{TKey, TValue}" /> instance to be configured.
 /// </param>
 /// <param name="deserializerBuilder">
 /// A deserializer builder.
 /// </param>
 /// <param name="subject">
 /// The subject of the schema that should be used to deserialize keys.
 /// </param>
 /// <param name="version">
 /// The version of the subject to be resolved.
 /// </param>
 /// <returns>
 /// <paramref name="consumerBuilder" /> with an Avro deserializer configured for
 /// <typeparamref name="TKey" />.
 /// </returns>
 public static async Task <ConsumerBuilder <TKey, TValue> > SetAvroKeyDeserializer <TKey, TValue>(
     this ConsumerBuilder <TKey, TValue> consumerBuilder,
     ISchemaRegistryDeserializerBuilder deserializerBuilder,
     string subject,
     int version)
 => consumerBuilder.SetKeyDeserializer(
     await deserializerBuilder.Build <TKey>(subject, version).ConfigureAwait(false));
 /// <summary>
 /// Sets an Avro deserializer for values.
 /// </summary>
 /// <typeparam name="TKey">
 /// The type of key to be deserialized.
 /// </typeparam>
 /// <typeparam name="TValue">
 /// The type of value to be deserialized.
 /// </typeparam>
 /// <param name="consumerBuilder">
 /// A <see cref="ConsumerBuilder{TKey, TValue}" /> instance to be configured.
 /// </param>
 /// <param name="deserializerBuilder">
 /// A deserializer builder.
 /// </param>
 /// <param name="subject">
 /// The subject of the schema that should be used to deserialize values. The latest version
 /// of the subject will be resolved.
 /// </param>
 /// <param name="tombstoneBehavior">
 /// How the deserializer should handle tombstone records.
 /// </param>
 /// <returns>
 /// <paramref name="consumerBuilder" /> with an Avro deserializer configured for
 /// <typeparamref name="TValue" />.
 /// </returns>
 public static async Task <ConsumerBuilder <TKey, TValue> > SetAvroValueDeserializer <TKey, TValue>(
     this ConsumerBuilder <TKey, TValue> consumerBuilder,
     ISchemaRegistryDeserializerBuilder deserializerBuilder,
     string subject,
     TombstoneBehavior tombstoneBehavior = TombstoneBehavior.None)
 => consumerBuilder.SetValueDeserializer(
     await deserializerBuilder.Build <TValue>(subject, tombstoneBehavior).ConfigureAwait(false));
 /// <summary>
 /// Sets an Avro deserializer for keys.
 /// </summary>
 /// <typeparam name="TKey">
 /// The type of key to be deserialized.
 /// </typeparam>
 /// <typeparam name="TValue">
 /// The type of value to be deserialized.
 /// </typeparam>
 /// <param name="consumerBuilder">
 /// A <see cref="ConsumerBuilder{TKey, TValue}" /> instance to be configured.
 /// </param>
 /// <param name="deserializerBuilder">
 /// A deserializer builder.
 /// </param>
 /// <param name="id">
 /// The ID of the schema that should be used to deserialize keys.
 /// </param>
 /// <returns>
 /// <paramref name="consumerBuilder" /> with an Avro deserializer configured for
 /// <typeparamref name="TKey" />.
 /// </returns>
 public static async Task <ConsumerBuilder <TKey, TValue> > SetAvroKeyDeserializer <TKey, TValue>(
     this ConsumerBuilder <TKey, TValue> consumerBuilder,
     ISchemaRegistryDeserializerBuilder deserializerBuilder,
     int id)
 => consumerBuilder.SetKeyDeserializer(
     await deserializerBuilder.Build <TKey>(id).ConfigureAwait(false));