sig
  module XPCOM :
    sig
      type class_
      type 'a interface
      type result
      class type supports =
        object method _QueryInterface : 'Mozilla.XPCOM.interface -> 'end
      class type supportsWeakReference = object  end
      class type iDRef =
        object method equals : 'Mozilla.XPCOM.interface -> bool end
      class type ['a] out =
        object method _get_value : 'method _set_value : '-> unit end
      class type inputStream = object  end
      class type appStartup = object method quit : int -> unit end
      class type badCertListener = object  end
      class type bufferedInputStream =
        object method init : #Mozilla.XPCOM.inputStream -> int -> unit end
      class type uRI =
        object
          method _get_host : string
          method _get_spec : string
          method _set_host : string -> unit
          method _set_spec : string -> unit
          method resolve : string -> string
        end
      class type interfaceRequestor =
        object
          method _QueryInterface : 'a interface -> 'a
          method getInterface : #Mozilla.XPCOM.iDRef -> 'b
        end
      class type channel =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_URI : Mozilla.XPCOM.uRI
          method _set_notificationCallbacks :
            #Mozilla.XPCOM.interfaceRequestor -> unit
        end
      class type consoleService =
        object method logStringMessage : string -> unit end
      class type cookie =
        object
          method _get_host : string
          method _get_name : string
          method _get_path : string
          method _get_value : string
        end
      class type ['a] simpleEnumerator =
        object method getNext : 'method hasMoreElements : bool end
      class type cookieManager =
        object
          method _get_enumerator :
            Mozilla.XPCOM.supports Mozilla.XPCOM.simpleEnumerator
          method remove : string -> string -> string -> bool -> unit
        end
      class type dOMNode =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_childNodes : Mozilla.XPCOM.dOMNode array
          method _get_firstChild : Mozilla.XPCOM.dOMNode
          method _get_lastChild : Mozilla.XPCOM.dOMNode
          method _get_nextSibling : Mozilla.XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : Mozilla.XPCOM.dOMNode
          method _get_previousSibling : Mozilla.XPCOM.dOMNode
        end
      class type dOMElement =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_childNodes : dOMNode array
          method _get_firstChild : dOMNode
          method _get_lastChild : dOMNode
          method _get_nextSibling : dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : dOMNode
          method _get_previousSibling : dOMNode
          method getAttribute : string -> string
          method setAttribute : string -> string -> unit
        end
      class type dOMEvent =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_bubbles : bool
          method _get_cancelable : bool
          method _get_eventPhase : int
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type dOMEventListener =
        object
          method _QueryInterface : 'a interface -> 'a
          method handleEvent : #Mozilla.XPCOM.dOMEvent -> unit
        end
      class type dOMEventTarget =
        object
          method _QueryInterface : 'a interface -> 'a
          method addEventListener :
            string -> #Mozilla.XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#Mozilla.XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #Mozilla.XPCOM.dOMEvent -> bool
          method removeEventListener :
            string -> #Mozilla.XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#Mozilla.XPCOM.dOMEvent -> unit) -> bool -> unit
        end
      class type dOMAbstractView =
        object method _QueryInterface : 'a interface -> 'end
      class type dOMDocumentView =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_defaultView : Mozilla.XPCOM.dOMAbstractView
        end
      class type dOMUIEvent =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_bubbles : bool
          method _get_cancelable : bool
          method _get_eventPhase : int
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method initUIEvent :
            string ->
            bool -> bool -> #Mozilla.XPCOM.dOMAbstractView -> int -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type dOMKeyEvent =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_bubbles : bool
          method _get_cancelable : bool
          method _get_eventPhase : int
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method initKeyEvent :
            string ->
            bool ->
            bool ->
            #Mozilla.XPCOM.dOMAbstractView ->
            bool -> bool -> bool -> bool -> int -> int
          method initUIEvent :
            string -> bool -> bool -> #dOMAbstractView -> int -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type dOMMouseEvent =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_altKey : bool
          method _get_bubbles : bool
          method _get_button : int
          method _get_cancelable : bool
          method _get_clientX : int
          method _get_clientY : int
          method _get_ctrlKey : bool
          method _get_eventPhase : int
          method _get_metaKey : bool
          method _get_relatedTarget : #Mozilla.XPCOM.dOMEventTarget
          method _get_screenX : int
          method _get_screenY : int
          method _get_shiftKey : bool
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method initMouseEvent :
            string ->
            bool ->
            bool ->
            #Mozilla.XPCOM.dOMAbstractView ->
            int ->
            int ->
            int ->
            int ->
            int ->
            bool ->
            bool ->
            bool -> bool -> int -> #Mozilla.XPCOM.dOMEventTarget -> unit
          method initUIEvent :
            string -> bool -> bool -> #dOMAbstractView -> int -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type dOMDocument =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_childNodes : dOMNode array
          method _get_firstChild : dOMNode
          method _get_lastChild : dOMNode
          method _get_nextSibling : dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : dOMNode
          method _get_previousSibling : dOMNode
          method getElementById : string -> #Mozilla.XPCOM.dOMElement
        end
      class type dOMXMLDocument =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_childNodes : dOMNode array
          method _get_firstChild : dOMNode
          method _get_lastChild : dOMNode
          method _get_nextSibling : dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : dOMNode
          method _get_previousSibling : dOMNode
          method getElementById : string -> #dOMElement
        end
      class type dOMLocation =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_href : string
          method _set_href : string -> unit
        end
      class type dOMNSDocument =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_location : Mozilla.XPCOM.dOMLocation
        end
      class type dOMSerializer =
        object
          method serializeToString : #Mozilla.XPCOM.dOMNode -> string
        end
      class type dOMDocumentEvent =
        object
          method _QueryInterface : 'a interface -> 'a
          method createEvent : string -> #Mozilla.XPCOM.dOMEvent
        end
      class type dOMWindow =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_document : Mozilla.XPCOM.dOMDocument
        end
      class type dOMWindow2 =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_document : dOMDocument
        end
      class type dOMWindowInternal =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_document : dOMDocument
          method _get_location : string
          method _set_location : string -> unit
          method alert : string -> unit
          method back : unit
          method close : unit
        end
      class type dOMJSWindow =
        object
          method _QueryInterface : 'a interface -> 'a
          method clearInterval : int -> unit
          method clearTimeout : int -> unit
          method openDialog : string -> string -> string -> unit
          method setInterval : (unit -> unit) -> float -> int
          method setTimeout : (unit -> unit) -> float -> int
        end
      class type dOMXPathNSResolver =
        object
          method _QueryInterface : 'a interface -> 'a
          method lookupNamespaceURI : string -> string
        end
      class type dOMXPathEvaluator =
        object
          method _QueryInterface : 'a interface -> 'a
          method evaluate :
            string ->
            #Mozilla.XPCOM.dOMNode ->
            #Mozilla.XPCOM.dOMXPathNSResolver ->
            int -> #Mozilla.XPCOM.supports -> #Mozilla.XPCOM.supports
        end
      class type dOMXPathResult =
        object
          method _get_ANY_TYPE : int
          method _get_FIRST_ORDERED_NODE_TYPE : int
          method _get_ORDERED_NODE_ITERATOR_TYPE : int
          method _get_singleNodeValue : #Mozilla.XPCOM.dOMNode
          method iterateNext : #Mozilla.XPCOM.dOMNode
        end
      class type externalProtocolService =
        object
          method _QueryInterface : 'a interface -> 'a
          method externalProtocolHandlerExists : string -> bool
          method getApplicationDescription : string -> string
          method isExposedProtocol : string -> bool
          method loadURI :
            Mozilla.XPCOM.uRI -> Mozilla.XPCOM.supports -> unit
          method loadUrl : Mozilla.XPCOM.uRI -> unit
        end
      class type file =
        object
          method append : string -> unit
          method remove : bool -> unit
        end
      class type fileInputStream =
        object
          method init : #Mozilla.XPCOM.file -> int -> int -> int -> unit
        end
      class type outputStream =
        object method close : unit method write : string -> int -> unit end
      class type fileOutputStream =
        object
          method close : unit
          method init : #Mozilla.XPCOM.file -> int -> int -> int -> unit
          method write : string -> int -> unit
        end
      class type httpChannel =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_URI : uRI
          method _set_notificationCallbacks : #interfaceRequestor -> unit
          method setRequestHeader : string -> string -> bool -> unit
        end
      class type request =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_name : string
          method _get_status : int
          method cancel : int -> unit
          method isPending : bool
          method resume : unit
          method suspend : unit
        end
      class type requestObserver =
        object
          method _QueryInterface : 'a interface -> 'a
          method onStartRequest :
            #Mozilla.XPCOM.request -> #Mozilla.XPCOM.supports -> unit
          method onStopRequest :
            #Mozilla.XPCOM.request -> #Mozilla.XPCOM.supports -> int -> unit
        end
      class type streamListener =
        object
          method _QueryInterface : 'a interface -> 'a
          method onDataAvailable :
            #Mozilla.XPCOM.request ->
            #Mozilla.XPCOM.supports ->
            #Mozilla.XPCOM.inputStream -> float -> float -> unit
          method onStartRequest : #request -> #supports -> unit
          method onStopRequest : #request -> #supports -> int -> unit
        end
      class type inputStreamPump =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_name : string
          method _get_status : int
          method asyncRead :
            #Mozilla.XPCOM.streamListener -> #Mozilla.XPCOM.supports -> unit
          method cancel : int -> unit
          method init :
            #Mozilla.XPCOM.inputStream ->
            float -> float -> float -> float -> bool -> unit
          method isPending : bool
          method resume : unit
          method suspend : unit
        end
      class type iOService =
        object
          method _QueryInterface : 'a interface -> 'a
          method newURI :
            string -> string -> Mozilla.XPCOM.uRI -> Mozilla.XPCOM.uRI
        end
      class type localFile =
        object
          method append : string -> unit
          method remove : bool -> unit
          method setRelativeDescriptor :
            Mozilla.XPCOM.localFile -> string -> unit
        end
      class type mIMEInputStream =
        object
          method _set_addContentLength : bool -> unit
          method addHeader : string -> string -> unit
          method setData : #Mozilla.XPCOM.inputStream -> unit
        end
      class type multiplexInputStream =
        object method appendStream : #Mozilla.XPCOM.inputStream -> unit end
      class type observer =
        object
          method observe :
            #Mozilla.XPCOM.supports -> string -> string -> unit
        end
      class type observerService =
        object
          method addObserver :
            Mozilla.XPCOM.observer -> string -> bool -> unit
          method removeObserver : Mozilla.XPCOM.observer -> string -> unit
        end
      class type commandLine =
        object
          method findFlag : string -> bool -> int
          method getArgument : int -> string
          method handleFlag : string -> bool -> bool
          method handleFlagWithParam : string -> bool -> string
          method removeAruguments : int -> int -> unit
        end
      class type passwordManager =
        object
          method addReject : string -> unit
          method addUser : string -> string -> string -> unit
          method removeReject : string -> unit
          method removeUser : string -> string -> unit
        end
      class type passwordManagerInternal =
        object
          method addUserFull :
            string -> string -> string -> string -> string -> unit
          method findPasswordEntry :
            string ->
            string ->
            string ->
            string Mozilla.XPCOM.out ->
            string Mozilla.XPCOM.out -> string Mozilla.XPCOM.out -> unit
        end
      class type loginInfo =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_formSubmitURL : string
          method _get_hostname : string
          method _get_httpRealm : string
          method _get_password : string
          method _get_passwordField : string
          method _get_username : string
          method _get_usernameField : string
          method equals : Mozilla.XPCOM.loginInfo -> bool
          method equalsIngnorePassword : Mozilla.XPCOM.loginInfo -> bool
          method init :
            string ->
            string -> string -> string -> string -> string -> string -> unit
        end
      class type loginManager =
        object
          method addLogin : Mozilla.XPCOM.loginInfo -> unit
          method findLogins :
            int Mozilla.XPCOM.out ->
            string -> string -> string -> Mozilla.XPCOM.loginInfo array
          method getLoginSavingEnabled : string -> bool
          method modifyLogin :
            Mozilla.XPCOM.loginInfo -> Mozilla.XPCOM.loginInfo -> unit
          method removeLogin : Mozilla.XPCOM.loginInfo -> unit
          method setLoginSavingEnabled : string -> bool -> unit
        end
      class type permissionManager =
        object
          method _QueryInterface : 'a interface -> 'a
          method add : Mozilla.XPCOM.uRI -> string -> int -> unit
          method remove : string -> string -> unit
        end
      class type prefBranch =
        object
          method _get_PREF_BOOL : int
          method _get_PREF_INT : int
          method _get_PREF_STRING : int
          method getBoolPref : string -> bool
          method getCharPref : string -> string
          method getIntPref : string -> int
          method getPrefType : string -> int
          method setBoolPref : string -> bool -> unit
          method setCharPref : string -> string -> unit
          method setIntPref : string -> int -> unit
        end
      class type prefBranch2 =
        object
          method _get_PREF_BOOL : int
          method _get_PREF_INT : int
          method _get_PREF_STRING : int
          method addObserver :
            string -> Mozilla.XPCOM.observer -> bool -> unit
          method getBoolPref : string -> bool
          method getCharPref : string -> string
          method getIntPref : string -> int
          method getPrefType : string -> int
          method removeObserver : string -> Mozilla.XPCOM.observer -> unit
          method setBoolPref : string -> bool -> unit
          method setCharPref : string -> string -> unit
          method setIntPref : string -> int -> unit
        end
      class type prefService =
        object
          method getBranch : string -> Mozilla.XPCOM.prefBranch
          method getDefaultBranch : string -> Mozilla.XPCOM.prefBranch
          method readUserPrefs : Mozilla.XPCOM.file -> unit
          method resetPrefs : unit -> unit
          method resetUserPrefs : unit -> unit
          method savePrefFile : Mozilla.XPCOM.file -> unit
        end
      class type properties =
        object method get : string -> 'Mozilla.XPCOM.interface -> 'end
      class type scriptableInputStream =
        object
          method available : float
          method close : unit
          method init : #Mozilla.XPCOM.inputStream -> unit
          method read : float -> string
        end
      class type transport =
        object
          method close : int -> unit
          method openInputStream :
            int -> int -> int -> Mozilla.XPCOM.inputStream
          method openOutputStream :
            int -> int -> int -> Mozilla.XPCOM.outputStream
        end
      class type serverSocket =
        object
          method asyncListen : Mozilla.XPCOM.serverSocketListener -> unit
          method close : unit
          method init : int -> bool -> int -> unit
        end
      and serverSocketListener =
        object
          method onSocketAccepted :
            Mozilla.XPCOM.serverSocket -> #Mozilla.XPCOM.transport -> unit
          method onStopListening : Mozilla.XPCOM.serverSocket -> int -> unit
        end
      class type stringInputStream =
        object method setData : string -> int -> unit end
      class type uRIContentListener =
        object
          method _QueryInterface : 'a interface -> 'a
          method canHandleContent :
            string -> bool -> string Mozilla.XPCOM.out
          method doContent :
            string ->
            bool ->
            #Mozilla.XPCOM.request ->
            Mozilla.XPCOM.streamListener Mozilla.XPCOM.out -> bool
          method isPreferred : string -> string Mozilla.XPCOM.out -> bool
          method onStartURIOpen : #Mozilla.XPCOM.uRI -> bool
        end
      class type uRILoader =
        object
          method _QueryInterface : 'a interface -> 'a
          method registerContentListener :
            #Mozilla.XPCOM.uRIContentListener -> unit
          method unRegisterContentListener :
            #Mozilla.XPCOM.uRIContentListener -> unit
        end
      class type windowMediator =
        object
          method getEnumerator :
            string -> #Mozilla.XPCOM.dOMWindow Mozilla.XPCOM.simpleEnumerator
          method getMostRecentWindow : string -> #Mozilla.XPCOM.dOMWindow
        end
      class type xMLHttpRequest =
        object
          method _QueryInterface : 'a interface -> 'a
          method _get_channel : Mozilla.XPCOM.channel
          method _get_readyState : int
          method _get_responseText : string
          method _get_responseXML : #Mozilla.XPCOM.dOMXMLDocument
          method _get_status : int
          method _open : string -> string -> bool -> unit
          method _set_onload : (unit -> unit) -> unit
          method _set_onreadystatechange : (unit -> unit) -> unit
          method abort : unit
          method getResponseHeader : string -> string
          method overrideMimeType : string -> unit
          method send : #Mozilla.XPCOM.inputStream -> unit
          method setRequestHeader : string -> string -> unit
        end
      external createInstance :
        Mozilla.XPCOM.class_ -> 'Mozilla.XPCOM.interface -> 'a
        = "#createInstance"
      external getService :
        Mozilla.XPCOM.class_ -> 'Mozilla.XPCOM.interface -> 'a
        = "#getService"
      val _set_returnCode : Mozilla.XPCOM.result -> unit
      val appStartup : Mozilla.XPCOM.appStartup Mozilla.XPCOM.interface
      val badCertListener :
        Mozilla.XPCOM.badCertListener Mozilla.XPCOM.interface
      val bufferedInputStream :
        Mozilla.XPCOM.bufferedInputStream Mozilla.XPCOM.interface
      val channel : Mozilla.XPCOM.channel Mozilla.XPCOM.interface
      val consoleService :
        Mozilla.XPCOM.consoleService Mozilla.XPCOM.interface
      val cookie : Mozilla.XPCOM.cookie Mozilla.XPCOM.interface
      val cookieManager : Mozilla.XPCOM.cookieManager Mozilla.XPCOM.interface
      val dOMSerializer : Mozilla.XPCOM.dOMSerializer Mozilla.XPCOM.interface
      val externalProtocolService :
        Mozilla.XPCOM.externalProtocolService Mozilla.XPCOM.interface
      val file : Mozilla.XPCOM.file Mozilla.XPCOM.interface
      val fileInputStream :
        Mozilla.XPCOM.fileInputStream Mozilla.XPCOM.interface
      val fileOutputStream :
        Mozilla.XPCOM.fileOutputStream Mozilla.XPCOM.interface
      val httpChannel : Mozilla.XPCOM.httpChannel Mozilla.XPCOM.interface
      val inputStreamPump :
        Mozilla.XPCOM.inputStreamPump Mozilla.XPCOM.interface
      val iOService : Mozilla.XPCOM.iOService Mozilla.XPCOM.interface
      val localFile : Mozilla.XPCOM.localFile Mozilla.XPCOM.interface
      val loginInfo : Mozilla.XPCOM.loginInfo Mozilla.XPCOM.interface
      val loginManager : Mozilla.XPCOM.loginManager Mozilla.XPCOM.interface
      val mIMEInputStream :
        Mozilla.XPCOM.mIMEInputStream Mozilla.XPCOM.interface
      val multiplexInputStream :
        Mozilla.XPCOM.multiplexInputStream Mozilla.XPCOM.interface
      val observer : Mozilla.XPCOM.observer Mozilla.XPCOM.interface
      val observerService :
        Mozilla.XPCOM.observerService Mozilla.XPCOM.interface
      val commandLine : Mozilla.XPCOM.commandLine Mozilla.XPCOM.interface
      val passwordManager :
        Mozilla.XPCOM.passwordManager Mozilla.XPCOM.interface
      val passwordManagerInternal :
        Mozilla.XPCOM.passwordManagerInternal Mozilla.XPCOM.interface
      val permissionManager :
        Mozilla.XPCOM.permissionManager Mozilla.XPCOM.interface
      val prefService : Mozilla.XPCOM.prefService Mozilla.XPCOM.interface
      val prefBranch2 : Mozilla.XPCOM.prefBranch2 Mozilla.XPCOM.interface
      val properties : Mozilla.XPCOM.properties Mozilla.XPCOM.interface
      val requestObserver :
        Mozilla.XPCOM.requestObserver Mozilla.XPCOM.interface
      val scriptableInputStream :
        Mozilla.XPCOM.scriptableInputStream Mozilla.XPCOM.interface
      val serverSocket : Mozilla.XPCOM.serverSocket Mozilla.XPCOM.interface
      val streamListener :
        Mozilla.XPCOM.streamListener Mozilla.XPCOM.interface
      val stringInputStream :
        Mozilla.XPCOM.stringInputStream Mozilla.XPCOM.interface
      val supports : Mozilla.XPCOM.supports Mozilla.XPCOM.interface
      val supportsWeakReference :
        Mozilla.XPCOM.supportsWeakReference Mozilla.XPCOM.interface
      val uRI : Mozilla.XPCOM.uRI Mozilla.XPCOM.interface
      val uRIContentListener :
        Mozilla.XPCOM.uRIContentListener Mozilla.XPCOM.interface
      val uRILoader : Mozilla.XPCOM.uRILoader Mozilla.XPCOM.interface
      val windowMediator :
        Mozilla.XPCOM.windowMediator Mozilla.XPCOM.interface
      val xMLHttpRequest :
        Mozilla.XPCOM.xMLHttpRequest Mozilla.XPCOM.interface
      val appshell_window_mediator : Mozilla.XPCOM.class_
      val consoleservice : Mozilla.XPCOM.class_
      val cookiemanager : Mozilla.XPCOM.class_
      val file_directory_service : Mozilla.XPCOM.class_
      val file_local : Mozilla.XPCOM.class_
      val io_multiplex_input_stream : Mozilla.XPCOM.class_
      val io_string_input_stream : Mozilla.XPCOM.class_
      val loginmanager : Mozilla.XPCOM.class_
      val network_buffered_input_stream : Mozilla.XPCOM.class_
      val network_file_input_stream : Mozilla.XPCOM.class_
      val network_file_output_stream : Mozilla.XPCOM.class_
      val network_input_stream_pump : Mozilla.XPCOM.class_
      val network_io_service : Mozilla.XPCOM.class_
      val network_mime_input_stream : Mozilla.XPCOM.class_
      val network_server_socket : Mozilla.XPCOM.class_
      val network_simple_uri : Mozilla.XPCOM.class_
      val observer_service : Mozilla.XPCOM.class_
      val passwordmanager : Mozilla.XPCOM.class_
      val permissionmanager : Mozilla.XPCOM.class_
      val preferences_service : Mozilla.XPCOM.class_
      val scriptableinputstream : Mozilla.XPCOM.class_
      val toolkit_app_startup : Mozilla.XPCOM.class_
      val uriloader : Mozilla.XPCOM.class_
      val uriloader_external_protocol_service : Mozilla.XPCOM.class_
      val xmlextras_xmlhttprequest : Mozilla.XPCOM.class_
      val xmlextras_xmlserializer : Mozilla.XPCOM.class_
      val nOINTERFACE : Mozilla.XPCOM.result
      val getService_appshell_window_mediator :
        unit -> Mozilla.XPCOM.windowMediator
      val getService_consoleservice : unit -> Mozilla.XPCOM.consoleService
      val getService_cookiemanager : unit -> Mozilla.XPCOM.cookieManager
      val getService_uriloader_external_protocol_service :
        unit -> Mozilla.XPCOM.externalProtocolService
      val getService_file_directory_service :
        unit -> Mozilla.XPCOM.properties
      val getService_loginManager : unit -> Mozilla.XPCOM.loginManager
      val getService_network_io_service : unit -> Mozilla.XPCOM.iOService
      val getService_observer_service : unit -> Mozilla.XPCOM.observerService
      val getService_passwordmanager_passwordManager :
        unit -> Mozilla.XPCOM.passwordManager
      val getService_passwordmanager_passwordManagerInternal :
        unit -> Mozilla.XPCOM.passwordManagerInternal
      val getService_permissionmanager :
        unit -> Mozilla.XPCOM.permissionManager
      val getService_preferences_service : unit -> Mozilla.XPCOM.prefService
      val getService_preferences_branch : unit -> Mozilla.XPCOM.prefBranch2
      val getService_toolkit_app_startup : unit -> Mozilla.XPCOM.appStartup
      val getService_uriloader : unit -> Mozilla.XPCOM.uRILoader
      val createInstance_file_local : unit -> Mozilla.XPCOM.localFile
      val createInstance_loginInfo : unit -> Mozilla.XPCOM.loginInfo
      val createInstance_network_buffered_input_stream :
        unit -> Mozilla.XPCOM.bufferedInputStream
      val createInstance_network_file_input_stream :
        unit -> Mozilla.XPCOM.fileInputStream
      val createInstance_network_file_output_stream :
        unit -> Mozilla.XPCOM.fileOutputStream
      val createInstance_network_mime_input_stream :
        unit -> Mozilla.XPCOM.mIMEInputStream
      val createInstance_io_multiplex_input_stream :
        unit -> Mozilla.XPCOM.multiplexInputStream
      val createInstance_io_string_input_stream :
        unit -> Mozilla.XPCOM.stringInputStream
      val createInstance_scriptableinputstream :
        unit -> Mozilla.XPCOM.scriptableInputStream
      val createInstance_network_input_stream_pump :
        unit -> Mozilla.XPCOM.inputStreamPump
      val createInstance_network_server_socket :
        unit -> Mozilla.XPCOM.serverSocket
      val createInstance_network_simple_uri : unit -> Mozilla.XPCOM.uRI
      val createInstance_xmlextras_xmlhttprequest :
        unit -> Mozilla.XPCOM.xMLHttpRequest
      val createInstance_xmlextras_xmlserializer :
        unit -> Mozilla.XPCOM.dOMSerializer
      val make_out : '-> 'Mozilla.XPCOM.out
    end
  module DOM :
    sig
      class type style =
        object
          method _get_color : string
          method _get_display : string
          method _get_maxWidth : string
          method _get_visibility : string
          method _get_width : string
          method _set_color : string -> unit
          method _set_display : string -> unit
          method _set_maxWidth : string -> unit
          method _set_visibility : string -> unit
          method _set_width : string -> unit
        end
      class type event =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_bubbles : bool
          method _get_cancelable : bool
          method _get_eventPhase : int
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type eventTarget =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
        end
      class type node =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
        end
      class type element =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : Mozilla.DOM.style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type document =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_defaultView : XPCOM.dOMAbstractView
          method _get_firstChild : XPCOM.dOMNode
          method _get_lastChild : XPCOM.dOMNode
          method _get_location : XPCOM.dOMLocation
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method createEvent : string -> #XPCOM.dOMEvent
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method evaluate :
            string ->
            #XPCOM.dOMNode ->
            #XPCOM.dOMXPathNSResolver ->
            int -> #XPCOM.supports -> #XPCOM.supports
          method getElementById : string -> #XPCOM.dOMElement
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
        end
      class type a =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_href : string
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type area =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type uRI =
        object
          method _get_host : string
          method _get_spec : string
          method _set_host : string -> unit
          method _set_spec : string -> unit
          method resolve : string -> string
        end
      class type browser =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_contentDocument : Mozilla.DOM.document
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method goBack : unit
          method loadURI : string -> Mozilla.DOM.uRI -> string -> unit
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
          method stop : unit -> unit
        end
      class type button =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_disabled : bool
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_label : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_disabled : bool -> unit
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_label : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type deck =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_selectedIndex : int
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_selectedIndex : int -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type dialog =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type form =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_action : string
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_method : string
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_action : string -> unit
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_method : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
          method submit : unit
        end
      class type input =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type input_text =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _get_value : string
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_value : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type input_image =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method click : unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type label =
        object
          method _get_value : string
          method _set_value : string -> unit
        end
      class type map =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_areas : Mozilla.DOM.area array
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type menuItem =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type menuList =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_selectedIndex : int
          method _get_style : style
          method _get_value : string
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_selectedIndex : int -> unit
          method _set_value : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type keyEvent =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_bubbles : bool
          method _get_cancelable : bool
          method _get_eventPhase : int
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method initKeyEvent :
            string ->
            bool ->
            bool ->
            #XPCOM.dOMAbstractView ->
            bool -> bool -> bool -> bool -> int -> int
          method initUIEvent :
            string -> bool -> bool -> #XPCOM.dOMAbstractView -> int -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type mouseEvent =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_altKey : bool
          method _get_bubbles : bool
          method _get_button : int
          method _get_cancelable : bool
          method _get_clientX : int
          method _get_clientY : int
          method _get_ctrlKey : bool
          method _get_eventPhase : int
          method _get_metaKey : bool
          method _get_relatedTarget : #XPCOM.dOMEventTarget
          method _get_screenX : int
          method _get_screenY : int
          method _get_shiftKey : bool
          method _get_timeStamp : float
          method _get_type : string
          method initEvent : string -> bool -> bool -> unit
          method initMouseEvent :
            string ->
            bool ->
            bool ->
            #XPCOM.dOMAbstractView ->
            int ->
            int ->
            int ->
            int ->
            int ->
            bool ->
            bool -> bool -> bool -> int -> #XPCOM.dOMEventTarget -> unit
          method initUIEvent :
            string -> bool -> bool -> #XPCOM.dOMAbstractView -> int -> unit
          method preventDefault : unit
          method stopPropagation : unit
        end
      class type option =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _get_text : string
          method _get_value : string
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type radio =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_selected : int
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_selected : int -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type select =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_options : Mozilla.DOM.option array
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_selectedIndex : int
          method _get_style : style
          method _get_value : string
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_selectedIndex : int -> unit
          method _set_value : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type statusBarPanel =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type stringBundle =
        object method getString : string -> string end
      class type tab =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_linkedBrowser : Mozilla.DOM.browser
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type tabBrowser =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_selectedTab : Mozilla.DOM.tab
          method _get_style : style
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_selectedTab : #Mozilla.DOM.tab -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method addTab : string -> Mozilla.DOM.tab
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method removeTab : Mozilla.DOM.tab -> unit
          method setAttribute : string -> string -> unit
        end
      class type textBox =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_firstChild : XPCOM.dOMNode
          method _get_hidden : bool
          method _get_innerHTML : string
          method _get_lastChild : XPCOM.dOMNode
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method _get_style : style
          method _get_value : string
          method _set_hidden : bool -> unit
          method _set_innerHTML : string -> unit
          method _set_value : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getAttribute : string -> string
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setAttribute : string -> string -> unit
        end
      class type window =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_arguments : 'b array
          method _get_document : XPCOM.dOMDocument
          method _get_location : string
          method _set_location : string -> unit
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method alert : string -> unit
          method back : unit
          method clearInterval : int -> unit
          method clearTimeout : int -> unit
          method close : unit
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method getBrowser : Mozilla.DOM.tabBrowser
          method openDialog : string -> string -> string -> unit
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method setInterval : (unit -> unit) -> float -> int
          method setTimeout : (unit -> unit) -> float -> int
        end
      class type xMLDocument =
        object
          method _QueryInterface : 'XPCOM.interface -> 'a
          method _get_childNodes : XPCOM.dOMNode array
          method _get_defaultView : XPCOM.dOMAbstractView
          method _get_firstChild : XPCOM.dOMNode
          method _get_lastChild : XPCOM.dOMNode
          method _get_location : XPCOM.dOMLocation
          method _get_nextSibling : XPCOM.dOMNode
          method _get_nodeName : string
          method _get_nodeType : int
          method _get_nodeValue : string
          method _get_parentNode : XPCOM.dOMNode
          method _get_previousSibling : XPCOM.dOMNode
          method addEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method addEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
          method createEvent : string -> #XPCOM.dOMEvent
          method dispatchEvent : #XPCOM.dOMEvent -> bool
          method evaluate :
            string ->
            #XPCOM.dOMNode ->
            #XPCOM.dOMXPathNSResolver ->
            int -> #XPCOM.supports -> #XPCOM.supports
          method getElementById : string -> #XPCOM.dOMElement
          method removeEventListener :
            string -> #XPCOM.dOMEventListener -> bool -> unit
          method removeEventListener_fun_ :
            string -> (#XPCOM.dOMEvent -> unit) -> bool -> unit
        end
      class type xPathResult =
        object
          method _get_ANY_TYPE : int
          method _get_FIRST_ORDERED_NODE_TYPE : int
          method _get_ORDERED_NODE_ITERATOR_TYPE : int
          method _get_singleNodeValue : #XPCOM.dOMNode
          method iterateNext : #XPCOM.dOMNode
        end
      val document : Mozilla.DOM.document
      val window : Mozilla.DOM.window
    end
end