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,
Row1: Send + 'static,
Row2: Send + 'static,
Row1: ToRow<Row = Row2>,
N: ContextLens<C1, ExternalChoice<Row1>, B, Target = C2>,
M: Prism<Row2, Elem = B>,