(module
 (type $i31ref_structref_=>_none (func (param i31ref structref)))
 (type $i31ref_ref|i31|_structref_ref|struct|_=>_none (func (param i31ref (ref i31) structref (ref struct))))
 (global $global_anyref (mut anyref) (ref.null none))
 (global $global_eqref (mut eqref) (ref.null none))
 (global $global_i31ref (mut i31ref) (ref.i31
  (i32.const 0)
 ))
 (global $global_anyref2 (mut anyref) (ref.null none))
 (global $global_anyref3 (mut anyref) (ref.i31
  (i32.const 0)
 ))
 (global $global_eqref2 (mut eqref) (ref.i31
  (i32.const 0)
 ))
 (func $test (type $i31ref_structref_=>_none) (param $local_i31ref i31ref) (param $local_structref structref)
  (local $local_i32 i32)
  (local $local_anyref anyref)
  (local $local_eqref eqref)
  (local.set $local_anyref
   (local.get $local_anyref)
  )
  (local.set $local_anyref
   (global.get $global_anyref)
  )
  (local.set $local_anyref
   (ref.null none)
  )
  (local.set $local_eqref
   (local.get $local_eqref)
  )
  (local.set $local_eqref
   (global.get $global_eqref)
  )
  (local.set $local_eqref
   (ref.null none)
  )
  (local.set $local_i31ref
   (local.get $local_i31ref)
  )
  (local.set $local_i31ref
   (global.get $global_i31ref)
  )
  (local.set $local_i31ref
   (ref.i31
    (i32.const 0)
   )
  )
  (local.set $local_anyref
   (local.get $local_eqref)
  )
  (local.set $local_anyref
   (global.get $global_eqref)
  )
  (local.set $local_anyref
   (ref.null none)
  )
  (local.set $local_anyref
   (local.get $local_i31ref)
  )
  (local.set $local_anyref
   (global.get $global_i31ref)
  )
  (local.set $local_anyref
   (ref.i31
    (i32.const 0)
   )
  )
  (local.set $local_eqref
   (local.get $local_i31ref)
  )
  (local.set $local_eqref
   (global.get $global_i31ref)
  )
  (local.set $local_eqref
   (ref.i31
    (i32.const 0)
   )
  )
  (global.set $global_anyref
   (local.get $local_anyref)
  )
  (global.set $global_anyref
   (global.get $global_anyref)
  )
  (global.set $global_anyref
   (ref.null none)
  )
  (global.set $global_eqref
   (local.get $local_eqref)
  )
  (global.set $global_eqref
   (global.get $global_eqref)
  )
  (global.set $global_eqref
   (ref.null none)
  )
  (global.set $global_i31ref
   (local.get $local_i31ref)
  )
  (global.set $global_i31ref
   (global.get $global_i31ref)
  )
  (global.set $global_i31ref
   (ref.i31
    (i32.const 0)
   )
  )
  (global.set $global_anyref
   (local.get $local_eqref)
  )
  (global.set $global_anyref
   (global.get $global_eqref)
  )
  (global.set $global_anyref
   (ref.null none)
  )
  (global.set $global_anyref
   (local.get $local_i31ref)
  )
  (global.set $global_anyref
   (global.get $global_i31ref)
  )
  (global.set $global_anyref
   (ref.i31
    (i32.const 0)
   )
  )
  (global.set $global_eqref
   (local.get $local_i31ref)
  )
  (global.set $global_eqref
   (global.get $global_i31ref)
  )
  (global.set $global_eqref
   (ref.i31
    (i32.const 0)
   )
  )
  (local.set $local_i32
   (i31.get_s
    (local.get $local_i31ref)
   )
  )
  (local.set $local_i32
   (i31.get_u
    (local.get $local_i31ref)
   )
  )
 )
 (func $test-variants (type $i31ref_ref|i31|_structref_ref|struct|_=>_none) (param $local_i31refnull i31ref) (param $local_i31refnonnull (ref i31)) (param $local_structrefnull structref) (param $local_structrefnonnull (ref struct))
  (nop)
 )
)

