pub fn choose_right_mpst_session_a_to_all<'a, S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>(
    s: ShortSessionMpstAtoAll<S0, S1, S2, S3, S4, S5, R0, R1, R2, R3, R4, R5>,
) -> SessionMpst<S4, S5, R5, RoleA<RoleEnd>>
where
    S0: Session + 'a,
    S1: Session + 'a,
    S2: Session + 'a,
    S3: Session + 'a,
    S4: Session + 'a,
    S5: Session + 'a,
    R0: Role + 'a,
    R0: Role + 'a,
    R1: Role + 'a,
    R2: Role + 'a,
    R3: Role + 'a,
    R4: Role + 'a,
    R5: Role + 'a,
{
    choose_mpst_a!(
        S4,
        S5,
        S1,
        R1,
        R3,
        R5,
        RoleBDual,
        RoleCDual,
        RoleA,
        s,
        Either::Right,
        next_a_to_all
    )
}
/// Given a choice from A, to other processes, between two `SessionMpst`, choose the second option for each.
///
/// A 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 B to C on left branch
/// * S1: dual session from B to C on right branch
/// * S2: session from A to B on left branch
/// * S3: session from A to C on left branch
/// * S4: session from A to B on right branch
/// * S5: session from A to C on right branch
///
/// * R0: dual stack of B on left branch
/// * R1: dual stack of B on right branch
/// * R2: dual stack of C on left branch
/// * R3: dual stack of C on right branch
/// * R4: stack of A on left branch
/// * R5: stack of A on right branch
Given a choice from A, to other processes, between two `SessionMpst`, choose the second option for each.
A has to encapsulate all possible `SessionMpst` for each other role.




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