sig
  type kind = Info | Warning | Error
  val string_of_kind : Report.kind -> string
  type element = private {
    kind : Report.kind;
    category : CategoryName.t;
    check : CheckName.t;
    filename : string;
    line : int;
    column : int option;
    message : string;
  }
  type t
  val empty : Report.t
  val statistics : Report.t -> int * int * int
  val add :
    Report.kind ->
    CategoryName.t ->
    CheckName.t ->
    string -> int -> int option -> string -> Report.t -> Report.t
  val concat : Report.t -> Report.t -> Report.t
  val concat_list : Report.t list -> Report.t
  val filter : bool -> bool -> bool -> Ignore.t list -> Report.t -> Report.t
  val iter : (Report.element -> unit) -> Report.t -> unit
  val map : (Report.element -> 'a) -> Report.t -> 'a list
  val fold : (Report.element -> '-> 'a) -> '-> Report.t -> 'a
  val split_by_file : Report.t -> (string * Report.t) list
end