;;; Code for enums.Enum1 [type definition]
(type $enums.Enum1.vtable (sub $java.lang.Enum.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_compareTo__java_lang_Object__int (ref $function.m_compareTo__java_lang_Object__int))
 (field $m_getDeclaringClass__java_lang_Class (ref $function.m_getDeclaringClass__java_lang_Class))
 ))
)
(type $enums.Enum1 (sub $java.lang.Enum (struct
 (field $vtable (ref $enums.Enum1.vtable))
 (field $itable (ref $enums.Enum1.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 (field $name@java.lang.Enum (mut (ref null $java.lang.String)))
 (field $ordinal@java.lang.Enum (mut i32))
 ))
)

;;; Code for enums.Enum2 [type definition]
(type $enums.Enum2.vtable (sub $java.lang.Enum.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_compareTo__java_lang_Object__int (ref $function.m_compareTo__java_lang_Object__int))
 (field $m_getDeclaringClass__java_lang_Class (ref $function.m_getDeclaringClass__java_lang_Class))
 (field $m_specialMethods__void_$pp_enums (ref $function.m_specialMethods__void_$pp_enums))
 ))
)
(type $enums.Enum2 (sub $java.lang.Enum (struct
 (field $vtable (ref $enums.Enum2.vtable))
 (field $itable (ref $enums.Enum2.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 (field $name@java.lang.Enum (mut (ref null $java.lang.String)))
 (field $ordinal@java.lang.Enum (mut i32))
 (field $foo@enums.Enum2 (mut i32))
 ))
)

;;; Code for enums.Enum3 [type definition]
(type $enums.Enum3.vtable (sub $java.lang.Enum.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_compareTo__java_lang_Object__int (ref $function.m_compareTo__java_lang_Object__int))
 (field $m_getDeclaringClass__java_lang_Class (ref $function.m_getDeclaringClass__java_lang_Class))
 ))
)
(type $enums.Enum3 (sub $java.lang.Enum (struct
 (field $vtable (ref $enums.Enum3.vtable))
 (field $itable (ref $enums.Enum3.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 (field $name@java.lang.Enum (mut (ref null $java.lang.String)))
 (field $ordinal@java.lang.Enum (mut i32))
 ))
)

;;; Code for enums.Enum3.$LambdaImplementor$1 [type definition]
(type $enums.Enum3.$LambdaImplementor$1.vtable (sub $java.util.function.Function.$LambdaAdaptor.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_andThen__java_util_function_Function__java_util_function_Function (ref $function.m_andThen__java_util_function_Function__java_util_function_Function))
 (field $m_apply__java_lang_Object__java_lang_Object (ref $function.m_apply__java_lang_Object__java_lang_Object))
 (field $m_compose__java_util_function_Function__java_util_function_Function (ref $function.m_compose__java_util_function_Function__java_util_function_Function))
 (field $m_apply__java_lang_Integer__java_lang_Integer (ref $function.m_apply__java_lang_Integer__java_lang_Integer))
 ))
)
(type $enums.Enum3.$LambdaImplementor$1 (sub $java.util.function.Function.$LambdaAdaptor (struct
 (field $vtable (ref $enums.Enum3.$LambdaImplementor$1.vtable))
 (field $itable (ref $enums.Enum3.$LambdaImplementor$1.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 ))
)

;;; Code for enums.Enum2.1 [type definition]
(type $enums.Enum2.1.vtable (sub $enums.Enum2.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_compareTo__java_lang_Object__int (ref $function.m_compareTo__java_lang_Object__int))
 (field $m_getDeclaringClass__java_lang_Class (ref $function.m_getDeclaringClass__java_lang_Class))
 (field $m_specialMethods__void_$pp_enums (ref $function.m_specialMethods__void_$pp_enums))
 ))
)
(type $enums.Enum2.1 (sub $enums.Enum2 (struct
 (field $vtable (ref $enums.Enum2.1.vtable))
 (field $itable (ref $enums.Enum2.1.itable))
 (field $$systemIdentityHashCode@java.lang.Object (mut i32))
 (field $name@java.lang.Enum (mut (ref null $java.lang.String)))
 (field $ordinal@java.lang.Enum (mut i32))
 (field $foo@enums.Enum2 (mut i32))
 ))
)

;;; Code for enums.Enum1 [imports]

;;; Code for enums.Enum2 [imports]

;;; Code for enums.Enum3 [imports]

;;; Code for enums.Enum3.$LambdaImplementor$1 [imports]

;;; Code for enums.Enum2.1 [imports]

