method match_case_aux =
fun f ->
function
| Ast.McNil _ -> ()
| Ast.McAnt (_, s) -> o#anti f s
| Ast.McOr (_, a1, a2) ->
pp f "%a%a" o#match_case_aux a1
o#unset_first_match_case#match_case_aux a2
| Ast.McArr (_, p, (Ast.ExNil _), e) ->
let () = if first_match_case then () else pp f "@ | "
in
pp f "@[<2>%a@ ->@ %a@]" o#patt p o#under_pipe#expr
e
| Ast.McArr (_, p, w, e) ->
let () = if first_match_case then () else pp f "@ | "
in
pp f "@[<2>%a@ when@ %a@ ->@ %a@]" o#patt p
o#under_pipe#expr w o#under_pipe#expr e