sig
  class menu_shell_signals :
    [> Gtk.menu_shell ] Gtk.obj ->
    object ('a)
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method deactivate : callback:(unit -> unit) -> GtkSignal.id
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method notify_border_width : callback:(int -> unit) -> GtkSignal.id
      method notify_resize_mode :
        callback:(GtkEnums.resize_mode -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
    end
  class menu_item_signals :
    [> Gtk.menu_item ] Gtk.obj ->
    object ('a)
      method activate : callback:(unit -> unit) -> GtkSignal.id
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method notify_border_width : callback:(int -> unit) -> GtkSignal.id
      method notify_resize_mode :
        callback:(GtkEnums.resize_mode -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
    end
  class menu_item_skel :
    ([> Gtk.menu_item ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method activate : unit -> unit
      method add : GObj.widget -> unit
      method add_accelerator :
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list ->
        ?flags:Gtk.Tags.accel_flag list -> Gdk.keysym -> unit
      method all_children : GObj.widget list
      method app_paintable : bool
      method as_item : Gtk.menu_item Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : GObj.widget list
      method coerce : GObj.widget
      method composite_child : bool
      method deselect : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method get_submenu : GObj.widget option
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method receives_default : bool
      method remove : GObj.widget -> unit
      method remove_submenu : unit -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method select : unit -> unit
      method sensitive : bool
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_submenu : GMenu.menu -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
    end
  and menu_item :
    ([> Gtk.menu_item ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method activate : unit -> unit
      method add : GObj.widget -> unit
      method add_accelerator :
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list ->
        ?flags:Gtk.Tags.accel_flag list -> Gdk.keysym -> unit
      method all_children : GObj.widget list
      method app_paintable : bool
      method as_item : Gtk.menu_item Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : GObj.widget list
      method coerce : GObj.widget
      method composite_child : bool
      method connect : GMenu.menu_item_signals
      method deselect : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method get_submenu : GObj.widget option
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method receives_default : bool
      method remove : GObj.widget -> unit
      method remove_submenu : unit -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method select : unit -> unit
      method sensitive : bool
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_submenu : GMenu.menu -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
    end
  and menu :
    Gtk.menu Gtk.obj ->
    object
      val obj : Gtk.menu Gtk.obj
      method add : menu_item -> unit
      method all_children : menu_item list
      method app_paintable : bool
      method append : menu_item -> unit
      method as_menu : Gtk.menu Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : menu_item list
      method coerce : GObj.widget
      method composite_child : bool
      method connect : GMenu.menu_shell_signals
      method deactivate : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method insert : menu_item -> pos:int -> unit
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method popdown : unit -> unit
      method popup : button:int -> time:int32 -> unit
      method prepend : menu_item -> unit
      method receives_default : bool
      method remove : menu_item -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method sensitive : bool
      method set_accel_group : Gtk.accel_group -> unit
      method set_accel_path : string -> unit
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
      method private wrap : Gtk.widget Gtk.obj -> menu_item
    end
  val menu :
    ?accel_path:string ->
    ?border_width:int ->
    ?packing:(GMenu.menu -> unit) -> ?show:bool -> unit -> GMenu.menu
  val menu_item :
    ?use_mnemonic:bool ->
    ?label:string ->
    ?packing:(GMenu.menu_item -> unit) ->
    ?show:bool -> unit -> GMenu.menu_item
  val separator_item :
    ?packing:(GMenu.menu_item -> unit) ->
    ?show:bool -> unit -> GMenu.menu_item
  class check_menu_item_signals :
    [> Gtk.check_menu_item ] Gtk.obj ->
    object ('a)
      method activate : callback:(unit -> unit) -> GtkSignal.id
      method add : callback:(GObj.widget -> unit) -> GtkSignal.id
      method after : 'a
      method destroy : callback:(unit -> unit) -> GtkSignal.id
      method notify_border_width : callback:(int -> unit) -> GtkSignal.id
      method notify_resize_mode :
        callback:(GtkEnums.resize_mode -> unit) -> GtkSignal.id
      method remove : callback:(GObj.widget -> unit) -> GtkSignal.id
      method toggled : callback:(unit -> unit) -> GtkSignal.id
    end
  class check_menu_item :
    ([> Gtk.check_menu_item ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method activate : unit -> unit
      method active : bool
      method add : GObj.widget -> unit
      method add_accelerator :
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list ->
        ?flags:Gtk.Tags.accel_flag list -> Gdk.keysym -> unit
      method all_children : GObj.widget list
      method app_paintable : bool
      method as_item : Gtk.menu_item Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : GObj.widget list
      method coerce : GObj.widget
      method composite_child : bool
      method connect : GMenu.check_menu_item_signals
      method deselect : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method get_submenu : GObj.widget option
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method inconsistent : bool
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method receives_default : bool
      method remove : GObj.widget -> unit
      method remove_submenu : unit -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method select : unit -> unit
      method sensitive : bool
      method set_active : bool -> unit
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_inconsistent : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_submenu : menu -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method toggled : unit -> unit
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
    end
  val check_menu_item :
    ?label:string ->
    ?use_mnemonic:bool ->
    ?active:bool ->
    ?packing:(GMenu.menu_item -> unit) ->
    ?show:bool -> unit -> GMenu.check_menu_item
  class radio_menu_item :
    Gtk.radio_menu_item Gtk.obj ->
    object
      val obj : Gtk.radio_menu_item Gtk.obj
      method activate : unit -> unit
      method active : bool
      method add : GObj.widget -> unit
      method add_accelerator :
        group:Gtk.accel_group ->
        ?modi:Gdk.Tags.modifier list ->
        ?flags:Gtk.Tags.accel_flag list -> Gdk.keysym -> unit
      method all_children : GObj.widget list
      method app_paintable : bool
      method as_item : Gtk.menu_item Gtk.obj
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : GObj.widget list
      method coerce : GObj.widget
      method composite_child : bool
      method connect : check_menu_item_signals
      method deselect : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method get_submenu : GObj.widget option
      method group : Gtk.radio_menu_item Gtk.group
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method inconsistent : bool
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method receives_default : bool
      method remove : GObj.widget -> unit
      method remove_submenu : unit -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method select : unit -> unit
      method sensitive : bool
      method set_active : bool -> unit
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_group : Gtk.radio_menu_item Gtk.group -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_inconsistent : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_submenu : menu -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method toggled : unit -> unit
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
    end
  val radio_menu_item :
    ?group:Gtk.radio_menu_item Gtk.group ->
    ?label:string ->
    ?use_mnemonic:bool ->
    ?active:bool ->
    ?packing:(GMenu.menu_item -> unit) ->
    ?show:bool -> unit -> GMenu.radio_menu_item
  class menu_shell :
    ([> Gtk.menu_shell ] as 'a) Gtk.obj ->
    object
      val obj : 'Gtk.obj
      method add : menu_item -> unit
      method all_children : menu_item list
      method app_paintable : bool
      method append : menu_item -> unit
      method as_widget : Gtk.widget Gtk.obj
      method border_width : int
      method can_default : bool
      method can_focus : bool
      method children : menu_item list
      method coerce : GObj.widget
      method composite_child : bool
      method connect : GMenu.menu_shell_signals
      method deactivate : unit -> unit
      method destroy : unit -> unit
      method drag : GObj.drag_ops
      method event : GObj.event_ops
      method events : GdkEnums.event_mask list
      method expand : bool
      method focus : GContainer.focus
      method focus_on_click : bool
      method get_oid : int
      method halign : GtkEnums.align
      method has_default : bool
      method has_focus : bool
      method has_tooltip : bool
      method height_request : int
      method hexpand : bool
      method hexpand_set : bool
      method insert : menu_item -> pos:int -> unit
      method is_focus : bool
      method margin : int
      method margin_bottom : int
      method margin_end : int
      method margin_left : int
      method margin_right : int
      method margin_start : int
      method margin_top : int
      method misc : GObj.misc_ops
      method name : string
      method no_show_all : bool
      method opacity : float
      method parent : Gtk.container Gtk.obj option
      method prepend : menu_item -> unit
      method receives_default : bool
      method remove : menu_item -> unit
      method resize_mode : Gtk.Tags.resize_mode
      method scale_factor : int
      method sensitive : bool
      method set_app_paintable : bool -> unit
      method set_border_width : int -> unit
      method set_can_default : bool -> unit
      method set_can_focus : bool -> unit
      method set_events : GdkEnums.event_mask list -> unit
      method set_expand : bool -> unit
      method set_focus_on_click : bool -> unit
      method set_halign : GtkEnums.align -> unit
      method set_has_default : bool -> unit
      method set_has_focus : bool -> unit
      method set_has_tooltip : bool -> unit
      method set_height_request : int -> unit
      method set_hexpand : bool -> unit
      method set_hexpand_set : bool -> unit
      method set_is_focus : bool -> unit
      method set_margin : int -> unit
      method set_margin_bottom : int -> unit
      method set_margin_end : int -> unit
      method set_margin_left : int -> unit
      method set_margin_right : int -> unit
      method set_margin_start : int -> unit
      method set_margin_top : int -> unit
      method set_name : string -> unit
      method set_no_show_all : bool -> unit
      method set_opacity : float -> unit
      method set_parent : Gtk.container Gtk.obj option -> unit
      method set_receives_default : bool -> unit
      method set_resize_mode : Gtk.Tags.resize_mode -> unit
      method set_sensitive : bool -> unit
      method set_style : Gtk.style -> unit
      method set_tooltip_markup : string -> unit
      method set_tooltip_text : string -> unit
      method set_valign : GtkEnums.align -> unit
      method set_vexpand : bool -> unit
      method set_vexpand_set : bool -> unit
      method set_visible : bool -> unit
      method set_width_request : int -> unit
      method style : Gtk.style
      method tooltip_markup : string
      method tooltip_text : string
      method valign : GtkEnums.align
      method vexpand : bool
      method vexpand_set : bool
      method visible : bool
      method width_request : int
      method private wrap : Gtk.widget Gtk.obj -> menu_item
    end
  val menu_bar :
    ?border_width:int ->
    ?width:int ->
    ?height:int ->
    ?packing:(GObj.widget -> unit) -> ?show:bool -> unit -> GMenu.menu_shell
  class ['a] factory :
    ?accel_group:Gtk.accel_group ->
    ?accel_path:string ->
    ?accel_modi:Gdk.Tags.modifier list ->
    ?accel_flags:Gtk.Tags.accel_flag list ->
    '->
    object
      constraint 'a = #GMenu.menu_shell
      val flags : Gtk.Tags.accel_flag list
      val group : Gtk.accel_group
      val m : Gdk.Tags.modifier list
      val menu_shell : 'a
      method accel_group : Gtk.accel_group
      method add_check_item :
        ?active:bool ->
        ?key:Gdk.keysym ->
        ?callback:(bool -> unit) -> string -> GMenu.check_menu_item
      method add_item :
        ?key:Gdk.keysym ->
        ?callback:(unit -> unit) ->
        ?submenu:GMenu.menu -> string -> GMenu.menu_item
      method add_radio_item :
        ?group:Gtk.radio_menu_item Gtk.group ->
        ?active:bool ->
        ?key:Gdk.keysym ->
        ?callback:(bool -> unit) -> string -> GMenu.radio_menu_item
      method add_separator : unit -> GMenu.menu_item
      method add_submenu : ?key:Gdk.keysym -> string -> GMenu.menu
      method private bind :
        ?modi:Gdk.Tags.modifier list ->
        ?key:Gdk.keysym ->
        ?callback:(unit -> unit) -> GMenu.menu_item -> string -> unit
      method menu : 'a
    end
end