;;; Code for inferreturn.InferReturn [type definition]
(type $inferreturn.InferReturn.vtable (sub $java.lang.Object.vtable (struct
 (field $$getClassImpl__java_lang_Class (ref $function.$getClassImpl__java_lang_Class))
 (field $m_equals__java_lang_Object__boolean (ref $function.m_equals__java_lang_Object__boolean))
 (field $m_hashCode__int (ref $function.m_hashCode__int))
 (field $m_toString__java_lang_String (ref $function.m_toString__java_lang_String))
 ))
)
(type $inferreturn.InferReturn (sub $java.lang.Object (struct
 (field $vtable (ref $inferreturn.InferReturn.vtable))
 (field $itable (ref $itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for inferreturn.InferReturn [imports]

;;; Code for inferreturn.InferReturn [static fields]
(global $$class-initialized@inferreturn.InferReturn (mut i32)
 (i32.const 0)
)
(global $$class@inferreturn.InferReturn (mut (ref null $java.lang.Class))
 (ref.null $java.lang.Class)
)

;;; Code for inferreturn.InferReturn [vtable.init]
(global $inferreturn.InferReturn.vtable (ref $inferreturn.InferReturn.vtable)
 (struct.new $inferreturn.InferReturn.vtable
  (ref.func $$getClassImpl__java_lang_Class@inferreturn.InferReturn)
  (ref.func $m_equals__java_lang_Object__boolean@java.lang.Object)
  (ref.func $m_hashCode__int@java.lang.Object)
  (ref.func $m_toString__java_lang_String@java.lang.Object)
 )
)

;;; Code for inferreturn.InferReturn [methods]

;;; InferReturn<T> InferReturn.$create()
(func $$create__@inferreturn.InferReturn
 (result (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (return (call $$create_$private__@inferreturn.InferReturn ))
 )
)

;;; InferReturn<T> InferReturn.$create_$private()
(func $$create_$private__@inferreturn.InferReturn
 (result (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
 (local $$instance (ref null $inferreturn.InferReturn))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (local.set $$instance (struct.new $inferreturn.InferReturn (global.get $inferreturn.InferReturn.vtable) (global.get $itable.empty) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (call $$ctor__void_$p_inferreturn_InferReturn@inferreturn.InferReturn (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (return (local.get $$instance))
 )
)

;;; void InferReturn.$ctor()
(func $$ctor__void_$p_inferreturn_InferReturn@inferreturn.InferReturn
 (param $this (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (call $$ctor__void_$p_java_lang_Object@java.lang.Object (ref.as_non_null (local.get $this)))
 )
)

;;; InferReturn<T> InferReturn.inferGeneric(T arg0)
(func $m_inferGeneric__java_lang_Object__inferreturn_InferReturn@inferreturn.InferReturn
 (param $arg0 (ref null $java.lang.Object))
 (result (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:23:35
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:23:35
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:23:35
  (return (call $m_inferGeneric_$private__java_lang_Object__inferreturn_InferReturn@inferreturn.InferReturn (local.get $arg0)))
 )
)

;;; InferReturn<T> InferReturn.inferGeneric_$private(T foo)
(func $m_inferGeneric_$private__java_lang_Object__inferreturn_InferReturn@inferreturn.InferReturn
 (param $foo (ref null $java.lang.Object))
 (result (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:23:35
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:24:4
  (return (call $$create_$private__@inferreturn.InferReturn ))
 )
)

;;; InferReturn<InferReturn<String>> InferReturn.tightenType(InferReturn<String> foo)
(func $m_tightenType__inferreturn_InferReturn__inferreturn_InferReturn@inferreturn.InferReturn
 (param $foo (ref null $inferreturn.InferReturn))
 (result (ref null $inferreturn.InferReturn))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:27:49
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:27:86
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:28:4
  (if (i32.eqz (ref.is_null (local.get $foo)))
   (then
    (block
     ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:31:6
     (return (call $m_inferGeneric_$private__java_lang_Object__inferreturn_InferReturn@inferreturn.InferReturn (local.get $foo)))
    )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:33:4
  (return (ref.null $inferreturn.InferReturn))
 )
)

;;; void InferReturn.main()
(func $m_main__void@inferreturn.InferReturn
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:36:21
 (local $list (ref null $java.util.ArrayList))
 (local $array (ref null $javaemul.internal.WasmArray.OfObject))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:36:28
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:37:4
  (local.set $list (call $m_newArrayList_$private__java_lang_Object__java_util_ArrayList@inferreturn.InferReturn (call $$getString_|foo|__java_lang_String_<once>_@inferreturn.InferReturn )))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:39:4
  (call $m_acceptsArrayListOfObject_$private__java_util_ArrayList__void@inferreturn.InferReturn (local.get $list))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:41:4
  (local.set $array (call $m_newArray_$private__java_lang_Object__arrayOf_java_lang_Object@inferreturn.InferReturn (call $$getString_|foo|__java_lang_String_<once>_@inferreturn.InferReturn )))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:43:4
  (call $m_acceptsArrayOfObject_$private__arrayOf_java_lang_Object__void@inferreturn.InferReturn (local.get $array))
 )
)

;;; ArrayList<V> InferReturn.newArrayList(V arg0)
(func $m_newArrayList__java_lang_Object__java_util_ArrayList@inferreturn.InferReturn
 (param $arg0 (ref null $java.lang.Object))
 (result (ref null $java.util.ArrayList))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:46:33
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:46:33
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:46:33
  (return (call $m_newArrayList_$private__java_lang_Object__java_util_ArrayList@inferreturn.InferReturn (local.get $arg0)))
 )
)

;;; ArrayList<V> InferReturn.newArrayList_$private(V foo)
(func $m_newArrayList_$private__java_lang_Object__java_util_ArrayList@inferreturn.InferReturn
 (param $foo (ref null $java.lang.Object))
 (result (ref null $java.util.ArrayList))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:46:33
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:47:4
  (return (call $$create__@java.util.ArrayList ))
 )
)

;;; V[] InferReturn.newArray(V arg0)
(func $m_newArray__java_lang_Object__arrayOf_java_lang_Object@inferreturn.InferReturn
 (param $arg0 (ref null $java.lang.Object))
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:50:24
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:50:24
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:50:24
  (return (call $m_newArray_$private__java_lang_Object__arrayOf_java_lang_Object@inferreturn.InferReturn (local.get $arg0)))
 )
)

;;; V[] InferReturn.newArray_$private(V foo)
(func $m_newArray_$private__java_lang_Object__arrayOf_java_lang_Object@inferreturn.InferReturn
 (param $foo (ref null $java.lang.Object))
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:50:24
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:51:4
  (return (ref.cast (ref null $javaemul.internal.WasmArray.OfObject) (call $m_newWithLength__int__javaemul_internal_WasmArray_OfObject@javaemul.internal.WasmArray.OfObject (i32.const 0))))
 )
)

;;; void InferReturn.acceptsArrayListOfObject(ArrayList<Object> arg0)
(func $m_acceptsArrayListOfObject__java_util_ArrayList__void@inferreturn.InferReturn
 (param $arg0 (ref null $java.util.ArrayList))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:54:21
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:54:21
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:54:21
  (call $m_acceptsArrayListOfObject_$private__java_util_ArrayList__void@inferreturn.InferReturn (local.get $arg0))
 )
)

;;; void InferReturn.acceptsArrayListOfObject_$private(ArrayList<Object> foo)
(func $m_acceptsArrayListOfObject_$private__java_util_ArrayList__void@inferreturn.InferReturn
 (param $foo (ref null $java.util.ArrayList))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:54:21
 (block
 )
)

;;; void InferReturn.acceptsArrayOfObject(Object[] arg0)
(func $m_acceptsArrayOfObject__arrayOf_java_lang_Object__void@inferreturn.InferReturn
 (param $arg0 (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:58:21
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:58:21
  (call $$clinit__void_<once>_@inferreturn.InferReturn )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:58:21
  (call $m_acceptsArrayOfObject_$private__arrayOf_java_lang_Object__void@inferreturn.InferReturn (local.get $arg0))
 )
)

;;; void InferReturn.acceptsArrayOfObject_$private(Object[] foo)
(func $m_acceptsArrayOfObject_$private__arrayOf_java_lang_Object__void@inferreturn.InferReturn
 (param $foo (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:58:21
 (block
 )
)

;;; void InferReturn.$clinit()
(func $$clinit__void_<once>_@inferreturn.InferReturn
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (if (global.get $$class-initialized@inferreturn.InferReturn)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (global.set $$class-initialized@inferreturn.InferReturn (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/inferreturn/readable-j2wasm.js/inferreturn/InferReturn.java:21:13
  (call $$clinit__void_<once>_@java.lang.Object )
 )
)

;;; Class<T> InferReturn.$getClassMetadata()
(func $$getClassMetadata__java_lang_Class_<once>_@inferreturn.InferReturn
 (result (ref null $java.lang.Class))
 (block
  (if (i32.eqz (ref.is_null (global.get $$class@inferreturn.InferReturn)))
   (then
    (return (global.get $$class@inferreturn.InferReturn))
   )
  )
  (global.set $$class@inferreturn.InferReturn (call $m_createForClass__java_lang_String__java_lang_Class__java_lang_Class@java.lang.Class (call $$getString_|inferreturn....|__java_lang_String_<once>_@inferreturn.InferReturn )(call $$getClassMetadata__java_lang_Class_<once>_@java.lang.Object )))
  (return (global.get $$class@inferreturn.InferReturn))
 )
)

;;; Class<?> InferReturn.$getClassImpl()
(func $$getClassImpl__java_lang_Class@inferreturn.InferReturn
 (type $function.$getClassImpl__java_lang_Class)
 (param $this.untyped (ref $java.lang.Object))
 (result (ref null $java.lang.Class))
 (local $this (ref null $inferreturn.InferReturn))
 (local.set $this (ref.cast (ref $inferreturn.InferReturn) (local.get $this.untyped)))
 (block
  (return (call $$getClassMetadata__java_lang_Class_<once>_@inferreturn.InferReturn ))
 )
)
(elem declare func $$getClassImpl__java_lang_Class@inferreturn.InferReturn)
