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

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

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

;;; Code for cloneable.Cloneables.WithoutCloneableChild [type definition]
(type $cloneable.Cloneables.WithoutCloneableChild.vtable (sub $cloneable.Cloneables.WithoutCloneable.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_clone__java_lang_Object (ref $function.m_clone__java_lang_Object))
 ))
)
(type $cloneable.Cloneables.WithoutCloneableChild (sub $cloneable.Cloneables.WithoutCloneable (struct
 (field $vtable (ref $cloneable.Cloneables.WithoutCloneableChild.vtable))
 (field $itable (ref $itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for cloneable.Cloneables.WithCloneableChild [type definition]
(type $cloneable.Cloneables.WithCloneableChild.vtable (sub $cloneable.Cloneables.WithCloneable.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_clone__java_lang_Object (ref $function.m_clone__java_lang_Object))
 ))
)
(type $cloneable.Cloneables.WithCloneableChild (sub $cloneable.Cloneables.WithCloneable (struct
 (field $vtable (ref $cloneable.Cloneables.WithCloneableChild.vtable))
 (field $itable (ref $cloneable.Cloneables.WithCloneableChild.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for cloneable.Cloneables [imports]

;;; Code for cloneable.Cloneables.WithoutCloneable [imports]

;;; Code for cloneable.Cloneables.WithCloneable [imports]

;;; Code for cloneable.Cloneables.WithoutCloneableChild [imports]

;;; Code for cloneable.Cloneables.WithCloneableChild [imports]

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

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

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

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

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

;;; Code for cloneable.Cloneables [vtable.init]
(global $cloneable.Cloneables.vtable (ref $cloneable.Cloneables.vtable)
 (struct.new $cloneable.Cloneables.vtable
  (ref.func $$getClassImpl__java_lang_Class@cloneable.Cloneables)
  (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 cloneable.Cloneables.WithoutCloneable [vtable.init]
(global $cloneable.Cloneables.WithoutCloneable.vtable (ref $cloneable.Cloneables.WithoutCloneable.vtable)
 (struct.new $cloneable.Cloneables.WithoutCloneable.vtable
  (ref.func $$getClassImpl__java_lang_Class@cloneable.Cloneables.WithoutCloneable)
  (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_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneable)
 )
)

;;; Code for cloneable.Cloneables.WithCloneable [vtable.init]
(global $cloneable.Cloneables.WithCloneable.vtable (ref $cloneable.Cloneables.WithCloneable.vtable)
 (struct.new $cloneable.Cloneables.WithCloneable.vtable
  (ref.func $$getClassImpl__java_lang_Class@cloneable.Cloneables.WithCloneable)
  (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_clone__java_lang_Object@cloneable.Cloneables.WithCloneable)
 )
)
(global $java.lang.Cloneable.vtable@$cloneable.Cloneables.WithCloneable (ref $java.lang.Cloneable.vtable)
 (struct.new $java.lang.Cloneable.vtable
 )
)

;;; Code for cloneable.Cloneables.WithoutCloneableChild [vtable.init]
(global $cloneable.Cloneables.WithoutCloneableChild.vtable (ref $cloneable.Cloneables.WithoutCloneableChild.vtable)
 (struct.new $cloneable.Cloneables.WithoutCloneableChild.vtable
  (ref.func $$getClassImpl__java_lang_Class@cloneable.Cloneables.WithoutCloneableChild)
  (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_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneableChild)
 )
)

;;; Code for cloneable.Cloneables.WithCloneableChild [vtable.init]
(global $cloneable.Cloneables.WithCloneableChild.vtable (ref $cloneable.Cloneables.WithCloneableChild.vtable)
 (struct.new $cloneable.Cloneables.WithCloneableChild.vtable
  (ref.func $$getClassImpl__java_lang_Class@cloneable.Cloneables.WithCloneableChild)
  (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_clone__java_lang_Object@cloneable.Cloneables.WithCloneableChild)
 )
)
(global $java.lang.Cloneable.vtable@$cloneable.Cloneables.WithCloneableChild (ref $java.lang.Cloneable.vtable)
 (struct.new $java.lang.Cloneable.vtable
 )
)

;;; Code for cloneable.Cloneables [methods]

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

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

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

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

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

;;; Code for cloneable.Cloneables.WithoutCloneable [methods]

;;; WithoutCloneable WithoutCloneable.$create()
(func $$create__@cloneable.Cloneables.WithoutCloneable
 (result (ref null $cloneable.Cloneables.WithoutCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithoutCloneable )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (return (call $$create_$private__@cloneable.Cloneables.WithoutCloneable ))
 )
)

;;; WithoutCloneable WithoutCloneable.$create_$private()
(func $$create_$private__@cloneable.Cloneables.WithoutCloneable
 (result (ref null $cloneable.Cloneables.WithoutCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
 (local $$instance (ref null $cloneable.Cloneables.WithoutCloneable))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (local.set $$instance (struct.new $cloneable.Cloneables.WithoutCloneable (global.get $cloneable.Cloneables.WithoutCloneable.vtable) (global.get $itable.empty) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (call $$ctor__void_$p_cloneable_Cloneables_WithoutCloneable@cloneable.Cloneables.WithoutCloneable (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (return (local.get $$instance))
 )
)

;;; void WithoutCloneable.$ctor()
(func $$ctor__void_$p_cloneable_Cloneables_WithoutCloneable@cloneable.Cloneables.WithoutCloneable
 (param $this (ref null $cloneable.Cloneables.WithoutCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:19:22
  (call $$ctor__void_$p_java_lang_Object@java.lang.Object (ref.as_non_null (local.get $this)))
 )
)

;;; Object WithoutCloneable.clone()
(func $m_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneable
 (type $function.m_clone__java_lang_Object)
 (param $this.untyped (ref $java.lang.Object))
 (result (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:22:18
 (local $this (ref null $cloneable.Cloneables.WithoutCloneable))
 (local.set $this (ref.cast (ref $cloneable.Cloneables.WithoutCloneable) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:23:6
  (return (call $$create_$private__@cloneable.Cloneables.WithoutCloneable ))
 )
)
(elem declare func $m_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneable)

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

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

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

;;; Code for cloneable.Cloneables.WithCloneable [methods]

;;; WithCloneable WithCloneable.$create()
(func $$create__@cloneable.Cloneables.WithCloneable
 (result (ref null $cloneable.Cloneables.WithCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithCloneable )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (return (call $$create_$private__@cloneable.Cloneables.WithCloneable ))
 )
)

;;; WithCloneable WithCloneable.$create_$private()
(func $$create_$private__@cloneable.Cloneables.WithCloneable
 (result (ref null $cloneable.Cloneables.WithCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
 (local $$instance (ref null $cloneable.Cloneables.WithCloneable))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (local.set $$instance (struct.new $cloneable.Cloneables.WithCloneable (global.get $cloneable.Cloneables.WithCloneable.vtable) (global.get $cloneable.Cloneables.WithCloneable.itable) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (call $$ctor__void_$p_cloneable_Cloneables_WithCloneable@cloneable.Cloneables.WithCloneable (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (return (local.get $$instance))
 )
)

;;; void WithCloneable.$ctor()
(func $$ctor__void_$p_cloneable_Cloneables_WithCloneable@cloneable.Cloneables.WithCloneable
 (param $this (ref null $cloneable.Cloneables.WithCloneable))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:27:22
  (call $$ctor__void_$p_java_lang_Object@java.lang.Object (ref.as_non_null (local.get $this)))
 )
)

;;; Object WithCloneable.clone()
(func $m_clone__java_lang_Object@cloneable.Cloneables.WithCloneable
 (type $function.m_clone__java_lang_Object)
 (param $this.untyped (ref $java.lang.Object))
 (result (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:30:18
 (local $this (ref null $cloneable.Cloneables.WithCloneable))
 (local.set $this (ref.cast (ref $cloneable.Cloneables.WithCloneable) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:31:6
  (return (call $$create_$private__@cloneable.Cloneables.WithCloneable ))
 )
)
(elem declare func $m_clone__java_lang_Object@cloneable.Cloneables.WithCloneable)

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

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

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

;;; Code for cloneable.Cloneables.WithoutCloneableChild [methods]

;;; WithoutCloneableChild WithoutCloneableChild.$create()
(func $$create__@cloneable.Cloneables.WithoutCloneableChild
 (result (ref null $cloneable.Cloneables.WithoutCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithoutCloneableChild )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (return (call $$create_$private__@cloneable.Cloneables.WithoutCloneableChild ))
 )
)

;;; WithoutCloneableChild WithoutCloneableChild.$create_$private()
(func $$create_$private__@cloneable.Cloneables.WithoutCloneableChild
 (result (ref null $cloneable.Cloneables.WithoutCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
 (local $$instance (ref null $cloneable.Cloneables.WithoutCloneableChild))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (local.set $$instance (struct.new $cloneable.Cloneables.WithoutCloneableChild (global.get $cloneable.Cloneables.WithoutCloneableChild.vtable) (global.get $itable.empty) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (call $$ctor__void_$p_cloneable_Cloneables_WithoutCloneableChild@cloneable.Cloneables.WithoutCloneableChild (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (return (local.get $$instance))
 )
)

;;; void WithoutCloneableChild.$ctor()
(func $$ctor__void_$p_cloneable_Cloneables_WithoutCloneableChild@cloneable.Cloneables.WithoutCloneableChild
 (param $this (ref null $cloneable.Cloneables.WithoutCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (call $$ctor__void_$p_cloneable_Cloneables_WithoutCloneable@cloneable.Cloneables.WithoutCloneable (ref.as_non_null (local.get $this)))
 )
)

;;; Object WithoutCloneableChild.clone()
(func $m_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneableChild
 (type $function.m_clone__java_lang_Object)
 (param $this.untyped (ref $java.lang.Object))
 (result (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:37:18
 (local $this (ref null $cloneable.Cloneables.WithoutCloneableChild))
 (local.set $this (ref.cast (ref $cloneable.Cloneables.WithoutCloneableChild) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:38:6
  (return (call $$create_$private__@cloneable.Cloneables.WithoutCloneableChild ))
 )
)
(elem declare func $m_clone__java_lang_Object@cloneable.Cloneables.WithoutCloneableChild)

;;; void WithoutCloneableChild.$clinit()
(func $$clinit__void_<once>_@cloneable.Cloneables.WithoutCloneableChild
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (if (global.get $$class-initialized@cloneable.Cloneables.WithoutCloneableChild)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (global.set $$class-initialized@cloneable.Cloneables.WithoutCloneableChild (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:35:28
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithoutCloneable )
 )
)

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

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

;;; Code for cloneable.Cloneables.WithCloneableChild [methods]

;;; WithCloneableChild WithCloneableChild.$create()
(func $$create__@cloneable.Cloneables.WithCloneableChild
 (result (ref null $cloneable.Cloneables.WithCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithCloneableChild )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (return (call $$create_$private__@cloneable.Cloneables.WithCloneableChild ))
 )
)

;;; WithCloneableChild WithCloneableChild.$create_$private()
(func $$create_$private__@cloneable.Cloneables.WithCloneableChild
 (result (ref null $cloneable.Cloneables.WithCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
 (local $$instance (ref null $cloneable.Cloneables.WithCloneableChild))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (local.set $$instance (struct.new $cloneable.Cloneables.WithCloneableChild (global.get $cloneable.Cloneables.WithCloneableChild.vtable) (global.get $cloneable.Cloneables.WithCloneableChild.itable) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (call $$ctor__void_$p_cloneable_Cloneables_WithCloneableChild@cloneable.Cloneables.WithCloneableChild (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (return (local.get $$instance))
 )
)

;;; void WithCloneableChild.$ctor()
(func $$ctor__void_$p_cloneable_Cloneables_WithCloneableChild@cloneable.Cloneables.WithCloneableChild
 (param $this (ref null $cloneable.Cloneables.WithCloneableChild))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (call $$ctor__void_$p_cloneable_Cloneables_WithCloneable@cloneable.Cloneables.WithCloneable (ref.as_non_null (local.get $this)))
 )
)

;;; Object WithCloneableChild.clone()
(func $m_clone__java_lang_Object@cloneable.Cloneables.WithCloneableChild
 (type $function.m_clone__java_lang_Object)
 (param $this.untyped (ref $java.lang.Object))
 (result (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:44:18
 (local $this (ref null $cloneable.Cloneables.WithCloneableChild))
 (local.set $this (ref.cast (ref $cloneable.Cloneables.WithCloneableChild) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:45:6
  (return (call $$create_$private__@cloneable.Cloneables.WithCloneableChild ))
 )
)
(elem declare func $m_clone__java_lang_Object@cloneable.Cloneables.WithCloneableChild)

;;; void WithCloneableChild.$clinit()
(func $$clinit__void_<once>_@cloneable.Cloneables.WithCloneableChild
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (if (global.get $$class-initialized@cloneable.Cloneables.WithCloneableChild)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (global.set $$class-initialized@cloneable.Cloneables.WithCloneableChild (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/cloneable/readable-j2wasm.js/cloneable/Cloneables.java:42:28
  (call $$clinit__void_<once>_@cloneable.Cloneables.WithCloneable )
 )
)

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

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