pub fn choose_right_mpst_session_c_to_all<'a, S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>(
    s: ShortSessionMpstCtoAll<S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>,
) -> SessionMpst<S4, S5, R5, RoleC<RoleEnd>>
where
    S0: Session + 'a,
    S1: Session + 'a,
    S2: Session + 'a,
    S3: Session + 'a,
    S4: Session + 'a,
    S5: Session + 'a,
    R0: Role + 'a,
    R1: Role + 'a,
    R2: Role + 'a,
    R3: Role + 'a,
    R4: Role + 'a,
    R5: Role + 'a,
{
    choose_mpst_c!(
        S4,
        S5,
        S1,
        R1,
        R3,
        R5,
        RoleADual,
        RoleBDual,
        RoleC,
        s,
        Either::Right,
        next_c_to_all
    )
}
/// Given a choice from C, to other processes, between two `SessionMpst`, choose the second option for each.
///
/// C has to encapsulate all possible `SessionMpst` for each other role.
/// This function creates the 6 new binary `Session`, the 3 new `Role` related to each second option then the related `SessionMpst`.
/// It then sends those options to the related processes.
///
/// * S0: dual session from A to B on left branch
/// * S1: dual session from A to B on right branch
/// * S2: session from C to A on left branch
/// * S3: session from C to B on left branch
/// * S4: session from C to A on right branch
/// * S5: session from C to B on right branch
///
/// * R0: dual stack of A on left branch
/// * R1: dual stack of A on right branch
/// * R2: dual stack of B on left branch
/// * R3: dual stack of B on right branch
/// * R4: stack of C on left branch
/// * R5: stack of C on right branch
Given a choice from C, to other processes, between two `SessionMpst`, choose the second option for each.
C has to encapsulate all possible `SessionMpst` for each other role.




Given a choice from C to other processes between two ` SessionMpst ` choose the second option for each . C has to encapsulate all possible ` SessionMpst ` for each other role .
pub fn choose_right_mpst_session_c_to_all<'a, S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>(
    s: ShortSessionMpstCtoAll<S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>,
) -> SessionMpst<S4, S5, R5, RoleC<RoleEnd>>
where
    S0: Session + 'a,
    S1: Session + 'a,
    S2: Session + 'a,
    S3: Session + 'a,
    S4: Session + 'a,
    S5: Session + 'a,
    R0: Role + 'a,
    R1: Role + 'a,
    R2: Role + 'a,
    R3: Role + 'a,
    R4: Role + 'a,
    R5: Role + 'a,
{
    choose_mpst_c!(
        S4,
        S5,
        S1,
        R1,
        R3,
        R5,
        RoleADual,
        RoleBDual,
        RoleC,
        s,
        Either::Right,
        next_c_to_all
    )
}
pub fn choose_right_mpst_session_c_to_all < ' a , S0 , S1 , S2 , S3 , S4 , S5 , R0 , R1 , R2 , R3 , R4 , R5 > ( s : ShortSessionMpstCtoAll < S0 , S1 , S2 , S3 , S4 , S5 , R0 , R1 , R2 , R3 , R4 , R5 > , ) -> SessionMpst < S4 , S5 , R5 , RoleC < RoleEnd > > where S0 : Session + ' a , S1 : Session + ' a , S2 : Session + ' a , S3 : Session + ' a , S4 : Session + ' a , S5 : Session + ' a , R0 : Role + ' a , R1 : Role + ' a , R2 : Role + ' a , R3 : Role + ' a , R4 : Role + ' a , R5 : Role + ' a , { choose_mpst_c ! ( S4 S5 S1 R1 R3 R5 RoleADual RoleBDual RoleC s Either Right next_c_to_all ) }
Given a choice from C, to other processes, between two `SessionMpst`, choose the second option for each.
Given a choice from C to other processes between two ` SessionMpst ` choose the second option for each .
s
ShortSessionMpstCtoAll<S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>
s
ShortSessionMpstCtoAll<S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>