header

fun <T : Any> header(    key: Metadata.Key<T>,     optional: Boolean = false,     value: Function<Session, T?>): Self
inline fun <T : Any> header(    key: Metadata.Key<T>,     optional: Boolean = false,     crossinline value: (Session) -> T?): Self
inline fun <T : Message, Builder : Message.Builder> header(    key: Metadata.Key<T>,     optional: Boolean = false,     crossinline newBuilder: () -> Builder,     crossinline f: Builder.(Session) -> T?): Self
fun <T : Any> header(key: Metadata.Key<T>, value: T): Self