b_execute_statement2(case(Expression,Cases,Else), _, LocalState, InState, OutState,WF,case(Nr,Path),OR) :- !,
     % According to the AtelierB handbook the cases must be distinct one-by-one; Schneider's book does not seem to require that
     % ProB will at the moment allow multiple entries in which case CASE is non-deterministic
     % Atelier-B will actually only allow literal integers, booleans, enumerated set values as cases !
       b_compute_expression(Expression,LocalState,InState,EValue,WF),
       b_compute_cases(Cases,LocalState,InState,CompCases,AllEitherValues,WF),
       ground_det_wait_flag(WF),
       ( nth1(Nr, CompCases, comp_case_or(ListOfValues, Body)),
         member(EitherValue,ListOfValues),
         equal_object_wf(EValue,EitherValue,case_statement,WF),
         ground_det_wait_flag(WF),
         b_execute_inner_statement(Body,LocalState,InState,OutState,WF,Path,OR)
       ; b_not_member_of_value_lists(AllEitherValues,EValue,WF),
         ground_det_wait_flag(WF),
         % print_message(else_case(Body2)),
         Nr=else,
         b_execute_inner_statement(Else,LocalState,InState,OutState,WF,Path,OR)
     ).