;;; Code for jsbridgebackward.MyJsInterface [type definition]
(type $jsbridgebackward.MyJsInterface.vtable (sub (struct
 (field $m_foo__int__int (ref $function.m_foo__int__int))
 ))
)

;;; Code for jsbridgebackward.A [type definition]
(type $jsbridgebackward.A.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))
 (field $m_foo__int__int (ref $function.m_foo__int__int))
 ))
)
(type $jsbridgebackward.A (sub $java.lang.Object (struct
 (field $vtable (ref $jsbridgebackward.A.vtable))
 (field $itable (ref $itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for jsbridgebackward.MyJsInterface.$LambdaAdaptor [type definition]
(type $jsbridgebackward.MyJsInterface.$LambdaAdaptor.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))
 (field $m_foo__int__int (ref $function.m_foo__int__int))
 ))
)
(type $jsbridgebackward.MyJsInterface.$LambdaAdaptor (sub $java.lang.Object (struct
 (field $vtable (ref $jsbridgebackward.MyJsInterface.$LambdaAdaptor.vtable))
 (field $itable (ref $jsbridgebackward.MyJsInterface.$LambdaAdaptor.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for jsbridgebackward.InterfaceImpl [type definition]
(type $jsbridgebackward.InterfaceImpl.vtable (sub $jsbridgebackward.A.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))
 (field $m_foo__int__int (ref $function.m_foo__int__int))
 ))
)
(type $jsbridgebackward.InterfaceImpl (sub $jsbridgebackward.A (struct
 (field $vtable (ref $jsbridgebackward.InterfaceImpl.vtable))
 (field $itable (ref $jsbridgebackward.InterfaceImpl.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for jsbridgebackward.SubInterfaceImpl [type definition]
(type $jsbridgebackward.SubInterfaceImpl.vtable (sub $jsbridgebackward.InterfaceImpl.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))
 (field $m_foo__int__int (ref $function.m_foo__int__int))
 ))
)
(type $jsbridgebackward.SubInterfaceImpl (sub $jsbridgebackward.InterfaceImpl (struct
 (field $vtable (ref $jsbridgebackward.SubInterfaceImpl.vtable))
 (field $itable (ref $jsbridgebackward.SubInterfaceImpl.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for jsbridgebackward.MyJsInterface [imports]

;;; Code for jsbridgebackward.A [imports]

;;; Code for jsbridgebackward.MyJsInterface.$LambdaAdaptor [imports]

;;; Code for jsbridgebackward.InterfaceImpl [imports]

;;; Code for jsbridgebackward.SubInterfaceImpl [imports]

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

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

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

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

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

;;; Code for jsbridgebackward.A [vtable.init]
(global $jsbridgebackward.A.vtable (ref $jsbridgebackward.A.vtable)
 (struct.new $jsbridgebackward.A.vtable
  (ref.func $$getClassImpl__java_lang_Class@jsbridgebackward.A)
  (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)
  (ref.func $m_foo__int__int@jsbridgebackward.A)
 )
)

;;; Code for jsbridgebackward.InterfaceImpl [vtable.init]
(global $jsbridgebackward.InterfaceImpl.vtable (ref $jsbridgebackward.InterfaceImpl.vtable)
 (struct.new $jsbridgebackward.InterfaceImpl.vtable
  (ref.func $$getClassImpl__java_lang_Class@jsbridgebackward.InterfaceImpl)
  (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)
  (ref.func $m_foo__int__int@jsbridgebackward.A)
 )
)
(global $jsbridgebackward.MyJsInterface.vtable@$jsbridgebackward.InterfaceImpl (ref $jsbridgebackward.MyJsInterface.vtable)
 (struct.new $jsbridgebackward.MyJsInterface.vtable
  (ref.func $m_foo__int__int@jsbridgebackward.A)
 )
)

;;; Code for jsbridgebackward.SubInterfaceImpl [vtable.init]
(global $jsbridgebackward.SubInterfaceImpl.vtable (ref $jsbridgebackward.SubInterfaceImpl.vtable)
 (struct.new $jsbridgebackward.SubInterfaceImpl.vtable
  (ref.func $$getClassImpl__java_lang_Class@jsbridgebackward.SubInterfaceImpl)
  (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)
  (ref.func $m_foo__int__int@jsbridgebackward.SubInterfaceImpl)
 )
)
(global $jsbridgebackward.MyJsInterface.vtable@$jsbridgebackward.SubInterfaceImpl (ref $jsbridgebackward.MyJsInterface.vtable)
 (struct.new $jsbridgebackward.MyJsInterface.vtable
  (ref.func $m_foo__int__int@jsbridgebackward.SubInterfaceImpl)
 )
)

;;; Code for jsbridgebackward.MyJsInterface [methods]

;;; void MyJsInterface.$clinit()
(func $$clinit__void_<once>_@jsbridgebackward.MyJsInterface
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
  (if (global.get $$class-initialized@jsbridgebackward.MyJsInterface)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
  (global.set $$class-initialized@jsbridgebackward.MyJsInterface (i32.const 1))
 )
)

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

;;; Code for jsbridgebackward.A [methods]

;;; A A.$create()
(func $$create__@jsbridgebackward.A
 (result (ref null $jsbridgebackward.A))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
 (local $$instance (ref null $jsbridgebackward.A))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
  (call $$clinit__void_<once>_@jsbridgebackward.A )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
  (local.set $$instance (struct.new $jsbridgebackward.A (global.get $jsbridgebackward.A.vtable) (global.get $itable.empty) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
  (call $$ctor__void_$p_jsbridgebackward_A@jsbridgebackward.A (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
  (return (local.get $$instance))
 )
)

;;; void A.$ctor()
(func $$ctor__void_$p_jsbridgebackward_A@jsbridgebackward.A
 (param $this (ref null $jsbridgebackward.A))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:25:6
  (call $$ctor__void_$p_java_lang_Object@java.lang.Object (ref.as_non_null (local.get $this)))
 )
)

;;; int A.foo(int a)
(func $m_foo__int__int@jsbridgebackward.A
 (type $function.m_foo__int__int)
 (param $this.untyped (ref $java.lang.Object))
 (param $a i32)
 (result i32)
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:26:13
 (local $this (ref null $jsbridgebackward.A))
 (local.set $this (ref.cast (ref $jsbridgebackward.A) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:27:4
  (return (local.get $a))
 )
)
(elem declare func $m_foo__int__int@jsbridgebackward.A)

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

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

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

;;; Code for jsbridgebackward.MyJsInterface.$LambdaAdaptor [methods]

;;; void $LambdaAdaptor.$ctor()
(func $$ctor__void_$p_jsbridgebackward_MyJsInterface_$LambdaAdaptor@jsbridgebackward.MyJsInterface.$LambdaAdaptor
 (param $this (ref null $jsbridgebackward.MyJsInterface.$LambdaAdaptor))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:21:10
  (call $$ctor__void_$p_java_lang_Object@java.lang.Object (ref.as_non_null (local.get $this)))
 )
)

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

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

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

;;; Code for jsbridgebackward.InterfaceImpl [methods]

;;; InterfaceImpl InterfaceImpl.$create()
(func $$create__@jsbridgebackward.InterfaceImpl
 (result (ref null $jsbridgebackward.InterfaceImpl))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
 (local $$instance (ref null $jsbridgebackward.InterfaceImpl))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
  (call $$clinit__void_<once>_@jsbridgebackward.InterfaceImpl )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
  (local.set $$instance (struct.new $jsbridgebackward.InterfaceImpl (global.get $jsbridgebackward.InterfaceImpl.vtable) (global.get $jsbridgebackward.InterfaceImpl.itable) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
  (call $$ctor__void_$p_jsbridgebackward_InterfaceImpl@jsbridgebackward.InterfaceImpl (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
  (return (local.get $$instance))
 )
)

;;; void InterfaceImpl.$ctor()
(func $$ctor__void_$p_jsbridgebackward_InterfaceImpl@jsbridgebackward.InterfaceImpl
 (param $this (ref null $jsbridgebackward.InterfaceImpl))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:31:13
  (call $$ctor__void_$p_jsbridgebackward_A@jsbridgebackward.A (ref.as_non_null (local.get $this)))
 )
)

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

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

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

;;; Code for jsbridgebackward.SubInterfaceImpl [methods]

;;; SubInterfaceImpl SubInterfaceImpl.$create()
(func $$create__@jsbridgebackward.SubInterfaceImpl
 (result (ref null $jsbridgebackward.SubInterfaceImpl))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
 (local $$instance (ref null $jsbridgebackward.SubInterfaceImpl))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (call $$clinit__void_<once>_@jsbridgebackward.SubInterfaceImpl )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (local.set $$instance (struct.new $jsbridgebackward.SubInterfaceImpl (global.get $jsbridgebackward.SubInterfaceImpl.vtable) (global.get $jsbridgebackward.SubInterfaceImpl.itable) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (call $$ctor__void_$p_jsbridgebackward_SubInterfaceImpl@jsbridgebackward.SubInterfaceImpl (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (return (local.get $$instance))
 )
)

;;; void SubInterfaceImpl.$ctor()
(func $$ctor__void_$p_jsbridgebackward_SubInterfaceImpl@jsbridgebackward.SubInterfaceImpl
 (param $this (ref null $jsbridgebackward.SubInterfaceImpl))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (call $$ctor__void_$p_jsbridgebackward_InterfaceImpl@jsbridgebackward.InterfaceImpl (ref.as_non_null (local.get $this)))
 )
)

;;; int SubInterfaceImpl.foo(int a)
(func $m_foo__int__int@jsbridgebackward.SubInterfaceImpl
 (type $function.m_foo__int__int)
 (param $this.untyped (ref $java.lang.Object))
 (param $a i32)
 (result i32)
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:39:13
 (local $this (ref null $jsbridgebackward.SubInterfaceImpl))
 (local.set $this (ref.cast (ref $jsbridgebackward.SubInterfaceImpl) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:40:4
  (return (i32.const 0))
 )
)
(elem declare func $m_foo__int__int@jsbridgebackward.SubInterfaceImpl)

;;; void SubInterfaceImpl.$clinit()
(func $$clinit__void_<once>_@jsbridgebackward.SubInterfaceImpl
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (if (global.get $$class-initialized@jsbridgebackward.SubInterfaceImpl)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (global.set $$class-initialized@jsbridgebackward.SubInterfaceImpl (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/jsbridgebackward/readable-j2wasm.js/jsbridgebackward/InterfaceImpl.java:36:6
  (call $$clinit__void_<once>_@jsbridgebackward.InterfaceImpl )
 )
)

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

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