pub fn choose<N, M, C1, C2, A, B, Row1, Row2>(
N,
M,
cont: PartialSession<C2, A>
) -> PartialSession<C1, A> where
C1: Context,
C2: Context,
A: Protocol,
B: Protocol,
Row2: RowCon + 'static + Send,
Row1: 'static + Send + ToRow<Row = Row2>,
N: ContextLens<C1, ExternalChoice<Row1>, B, Target = C2>,
M: Prism<Row2, Elem = B>,