;;; Code for enums.Enum1 [static fields]
(global $V1@enums.Enum1 (mut (ref null $enums.Enum1))
 (ref.null $enums.Enum1)
)
(global $V2@enums.Enum1 (mut (ref null $enums.Enum1))
 (ref.null $enums.Enum1)
)
(global $namesToValuesMap@enums.Enum1 (mut (ref null $java.lang.Object))
 (ref.null $java.lang.Object)
)
(global $$class-initialized@enums.Enum1 (mut i32)
 (i32.const 0)
)
(global $$class@enums.Enum1 (mut (ref null $java.lang.Class))
 (ref.null $java.lang.Class)
)

;;; Code for enums.Enum2 [static fields]
(global $VALUE1@enums.Enum2 (mut (ref null $enums.Enum2))
 (ref.null $enums.Enum2)
)
(global $VALUE2@enums.Enum2 (mut (ref null $enums.Enum2))
 (ref.null $enums.Enum2)
)
(global $VALUE3@enums.Enum2 (mut (ref null $enums.Enum2))
 (ref.null $enums.Enum2)
)
(global $VALUE4@enums.Enum2 (mut (ref null $enums.Enum2))
 (ref.null $enums.Enum2)
)
(global $C@enums.Enum2 (mut (ref null $enums.Enum2))
 (ref.null $enums.Enum2)
)
(global $namesToValuesMap@enums.Enum2 (mut (ref null $java.lang.Object))
 (ref.null $java.lang.Object)
)
(global $$class-initialized@enums.Enum2 (mut i32)
 (i32.const 0)
)
(global $$class@enums.Enum2 (mut (ref null $java.lang.Class))
 (ref.null $java.lang.Class)
)

;;; Code for enums.Enum3 [static fields]
(global $VALUE1@enums.Enum3 (mut (ref null $enums.Enum3))
 (ref.null $enums.Enum3)
)
(global $namesToValuesMap@enums.Enum3 (mut (ref null $java.lang.Object))
 (ref.null $java.lang.Object)
)
(global $$class-initialized@enums.Enum3 (mut i32)
 (i32.const 0)
)
(global $$class@enums.Enum3 (mut (ref null $java.lang.Class))
 (ref.null $java.lang.Class)
)

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

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

;;; Code for enums.Enum1 [vtable.init]
(global $enums.Enum1.vtable (ref $enums.Enum1.vtable)
 (struct.new $enums.Enum1.vtable
  (ref.func $$getClassImpl__java_lang_Class@enums.Enum1)
  (ref.func $m_equals__java_lang_Object__boolean@java.lang.Enum)
  (ref.func $m_hashCode__int@java.lang.Enum)
  (ref.func $m_toString__java_lang_String@java.lang.Enum)
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
  (ref.func $m_getDeclaringClass__java_lang_Class@java.lang.Enum)
 )
)
(global $java.lang.Comparable.vtable@$enums.Enum1 (ref $java.lang.Comparable.vtable)
 (struct.new $java.lang.Comparable.vtable
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
 )
)
(global $java.io.Serializable.vtable@$enums.Enum1 (ref $java.io.Serializable.vtable)
 (struct.new $java.io.Serializable.vtable
 )
)

;;; Code for enums.Enum2 [vtable.init]
(global $enums.Enum2.vtable (ref $enums.Enum2.vtable)
 (struct.new $enums.Enum2.vtable
  (ref.func $$getClassImpl__java_lang_Class@enums.Enum2)
  (ref.func $m_equals__java_lang_Object__boolean@java.lang.Enum)
  (ref.func $m_hashCode__int@java.lang.Enum)
  (ref.func $m_toString__java_lang_String@java.lang.Enum)
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
  (ref.func $m_getDeclaringClass__java_lang_Class@java.lang.Enum)
  (ref.func $m_specialMethods__void_$pp_enums@enums.Enum2)
 )
)
(global $java.lang.Comparable.vtable@$enums.Enum2 (ref $java.lang.Comparable.vtable)
 (struct.new $java.lang.Comparable.vtable
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
 )
)
(global $java.io.Serializable.vtable@$enums.Enum2 (ref $java.io.Serializable.vtable)
 (struct.new $java.io.Serializable.vtable
 )
)

;;; Code for enums.Enum3 [vtable.init]
(global $enums.Enum3.vtable (ref $enums.Enum3.vtable)
 (struct.new $enums.Enum3.vtable
  (ref.func $$getClassImpl__java_lang_Class@enums.Enum3)
  (ref.func $m_equals__java_lang_Object__boolean@java.lang.Enum)
  (ref.func $m_hashCode__int@java.lang.Enum)
  (ref.func $m_toString__java_lang_String@java.lang.Enum)
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
  (ref.func $m_getDeclaringClass__java_lang_Class@java.lang.Enum)
 )
)
(global $java.lang.Comparable.vtable@$enums.Enum3 (ref $java.lang.Comparable.vtable)
 (struct.new $java.lang.Comparable.vtable
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
 )
)
(global $java.io.Serializable.vtable@$enums.Enum3 (ref $java.io.Serializable.vtable)
 (struct.new $java.io.Serializable.vtable
 )
)

