sig
  type 'v data_by_callstack =
      (Gui_types.gui_callstack * 'Gui_eval.gui_selection_data) list
  type 'v display_data_by_callstack =
      Gui_types.gui_loc ->
      Gui_types.gui_selection ->
      'Gui_callstacks_manager.data_by_callstack -> unit
  module type Input =
    sig
      type value
      val pretty_gui_res :
        Format.formatter -> value Gui_types.gui_res -> unit
      val equal_gui_res :
        value Gui_types.gui_res -> value Gui_types.gui_res -> bool
      val vars_in_gui_res : value Gui_types.gui_res -> Cil_types.varinfo list
      val pretty_gui_after :
        Format.formatter -> value Gui_types.gui_after -> unit
      val equal_gui_after :
        value Gui_types.gui_after -> value Gui_types.gui_after -> bool
      val make_data_for_lvalue :
        Cil_types.lval ->
        Gui_types.gui_loc -> value Gui_callstacks_manager.data_by_callstack
    end
  val create :
    Design.main_window_extension_points ->
    (module Gui_callstacks_manager.Input with type value = 'v) ->
    'Gui_callstacks_manager.display_data_by_callstack
  val reset : unit -> unit
  val clear_default : unit -> unit
  val focus_selection_tab : unit -> unit
end