sig
  type shallow_span = { class_name : string; text : string; }
  type column_fragment = Text of string | Elt of Columns.shallow_span
  type column = {
    content : Columns.column_fragment list;
    class_name : string option;
    should_filter : bool;
  }
  type header_spec = {
    header : Columns.column;
    should_filter_header : bool;
  }
  val column_content_string : Columns.column_fragment list -> string
  val is_upset : Columns.column list -> bool
  val entry : ?filterable:bool -> Entry.t -> Columns.column
  val just_country : string -> Columns.column
  val as_header : Columns.column -> Columns.column
  val in_round : int -> Columns.column
  val advanced : Columns.column
  val with_a_bye : Columns.column
  val defeated : winner:Entry.t -> Entry.t -> Columns.column
  val was_defeated_by : winner:Entry.t -> Entry.t -> Columns.column
  val will_face : Columns.column
  val to_be_decided : Columns.column
  val plain : should_filter:bool -> string -> Columns.column
end