;;; Code for enums.Enum2.1 [vtable.init]
(global $enums.Enum2.1.vtable (ref $enums.Enum2.1.vtable)
 (struct.new $enums.Enum2.1.vtable
  (ref.func $$getClassImpl__java_lang_Class@enums.Enum2.1)
  (ref.func $m_equals__java_lang_Object__boolean@java.lang.Enum)
  (ref.func $m_hashCode__int@java.lang.Enum)
  (ref.func $m_toString__java_lang_String@java.lang.Enum)
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
  (ref.func $m_getDeclaringClass__java_lang_Class@java.lang.Enum)
  (ref.func $m_specialMethods__void_$pp_enums@enums.Enum2)
 )
)
(global $java.lang.Comparable.vtable@$enums.Enum2.1 (ref $java.lang.Comparable.vtable)
 (struct.new $java.lang.Comparable.vtable
  (ref.func $m_compareTo__java_lang_Object__int@java.lang.Enum)
 )
)
(global $java.io.Serializable.vtable@$enums.Enum2.1 (ref $java.io.Serializable.vtable)
 (struct.new $java.io.Serializable.vtable
 )
)

;;; Code for enums.Enum3.$LambdaImplementor$1 [vtable.init]
(global $enums.Enum3.$LambdaImplementor$1.vtable (ref $enums.Enum3.$LambdaImplementor$1.vtable)
 (struct.new $enums.Enum3.$LambdaImplementor$1.vtable
  (ref.func $$getClassImpl__java_lang_Class@java.util.function.Function.$LambdaAdaptor)
  (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_andThen__java_util_function_Function__java_util_function_Function@java.util.function.Function.$LambdaAdaptor)
  (ref.func $m_apply__java_lang_Object__java_lang_Object@enums.Enum3.$LambdaImplementor$1)
  (ref.func $m_compose__java_util_function_Function__java_util_function_Function@java.util.function.Function.$LambdaAdaptor)
  (ref.func $m_apply__java_lang_Integer__java_lang_Integer@enums.Enum3.$LambdaImplementor$1)
 )
)
(global $java.util.function.Function.vtable@$enums.Enum3.$LambdaImplementor$1 (ref $java.util.function.Function.vtable)
 (struct.new $java.util.function.Function.vtable
  (ref.func $m_andThen__java_util_function_Function__java_util_function_Function@java.util.function.Function.$LambdaAdaptor)
  (ref.func $m_apply__java_lang_Object__java_lang_Object@enums.Enum3.$LambdaImplementor$1)
  (ref.func $m_compose__java_util_function_Function__java_util_function_Function@java.util.function.Function.$LambdaAdaptor)
 )
)

;;; Code for enums.Enum1 [methods]

