let ___bisect_mark___ =
  let marks = Array.make 18 0 in
  let (hook_before, hook_after) = Bisect.Runtime.get_hooks ()
  in
    (Bisect.Runtime.init_with_array "expr_match.ml" marks false;
     fun idx ->
       (hook_before ();
        let curr = marks.(idx)
        in
          (marks.(idx) <- if curr < max_int then succ curr else curr;
           hook_after ())))
  
let () =
  match x with
  | 0 -> (___bisect_mark___ 0; print_endline "abc")
  | 1 -> (___bisect_mark___ 1; print_endline "def")
  | _ -> (___bisect_mark___ 2; print_endline "ghi")
  
let f =
  function
  | 0 -> (___bisect_mark___ 3; print_endline "abc")
  | 1 -> (___bisect_mark___ 4; print_endline "def")
  | _ -> (___bisect_mark___ 5; print_endline "ghi")
  
let () =
  match x with
  | 0 ->
      (___bisect_mark___ 7;
       print_string "abc";
       ___bisect_mark___ 6;
       print_newline ())
  | 1 ->
      (___bisect_mark___ 9;
       print_string "def";
       ___bisect_mark___ 8;
       print_newline ())
  | _ ->
      (___bisect_mark___ 11;
       print_string "ghi";
       ___bisect_mark___ 10;
       print_newline ())
  
let f =
  function
  | 0 ->
      (___bisect_mark___ 13;
       print_string "abc";
       ___bisect_mark___ 12;
       print_newline ())
  | 1 ->
      (___bisect_mark___ 15;
       print_string "def";
       ___bisect_mark___ 14;
       print_newline ())
  | _ ->
      (___bisect_mark___ 17;
       print_string "ghi";
       ___bisect_mark___ 16;
       print_newline ())
  

