let rec print_marking_short fmt = function
      Unprocessed ->
        Format.fprintf fmt "@[Unprocessed@]"
    | Processed_Covered md
    | Processed_Uncovered md
    | Processed_Was_Covered_To_Reprocess md ->
        Format.fprintf fmt "@[" ;
        Region.print fmt md.region ;
        Format.fprintf fmt "@]"
  
  and print_node_data fmt nd =
    Format.fprintf fmt "@[Data(@[id=%d;@ kind=" nd.id ;
    (match nd.kind with
      Node -> Format.fprintf fmt "Node"
    | Entry _ -> Format.fprintf fmt "Entry"
    | Exit _ -> Format.fprintf fmt "Exit");
    Format.fprintf fmt ";@ mark=";
    print_marking fmt nd.mark;
    (*print_marking fmt nd.mark ;*)
    Format.fprintf fmt "@])@]"

  and print_option f fmt n =
    match n with
      None -> Format.fprintf fmt "NONE"
    | Some v -> f v

  and print_node fmt n =
    Format.fprintf fmt "@[Node(@[edge=";
    (match Tree.get_parent_edge n with
      None -> Format.fprintf fmt "NONE"
    | Some eg ->
        (match Tree.get_edge_label eg with
        | PathEdge v -> Operation.print fmt v
        | SummaryEdge {n_out = n_out} ->
            Format.fprintf fmt "SUMMARY ";
            print_node fmt n_out));
    Format.fprintf fmt ",@,data=";
    print_node_data fmt (Tree.get_node_label n);
    Format.fprintf fmt "@])@]"