;;; Enum1 Enum1.$create(String $name, int $ordinal)
(func $$create__java_lang_String__int@enums.Enum1
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (result (ref null $enums.Enum1))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (local $$instance (ref null $enums.Enum1))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (local.set $$instance (struct.new $enums.Enum1 (global.get $enums.Enum1.vtable) (global.get $enums.Enum1.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (call $$ctor__java_lang_String__int__void_$p_enums_Enum1@enums.Enum1 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (return (local.get $$instance))
 )
)

;;; void Enum1.$ctor(String $name, int $ordinal)
(func $$ctor__java_lang_String__int__void_$p_enums_Enum1@enums.Enum1
 (param $this (ref null $enums.Enum1))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (struct.set $java.lang.Enum $name@java.lang.Enum (local.get $this) (local.get $$name))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (struct.set $java.lang.Enum $ordinal@java.lang.Enum (local.get $this) (local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (call $$ctor__java_lang_String__int__void_$p_java_lang_Enum@java.lang.Enum (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal))
 )
)

;;; Enum1 Enum1.valueOf(String name)
(func $m_valueOf__java_lang_String__enums_Enum1@enums.Enum1
 (param $name (ref null $java.lang.String))
 (result (ref null $enums.Enum1))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (call $$clinit__void_<once>_@enums.Enum1 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (if (ref.is_null (global.get $namesToValuesMap@enums.Enum1))
   (then
    (block
     ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
     (global.set $namesToValuesMap@enums.Enum1 (call $m_createMapFromValues__arrayOf_java_lang_Enum__java_util_Map@javaemul.internal.Enums (call $m_values_$private__arrayOf_enums_Enum1@enums.Enum1 )))
    )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (return (ref.cast (ref null $enums.Enum1) (call $m_getValueFromNameAndMap__java_lang_String__java_util_Map__java_lang_Object@javaemul.internal.Enums (local.get $name)(global.get $namesToValuesMap@enums.Enum1))))
 )
)

;;; Enum1[] Enum1.values()
(func $m_values__arrayOf_enums_Enum1@enums.Enum1
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (call $$clinit__void_<once>_@enums.Enum1 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (return (call $m_values_$private__arrayOf_enums_Enum1@enums.Enum1 ))
 )
)

;;; Enum1[] Enum1.values_$private()
(func $m_values_$private__arrayOf_enums_Enum1@enums.Enum1
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (return (call $m_newWithLiteral__arrayOf_java_lang_Object__javaemul_internal_WasmArray_OfObject@javaemul.internal.WasmArray.OfObject (array.new_fixed $java.lang.Object.array 2 (global.get $V1@enums.Enum1)(global.get $V2@enums.Enum1))))
 )
)

;;; void Enum1.$clinit()
(func $$clinit__void_<once>_@enums.Enum1
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (if (global.get $$class-initialized@enums.Enum1)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (global.set $$class-initialized@enums.Enum1 (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:20:12
  (call $$clinit__void_<once>_@java.lang.Enum )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:21:2
  (global.set $V1@enums.Enum1 (call $$create__java_lang_String__int@enums.Enum1 (call $$getString_|V1|__java_lang_String_<once>_@enums.Enum1 )(i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:22:2
  (global.set $V2@enums.Enum1 (call $$create__java_lang_String__int@enums.Enum1 (call $$getString_|V2|__java_lang_String_<once>_@enums.Enum1 )(i32.const 1)))
 )
)

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

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

;;; Code for enums.Enum2 [methods]

;;; Enum2 Enum2.$create(String $name, int $ordinal, int foo)
(func $$create__java_lang_String__int__int@enums.Enum2
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $foo i32)
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
 (local $$instance (ref null $enums.Enum2))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
  (local.set $$instance (struct.new $enums.Enum2 (global.get $enums.Enum2.vtable) (global.get $enums.Enum2.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
  (call $$ctor__java_lang_String__int__int__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal)(local.get $foo))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
  (return (local.get $$instance))
 )
)

;;; void Enum2.$ctor(String $name, int $ordinal, int foo)
(func $$ctor__java_lang_String__int__int__void_$p_enums_Enum2@enums.Enum2
 (param $this (ref null $enums.Enum2))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $foo i32)
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
  (struct.set $java.lang.Enum $name@java.lang.Enum (local.get $this) (local.get $$name))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:2
  (struct.set $java.lang.Enum $ordinal@java.lang.Enum (local.get $this) (local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:17
  (call $$ctor__java_lang_String__int__void_$p_java_lang_Enum@java.lang.Enum (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:33:17
  (call $$init__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $this)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:34:4
  (struct.set $enums.Enum2 $foo@enums.Enum2 (local.get $this) (local.get $foo))
 )
)

;;; Enum2 Enum2.$create(String $name, int $ordinal, Enum foo)
(func $$create__java_lang_String__int__java_lang_Enum@enums.Enum2
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $foo (ref null $java.lang.Enum))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
 (local $$instance (ref null $enums.Enum2))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
  (local.set $$instance (struct.new $enums.Enum2 (global.get $enums.Enum2.vtable) (global.get $enums.Enum2.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
  (call $$ctor__java_lang_String__int__java_lang_Enum__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal)(local.get $foo))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
  (return (local.get $$instance))
 )
)

;;; void Enum2.$ctor(String $name, int $ordinal, Enum foo)
(func $$ctor__java_lang_String__int__java_lang_Enum__void_$p_enums_Enum2@enums.Enum2
 (param $this (ref null $enums.Enum2))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $foo (ref null $java.lang.Enum))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
  (struct.set $java.lang.Enum $name@java.lang.Enum (local.get $this) (local.get $$name))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:37:2
  (struct.set $java.lang.Enum $ordinal@java.lang.Enum (local.get $this) (local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:38:4
  (call $$ctor__java_lang_String__int__int__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal)(call $m_ordinal__int@java.lang.Enum (ref.as_non_null (local.get $foo))))
 )
)

;;; Enum2 Enum2.$create(String $name, int $ordinal, Object... somePars)
(func $$create__java_lang_String__int__arrayOf_java_lang_Object@enums.Enum2
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $somePars (ref null $javaemul.internal.WasmArray.OfObject))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
 (local $$instance (ref null $enums.Enum2))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
  (local.set $$instance (struct.new $enums.Enum2 (global.get $enums.Enum2.vtable) (global.get $enums.Enum2.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
  (call $$ctor__java_lang_String__int__arrayOf_java_lang_Object__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal)(local.get $somePars))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
  (return (local.get $$instance))
 )
)

;;; void Enum2.$ctor(String $name, int $ordinal, Object... somePars)
(func $$ctor__java_lang_String__int__arrayOf_java_lang_Object__void_$p_enums_Enum2@enums.Enum2
 (param $this (ref null $enums.Enum2))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $somePars (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
  (struct.set $java.lang.Enum $name@java.lang.Enum (local.get $this) (local.get $$name))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:41:2
  (struct.set $java.lang.Enum $ordinal@java.lang.Enum (local.get $this) (local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:42:4
  (call $$ctor__java_lang_String__int__int__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal)(array.len (struct.get $javaemul.internal.WasmArray.OfObject $elements@javaemul.internal.WasmArray.OfObject (local.get $somePars))))
 )
)

;;; Enum2 Enum2.f(Object arg0)
(func $m_f__java_lang_Object__enums_Enum2@enums.Enum2
 (param $arg0 (ref null $java.lang.Object))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:45:15
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:45:15
  (call $$clinit__void_<once>_@enums.Enum2 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:45:15
  (return (call $m_f_$private__java_lang_Object__enums_Enum2@enums.Enum2 (local.get $arg0)))
 )
)

;;; Enum2 Enum2.f_$private(Object o)
(func $m_f_$private__java_lang_Object__enums_Enum2@enums.Enum2
 (param $o (ref null $java.lang.Object))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:45:15
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:46:4
  (return (ref.null $enums.Enum2))
 )
)

;;; void Enum2.specialMethods()
(func $m_specialMethods__void_$pp_enums@enums.Enum2
 (type $function.m_specialMethods__void_$pp_enums)
 (param $this.untyped (ref $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:51:7
 (local $o1 i32)
 (local $o2 i32)
 (local $l i32)
 (local $this (ref null $enums.Enum2))
 (local.set $this (ref.cast (ref $enums.Enum2) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:52:4
  (local.set $o1 (call $m_ordinal__int@java.lang.Enum (ref.as_non_null (call $m_valueOf_$private__java_lang_String__enums_Enum2@enums.Enum2 (ref.null $java.lang.String)))))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:53:4
  (local.set $o2 (call $m_ordinal__int@java.lang.Enum (ref.as_non_null (call $m_valueOf_$private__java_lang_String__enums_Enum2@enums.Enum2 (call $$getString_|VALUE1|__java_lang_String_<once>_@enums.Enum2 )))))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:54:4
  (local.set $l (array.len (struct.get $javaemul.internal.WasmArray.OfObject $elements@javaemul.internal.WasmArray.OfObject (call $m_values_$private__arrayOf_enums_Enum2@enums.Enum2 ))))
 )
)
(elem declare func $m_specialMethods__void_$pp_enums@enums.Enum2)

;;; Enum2 Enum2.valueOf(String arg0)
(func $m_valueOf__java_lang_String__enums_Enum2@enums.Enum2
 (param $arg0 (ref null $java.lang.String))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (call $$clinit__void_<once>_@enums.Enum2 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (return (call $m_valueOf_$private__java_lang_String__enums_Enum2@enums.Enum2 (local.get $arg0)))
 )
)

;;; Enum2 Enum2.valueOf_$private(String name)
(func $m_valueOf_$private__java_lang_String__enums_Enum2@enums.Enum2
 (param $name (ref null $java.lang.String))
 (result (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (if (ref.is_null (global.get $namesToValuesMap@enums.Enum2))
   (then
    (block
     ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
     (global.set $namesToValuesMap@enums.Enum2 (call $m_createMapFromValues__arrayOf_java_lang_Enum__java_util_Map@javaemul.internal.Enums (call $m_values_$private__arrayOf_enums_Enum2@enums.Enum2 )))
    )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (return (ref.cast (ref null $enums.Enum2) (call $m_getValueFromNameAndMap__java_lang_String__java_util_Map__java_lang_Object@javaemul.internal.Enums (local.get $name)(global.get $namesToValuesMap@enums.Enum2))))
 )
)

;;; Enum2[] Enum2.values()
(func $m_values__arrayOf_enums_Enum2@enums.Enum2
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (call $$clinit__void_<once>_@enums.Enum2 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (return (call $m_values_$private__arrayOf_enums_Enum2@enums.Enum2 ))
 )
)

;;; Enum2[] Enum2.values_$private()
(func $m_values_$private__arrayOf_enums_Enum2@enums.Enum2
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (return (call $m_newWithLiteral__arrayOf_java_lang_Object__javaemul_internal_WasmArray_OfObject@javaemul.internal.WasmArray.OfObject (array.new_fixed $java.lang.Object.array 4 (global.get $VALUE1@enums.Enum2)(global.get $VALUE2@enums.Enum2)(global.get $VALUE3@enums.Enum2)(global.get $VALUE4@enums.Enum2))))
 )
)

;;; void Enum2.$init()
(func $$init__void_$p_enums_Enum2@enums.Enum2
 (param $this (ref null $enums.Enum2))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:31:2
  (struct.set $enums.Enum2 $foo@enums.Enum2 (local.get $this) (call $m_ordinal__int@java.lang.Enum (ref.as_non_null (block (result (ref null $enums.Enum1))
   (call $$clinit__void_<once>_@enums.Enum1 )
   (global.get $V1@enums.Enum1)
  ))))
 )
)

;;; void Enum2.$clinit()
(func $$clinit__void_<once>_@enums.Enum2
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (if (global.get $$class-initialized@enums.Enum2)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (global.set $$class-initialized@enums.Enum2 (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:25:5
  (call $$clinit__void_<once>_@java.lang.Enum )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:26:2
  (global.set $VALUE1@enums.Enum2 (call $$create__java_lang_String__int__int@enums.Enum2 (call $$getString_|VALUE1|__java_lang_String_<once>_@enums.Enum2 )(i32.const 0)(i32.const 2)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:27:2
  (global.set $VALUE2@enums.Enum2 (call $$create__java_lang_String__int__java_lang_Enum@enums.Enum2 (call $$getString_|VALUE2|__java_lang_String_<once>_@enums.Enum2 )(i32.const 1)(block (result (ref null $enums.Enum1))
   (call $$clinit__void_<once>_@enums.Enum1 )
   (global.get $V1@enums.Enum1)
  )))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:28:2
  (global.set $VALUE3@enums.Enum2 (call $$create__java_lang_String__int__arrayOf_java_lang_Object@enums.Enum2 (call $$getString_|VALUE3|__java_lang_String_<once>_@enums.Enum2 )(i32.const 2)(call $m_newWithLiteral__arrayOf_java_lang_Object__javaemul_internal_WasmArray_OfObject@javaemul.internal.WasmArray.OfObject (array.new_fixed $java.lang.Object.array 0 ))))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:2
  (global.set $VALUE4@enums.Enum2 (call $$create__java_lang_String__int__int@enums.Enum2.1 (call $$getString_|VALUE4|__java_lang_String_<once>_@enums.Enum2 )(i32.const 3)(i32.const 5)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:49:2
  (global.set $C@enums.Enum2 (call $m_f_$private__java_lang_Object__enums_Enum2@enums.Enum2 (call $$create__@java.lang.Object )))
 )
)

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

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

;;; Code for enums.Enum3 [methods]

;;; Enum3 Enum3.$create(String $name, int $ordinal, Function<Integer, Integer> function)
(func $$create__java_lang_String__int__java_util_function_Function@enums.Enum3
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $function (ref null $java.lang.Object))
 (result (ref null $enums.Enum3))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
 (local $$instance (ref null $enums.Enum3))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
  (local.set $$instance (struct.new $enums.Enum3 (global.get $enums.Enum3.vtable) (global.get $enums.Enum3.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
  (call $$ctor__java_lang_String__int__java_util_function_Function__void_$p_enums_Enum3@enums.Enum3 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal)(local.get $function))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
  (return (local.get $$instance))
 )
)

;;; void Enum3.$ctor(String $name, int $ordinal, Function<Integer, Integer> function)
(func $$ctor__java_lang_String__int__java_util_function_Function__void_$p_enums_Enum3@enums.Enum3
 (param $this (ref null $enums.Enum3))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $function (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
  (struct.set $java.lang.Enum $name@java.lang.Enum (local.get $this) (local.get $$name))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:2
  (struct.set $java.lang.Enum $ordinal@java.lang.Enum (local.get $this) (local.get $$ordinal))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:61:45
  (call $$ctor__java_lang_String__int__void_$p_java_lang_Enum@java.lang.Enum (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal))
 )
)

;;; Enum3 Enum3.valueOf(String name)
(func $m_valueOf__java_lang_String__enums_Enum3@enums.Enum3
 (param $name (ref null $java.lang.String))
 (result (ref null $enums.Enum3))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (call $$clinit__void_<once>_@enums.Enum3 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (if (ref.is_null (global.get $namesToValuesMap@enums.Enum3))
   (then
    (block
     ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
     (global.set $namesToValuesMap@enums.Enum3 (call $m_createMapFromValues__arrayOf_java_lang_Enum__java_util_Map@javaemul.internal.Enums (call $m_values_$private__arrayOf_enums_Enum3@enums.Enum3 )))
    )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (return (ref.cast (ref null $enums.Enum3) (call $m_getValueFromNameAndMap__java_lang_String__java_util_Map__java_lang_Object@javaemul.internal.Enums (local.get $name)(global.get $namesToValuesMap@enums.Enum3))))
 )
)

;;; Enum3[] Enum3.values()
(func $m_values__arrayOf_enums_Enum3@enums.Enum3
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (call $$clinit__void_<once>_@enums.Enum3 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (return (call $m_values_$private__arrayOf_enums_Enum3@enums.Enum3 ))
 )
)

;;; Enum3[] Enum3.values_$private()
(func $m_values_$private__arrayOf_enums_Enum3@enums.Enum3
 (result (ref null $javaemul.internal.WasmArray.OfObject))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (return (call $m_newWithLiteral__arrayOf_java_lang_Object__javaemul_internal_WasmArray_OfObject@javaemul.internal.WasmArray.OfObject (array.new_fixed $java.lang.Object.array 1 (global.get $VALUE1@enums.Enum3))))
 )
)

;;; void Enum3.$clinit()
(func $$clinit__void_<once>_@enums.Enum3
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (if (global.get $$class-initialized@enums.Enum3)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (global.set $$class-initialized@enums.Enum3 (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:58:5
  (call $$clinit__void_<once>_@java.lang.Enum )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:2
  (global.set $VALUE1@enums.Enum3 (call $$create__java_lang_String__int__java_util_function_Function@enums.Enum3 (call $$getString_|VALUE1|__java_lang_String_<once>_@enums.Enum2 )(i32.const 0)(call $$create__@enums.Enum3.$LambdaImplementor$1 )))
 )
)

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

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

;;; Code for enums.Enum3.$LambdaImplementor$1 [methods]

;;; <anonymous> implements Function<Integer, Integer> <anonymous> implements Function<Integer, Integer>.$create()
(func $$create__@enums.Enum3.$LambdaImplementor$1
 (result (ref null $enums.Enum3.$LambdaImplementor$1))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
 (local $$instance (ref null $enums.Enum3.$LambdaImplementor$1))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (call $$clinit__void_<once>_@enums.Enum3.$LambdaImplementor$1 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (local.set $$instance (struct.new $enums.Enum3.$LambdaImplementor$1 (global.get $enums.Enum3.$LambdaImplementor$1.vtable) (global.get $enums.Enum3.$LambdaImplementor$1.itable) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (call $$ctor__void_$p_enums_Enum3_$LambdaImplementor$1@enums.Enum3.$LambdaImplementor$1 (ref.as_non_null (local.get $$instance)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (return (local.get $$instance))
 )
)

;;; void <anonymous> implements Function<Integer, Integer>.$ctor()
(func $$ctor__void_$p_enums_Enum3_$LambdaImplementor$1@enums.Enum3.$LambdaImplementor$1
 (param $this (ref null $enums.Enum3.$LambdaImplementor$1))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (call $$ctor__void_$p_java_util_function_Function_$LambdaAdaptor@java.util.function.Function.$LambdaAdaptor (ref.as_non_null (local.get $this)))
 )
)

;;; Integer <anonymous> implements Function<Integer, Integer>.apply(Integer v)
(func $m_apply__java_lang_Integer__java_lang_Integer@enums.Enum3.$LambdaImplementor$1
 (type $function.m_apply__java_lang_Integer__java_lang_Integer)
 (param $this.untyped (ref $java.lang.Object))
 (param $v (ref null $java.lang.Integer))
 (result (ref null $java.lang.Integer))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
 (local $this (ref null $enums.Enum3.$LambdaImplementor$1))
 (local.set $this (ref.cast (ref $enums.Enum3.$LambdaImplementor$1) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:14
  (return (call $m_valueOf__int__java_lang_Integer@java.lang.Integer (i32.add (i32.const 1) (call $m_intValue__int@java.lang.Integer (ref.as_non_null (local.get $v))))))
 )
)
(elem declare func $m_apply__java_lang_Integer__java_lang_Integer@enums.Enum3.$LambdaImplementor$1)

;;; Integer <anonymous> implements Function<Integer, Integer>.apply(T arg0)
(func $m_apply__java_lang_Object__java_lang_Object@enums.Enum3.$LambdaImplementor$1
 (type $function.m_apply__java_lang_Object__java_lang_Object)
 (param $this.untyped (ref $java.lang.Object))
 (param $arg0 (ref null $java.lang.Object))
 (result (ref null $java.lang.Object))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
 (local $this (ref null $enums.Enum3.$LambdaImplementor$1))
 (local.set $this (ref.cast (ref $enums.Enum3.$LambdaImplementor$1) (local.get $this.untyped)))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (return (call_ref $function.m_apply__java_lang_Integer__java_lang_Integer (ref.as_non_null (local.get $this))(ref.cast (ref null $java.lang.Integer) (local.get $arg0))(struct.get $enums.Enum3.$LambdaImplementor$1.vtable $m_apply__java_lang_Integer__java_lang_Integer (struct.get $enums.Enum3.$LambdaImplementor$1 $vtable(local.get $this)))))
 )
)
(elem declare func $m_apply__java_lang_Object__java_lang_Object@enums.Enum3.$LambdaImplementor$1)

;;; void <anonymous> implements Function<Integer, Integer>.$clinit()
(func $$clinit__void_<once>_@enums.Enum3.$LambdaImplementor$1
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (if (global.get $$class-initialized@enums.Enum3.$LambdaImplementor$1)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (global.set $$class-initialized@enums.Enum3.$LambdaImplementor$1 (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (call $$clinit__void_<once>_@java.util.function.Function.$LambdaAdaptor )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:59:9
  (call $$clinit__void_<once>_@java.util.function.Function )
 )
)

;;; Class<T> <anonymous> implements Function<Integer, Integer>.$getClassMetadata()
(func $$getClassMetadata__java_lang_Class_<once>_@enums.Enum3.$LambdaImplementor$1
 (result (ref null $java.lang.Class))
 (block
  (if (i32.eqz (ref.is_null (global.get $$class@enums.Enum3.$LambdaImplementor$1)))
   (then
    (return (global.get $$class@enums.Enum3.$LambdaImplementor$1))
   )
  )
  (global.set $$class@enums.Enum3.$LambdaImplementor$1 (call $m_createForClass__java_lang_String__java_lang_Class__java_lang_Class@java.lang.Class (call $$getString_|enums.Enum3_...|__java_lang_String_<once>_@enums.Enum3.$LambdaImplementor$1 )(call $$getClassMetadata__java_lang_Class_<once>_@java.util.function.Function.$LambdaAdaptor )))
  (return (global.get $$class@enums.Enum3.$LambdaImplementor$1))
 )
)

;;; Code for enums.Enum2.1 [methods]

;;; <anonymous> extends Enum2 <anonymous> extends Enum2.$create(String $name, int $ordinal, int $_0)
(func $$create__java_lang_String__int__int@enums.Enum2.1
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $$_0 i32)
 (result (ref null $enums.Enum2.1))
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
 (local $$instance (ref null $enums.Enum2.1))
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (call $$clinit__void_<once>_@enums.Enum2.1 )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (local.set $$instance (struct.new $enums.Enum2.1 (global.get $enums.Enum2.1.vtable) (global.get $enums.Enum2.1.itable) (i32.const 0) (ref.null $java.lang.String) (i32.const 0) (i32.const 0)))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (call $$ctor__java_lang_String__int__int__void_$p_enums_Enum2_1@enums.Enum2.1 (ref.as_non_null (local.get $$instance))(local.get $$name)(local.get $$ordinal)(local.get $$_0))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (return (local.get $$instance))
 )
)

;;; void <anonymous> extends Enum2.$ctor(String $name, int $ordinal, int $_0)
(func $$ctor__java_lang_String__int__int__void_$p_enums_Enum2_1@enums.Enum2.1
 (param $this (ref null $enums.Enum2.1))
 (param $$name (ref null $java.lang.String))
 (param $$ordinal i32)
 (param $$_0 i32)
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (call $$ctor__java_lang_String__int__int__void_$p_enums_Enum2@enums.Enum2 (ref.as_non_null (local.get $this))(local.get $$name)(local.get $$ordinal)(local.get $$_0))
 )
)

;;; void <anonymous> extends Enum2.$clinit()
(func $$clinit__void_<once>_@enums.Enum2.1
 ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
 (block
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (if (global.get $$class-initialized@enums.Enum2.1)
   (then
    ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
    (return )
   )
  )
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (global.set $$class-initialized@enums.Enum2.1 (i32.const 1))
  ;;@ transpiler/javatests/com/google/j2cl/readable/java/enums/readable-j2wasm.js/enums/Enum1.java:29:12
  (call $$clinit__void_<once>_@enums.Enum2 )
 )
)

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

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