sig
  external assign : '-> '-> unit = "$assign"
  external false_ : unit -> bool = "$false"
  external fieldref : '-> string -> 'b = "$fieldref"
  external function_ : '-> 'b = "$function"
  external hashref : '-> '-> 'c = "$hashref"
  external null : unit -> 'a = "$null"
  external obj : (string * 'a) list -> 'b = "$obj"
  external this : unit -> 'a = "$this"
  external throw : '-> 'b = "$throw"
  external true_ : unit -> bool = "$true"
  external var : string -> 'a = "$var"
  external caml_callback : ('-> 'b) -> '-> 'b = "caml_callback"
  external caml_callback2 : ('-> '-> 'c) -> '-> '-> 'c
    = "caml_callback2"
  external caml_callback3 : ('-> '-> '-> 'd) -> '-> '-> '-> 'd
    = "caml_callback3"
  val option_of_nullable : '-> 'a option
  val nullable_of_option : 'a option -> 'a
  val is_null : '-> bool
  type 'a jsfun = 'a
  external jsfun : '-> 'a = "%identity"
  external jsfun2 : '-> 'a = "%identity"
  external jsfun3 : '-> 'a = "%identity"
  external jsfun4 : '-> 'a = "%identity"
  external jsfun5 : '-> 'a = "%identity"
  module Inline :
    sig
      module Jslib_ast :
        sig
          type loc = unit
          type unop =
              Jdelete
            | Jvoid
            | Jtypeof
            | Jadd2_pre
            | Jsub2_pre
            | Jadd_pre
            | Jsub_pre
            | Jtilde
            | Jnot
            | Jadd2_post
            | Jsub2_post
          and binop =
              Jhashref
            | Jmul
            | Jdiv
            | Jmod
            | Jadd
            | Jsub
            | Jlt
            | Jgt
            | Jleq
            | Jgeq
            | Jlsr
            | Jlsl
            | Jasr
            | Jeq
            | Jneq
            | Jinstanceof
            | Jseq
            | Jsneq
            | Jland
            | Jlor
            | Jand
            | Jxor
            | Jor
            | Jcomma
            | Jassign
            | Jmul_assign
            | Jdiv_assign
            | Jmod_assign
            | Jadd_assign
            | Jsub_assign
            | Jlsl_assign
            | Jlsr_assign
            | Jasr_assign
            | Jand_assign
            | Jxor_assign
            | Jor_assign
          and exp =
              Jthis of Ocamljs.Inline.Jslib_ast.loc
            | Jvar of Ocamljs.Inline.Jslib_ast.loc * string
            | Jarray of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp
            | Jobject of Ocamljs.Inline.Jslib_ast.loc *
                (Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp)
                list
            | Jstring of Ocamljs.Inline.Jslib_ast.loc * string * bool
            | Jnum of Ocamljs.Inline.Jslib_ast.loc * string
            | Jnull of Ocamljs.Inline.Jslib_ast.loc
            | Jbool of Ocamljs.Inline.Jslib_ast.loc * bool
            | Jregexp of Ocamljs.Inline.Jslib_ast.loc * string * string
            | Jfun of Ocamljs.Inline.Jslib_ast.loc * string option *
                string list * Ocamljs.Inline.Jslib_ast.stmt
            | Jfieldref of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * string
            | Junop of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.unop * Ocamljs.Inline.Jslib_ast.exp
            | Jbinop of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.binop *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp
            | Jite of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp *
                Ocamljs.Inline.Jslib_ast.exp
            | Jcall of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp
            | Jnew of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp *
                Ocamljs.Inline.Jslib_ast.exp option
            | Jexp_nil of Ocamljs.Inline.Jslib_ast.loc
            | Jexp_cons of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.exp
            | Jexp_Ant of Ocamljs.Inline.Jslib_ast.loc * string
          and stmt =
              Jvars of Ocamljs.Inline.Jslib_ast.loc *
                (string * Ocamljs.Inline.Jslib_ast.exp option) list
            | Jfuns of Ocamljs.Inline.Jslib_ast.loc * string * string list *
                Ocamljs.Inline.Jslib_ast.stmt
            | Jreturn of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp option
            | Jcontinue of Ocamljs.Inline.Jslib_ast.loc * string option
            | Jbreak of Ocamljs.Inline.Jslib_ast.loc * string option
            | Jswitch of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp *
                (Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.stmt)
                list * Ocamljs.Inline.Jslib_ast.stmt
            | Jites of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp *
                Ocamljs.Inline.Jslib_ast.stmt *
                Ocamljs.Inline.Jslib_ast.stmt option
            | Jthrow of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp
            | Jexps of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp
            | Jtrycatch of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.stmt *
                (string * Ocamljs.Inline.Jslib_ast.stmt) option *
                Ocamljs.Inline.Jslib_ast.stmt
            | Jfor of Ocamljs.Inline.Jslib_ast.loc *
                (string * Ocamljs.Inline.Jslib_ast.exp option) list *
                Ocamljs.Inline.Jslib_ast.exp option *
                Ocamljs.Inline.Jslib_ast.exp option *
                Ocamljs.Inline.Jslib_ast.exp option *
                Ocamljs.Inline.Jslib_ast.stmt
            | Jdowhile of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.stmt * Ocamljs.Inline.Jslib_ast.exp
            | Jwhile of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.stmt
            | Jblock of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.stmt
            | Jwith of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.exp * Ocamljs.Inline.Jslib_ast.stmt
            | Jlabel of Ocamljs.Inline.Jslib_ast.loc * string *
                Ocamljs.Inline.Jslib_ast.stmt
            | Jstmt_nil of Ocamljs.Inline.Jslib_ast.loc
            | Jstmt_cons of Ocamljs.Inline.Jslib_ast.loc *
                Ocamljs.Inline.Jslib_ast.stmt * Ocamljs.Inline.Jslib_ast.stmt
            | Jstmt_Ant of Ocamljs.Inline.Jslib_ast.loc * string
        end
      external inline_exp : Ocamljs.Inline.Jslib_ast.exp -> 'a
        = "$inline_exp"
      external inline_stmt : Ocamljs.Inline.Jslib_ast.stmt -> unit
        = "$inline_stmt"
      external inline_rstmt : Ocamljs.Inline.Jslib_ast.stmt -> 'a
        = "$inline_rstmt"
      external inline_antiexp : '-> Ocamljs.Inline.Jslib_ast.exp
        = "$inline_antiexp"
      val _loc : Ocamljs.Inline.Jslib_ast.loc
    end
end