pub fn acquire_shared_session<C, F, A>(
    shared: SharedChannel<LinearToShared<F>>,
    cont1: impl FnOnce(C::Length) -> PartialSession<C::Appended, A> + Send + 'static
) -> PartialSession<C, A> where
    C: Context,
    F: Protocol,
    A: Protocol,
    F::Applied: Protocol,
    F: SharedRecApp<SharedToLinear<LinearToShared<F>>>,
    C: AppendContext<(F::Applied, ())>,