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