method class_sig_item =
                  fun f csg ->
                    let () = o#node f csg Ast.loc_of_class_sig_item
                    in
                      match csg with
                      | Ast.CgNil _ -> ()
                      | Ast.CgSem (_, csg, (Ast.CgNil _)) |
                          Ast.CgSem (_, (Ast.CgNil _), csg) ->
                          o#class_sig_item f csg
                      | Ast.CgSem (_, csg1, csg2) ->
                          (o#class_sig_item f csg1;
                           cut f;
                           o#class_sig_item f csg2)
                      | Ast.CgCtr (_, t1, t2) ->
                          pp f "@[<2>constraint@ %a =@ %a%(%)@]" o#ctyp t1
                            o#ctyp t2 semisep
                      | Ast.CgInh (_, ct) ->
                          pp f "@[<2>inherit@ %a%(%)@]" o#class_type ct
                            semisep
                      | Ast.CgMth (_, s, pr, t) ->
                          pp f "@[<2>method %a%a :@ %a%(%)@]" o#private_flag
                            pr o#var s o#ctyp t semisep
                      | Ast.CgVir (_, s, pr, t) ->
                          pp f "@[<2>method virtual %a%a :@ %a%(%)@]"
                            o#private_flag pr o#var s o#ctyp t semisep
                      | Ast.CgVal (_, s, mu, vi, t) ->
                          pp f "@[<2>%s %a%a%a :@ %a%(%)@]" o#value_val
                            o#mutable_flag mu o#virtual_flag vi o#var s
                            o#ctyp t semisep
                      | Ast.CgAnt (_, s) -> pp f "%a%(%)" o#anti s semisep