pub fn send_channel_to_session<N, C1, C2, C3, C4, C5, A, B>(
    n: N,
    session: PartialSession<(), ReceiveChannel<A, End>>,
    cont: PartialSession<C5, B>
) -> PartialSession<C1, B> where
    C1: Context + AppendContext<(ReceiveChannel<A, End>, ()), Appended = C2>,
    C2: Context,
    C3: Context,
    C4: Context,
    C5: Context,
    A: Protocol,
    B: Protocol,
    N: ContextLens<C2, A, Empty, Target = C3>,
    <C1 as Context>::Length: ContextLens<C3, ReceiveChannel<A, End>, End>,
    <C1 as Context>::Length: ContextLens<C4, End, Empty>,
    <<C1 as Context>::Length as ContextLens<C3, ReceiveChannel<A, End>, End>>::Target == C4,
    <<C1 as Context>::Length as ContextLens<C4, End, Empty>>::Target == C5,