#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function* f() { }
  f();
"
frame size: 12
parameter count: 1
bytecode array length: 199
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(27),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(2),
                B(ResumeGenerator), R(new_target),
                B(Star), R(1),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(54),
                B(LdaSmi), I8(79),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(CreateFunctionContext), U8(2),
                B(PushContext), R(0),
                B(Ldar), R(this),
                B(StaCurrentContextSlot), U8(4),
  /*   11 E> */ B(StackCheck),
                B(Mov), R(context), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(Mov), R(closure), R(6),
  /*   11 E> */ B(CallRuntime), U16(Runtime::kCreateJSGeneratorObject), R(6), U8(2),
                B(StaCurrentContextSlot), U8(5),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(7),
                B(LdaZero),
                B(SuspendGenerator), R(7), U8(0),
                B(Ldar), R(6),
  /*   16 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
                B(Star), R(9),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(30),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(21),
                B(Jump), U8(2),
                B(LdaTrue),
                B(Star), R(11),
                B(Mov), R(8), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(35),
                B(Ldar), R(8),
  /*   11 E> */ B(Throw),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaTrue),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Jump), U8(8),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::k_GeneratorClose), R(6), U8(1),
                B(Ldar), R(5),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(16),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(13),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(10),
                B(Jump), U8(11),
                B(Ldar), R(4),
  /*   16 S> */ B(Return),
                B(Ldar), R(4),
  /*   16 S> */ B(Return),
                B(Ldar), R(4),
                B(ReThrow),
                B(LdaUndefined),
  /*   16 S> */ B(Return),
]
constant pool: [
]
handlers: [
  [45, 141, 147],
]

---
snippet: "
  function* f() { yield 42 }
  f();
"
frame size: 12
parameter count: 1
bytecode array length: 291
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(33),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(2),
                B(ResumeGenerator), R(new_target),
                B(Star), R(1),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(60),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(130),
                B(LdaSmi), I8(79),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::kAbort), R(3), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(CreateFunctionContext), U8(2),
                B(PushContext), R(0),
                B(Ldar), R(this),
                B(StaCurrentContextSlot), U8(4),
  /*   11 E> */ B(StackCheck),
                B(Mov), R(context), R(5),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(7),
                B(Mov), R(closure), R(6),
  /*   11 E> */ B(CallRuntime), U16(Runtime::kCreateJSGeneratorObject), R(6), U8(2),
                B(StaCurrentContextSlot), U8(5),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(7),
                B(LdaZero),
                B(SuspendGenerator), R(7), U8(0),
                B(Ldar), R(6),
  /*   25 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
                B(Star), R(9),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(30),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(21),
                B(Jump), U8(2),
                B(LdaTrue),
                B(Star), R(11),
                B(Mov), R(8), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
                B(Star), R(4),
                B(LdaZero),
                B(Star), R(3),
                B(Jump), U8(112),
                B(Ldar), R(8),
  /*   11 E> */ B(Throw),
  /*   16 S> */ B(LdaSmi), I8(42),
                B(Star), R(6),
                B(LdaFalse),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
                B(Star), R(6),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(7),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(7), U8(0),
                B(Ldar), R(6),
  /*   25 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(1),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(7), U8(1),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(7), U8(1),
                B(Star), R(9),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(31),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(9),
                B(JumpIfTrue), U8(22),
                B(Jump), U8(2),
                B(LdaTrue),
                B(Star), R(11),
                B(Mov), R(8), R(10),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(10), U8(2),
                B(Star), R(4),
                B(LdaSmi), I8(1),
                B(Star), R(3),
                B(Jump), U8(35),
                B(Ldar), R(8),
  /*   16 E> */ B(Throw),
                B(LdaUndefined),
                B(Star), R(6),
                B(LdaTrue),
                B(Star), R(7),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(6), U8(2),
                B(Star), R(4),
                B(LdaSmi), I8(2),
                B(Star), R(3),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(3),
                B(Jump), U8(8),
                B(Star), R(4),
                B(LdaSmi), I8(3),
                B(Star), R(3),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(5),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(6),
                B(CallRuntime), U16(Runtime::k_GeneratorClose), R(6), U8(1),
                B(Ldar), R(5),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(22),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(19),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(16),
                B(LdaSmi), I8(3),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(13),
                B(Jump), U8(14),
                B(Ldar), R(4),
  /*   25 S> */ B(Return),
                B(Ldar), R(4),
  /*   25 S> */ B(Return),
                B(Ldar), R(4),
  /*   25 S> */ B(Return),
                B(Ldar), R(4),
                B(ReThrow),
                B(LdaUndefined),
  /*   25 S> */ B(Return),
]
constant pool: [
]
handlers: [
  [51, 224, 230],
]

---
snippet: "
  function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 18
parameter count: 1
bytecode array length: 751
bytecodes: [
                B(Ldar), R(new_target),
                B(JumpIfUndefined), U8(33),
                B(CallRuntime), U16(Runtime::k_GeneratorGetContext), R(new_target), U8(1),
                B(PushContext), R(4),
                B(ResumeGenerator), R(new_target),
                B(Star), R(3),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(60),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(152),
                B(LdaSmi), I8(79),
                B(Star), R(5),
                B(CallRuntime), U16(Runtime::kAbort), R(5), U8(1),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CreateFunctionContext), U8(9),
                B(PushContext), R(0),
                B(Ldar), R(this),
                B(StaCurrentContextSlot), U8(4),
  /*   11 E> */ B(StackCheck),
                B(Mov), R(context), R(7),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(9),
                B(Mov), R(closure), R(8),
  /*   11 E> */ B(CallRuntime), U16(Runtime::kCreateJSGeneratorObject), R(8), U8(2),
                B(StaCurrentContextSlot), U8(5),
                B(Star), R(8),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(9),
                B(LdaZero),
                B(SuspendGenerator), R(9), U8(0),
                B(Ldar), R(8),
  /*   44 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(9), U8(1),
                B(Star), R(10),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(9), U8(1),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(30),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(11),
                B(JumpIfTrue), U8(21),
                B(Jump), U8(2),
                B(LdaTrue),
                B(Star), R(13),
                B(Mov), R(10), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
                B(Star), R(6),
                B(LdaZero),
                B(Star), R(5),
                B(JumpConstant), U8(12),
                B(Ldar), R(10),
  /*   11 E> */ B(Throw),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(0),
                B(PushContext), R(1),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(Mov), R(context), R(10),
                B(Mov), R(context), R(11),
  /*   30 S> */ B(CreateArrayLiteral), U8(1), U8(2), U8(17),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(2), U8(3),
                B(Star), R(13),
                B(CallProperty0), R(13), R(12), U8(5),
                B(JumpIfJSReceiver), U8(7),
                B(CallRuntime), U16(Runtime::kThrowSymbolIteratorInvalid), R(0), U8(0),
  /*   30 E> */ B(StaContextSlot), R(1), U8(7), U8(0),
                B(LdaSmi), I8(-2),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(17),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(134),
                B(LdaSmi), I8(79),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kAbort), R(12), U8(1),
  /*   27 S> */ B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(LdaNamedProperty), R(13), U8(3), U8(9),
                B(Star), R(12),
  /*   27 E> */ B(CallProperty0), R(12), R(13), U8(7),
  /*   27 E> */ B(StaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(12), U8(1),
                B(ToBooleanLogicalNot),
                B(JumpIfFalse), U8(13),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(12), U8(1),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(4), U8(11),
                B(JumpIfToBooleanTrue), U8(146),
                B(LdaContextSlot), R(1), U8(8), U8(0),
                B(Star), R(12),
                B(LdaNamedProperty), R(12), U8(5), U8(13),
                B(StaContextSlot), R(1), U8(10), U8(0),
                B(LdaSmi), I8(2),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaContextSlot), R(1), U8(10), U8(0),
                B(StaContextSlot), R(1), U8(6), U8(0),
  /*   16 E> */ B(StackCheck),
                B(Ldar), R(closure),
                B(CreateBlockContext), U8(6),
                B(PushContext), R(2),
                B(LdaTheHole),
                B(StaCurrentContextSlot), U8(4),
                B(LdaContextSlot), R(1), U8(6), U8(0),
                B(StaCurrentContextSlot), U8(4),
  /*   36 S> */ B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(LdaFalse),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(12), U8(2),
                B(Star), R(12),
                B(LdaImmutableContextSlot), R(1), U8(5), U8(0),
                B(Star), R(13),
                B(LdaSmi), I8(1),
                B(SuspendGenerator), R(13), U8(0),
                B(Ldar), R(12),
  /*   44 S> */ B(Return),
                B(LdaSmi), I8(-2),
                B(Star), R(3),
                B(CallRuntime), U16(Runtime::k_GeneratorGetInputOrDebugPos), R(13), U8(1),
                B(Star), R(14),
                B(CallRuntime), U16(Runtime::k_GeneratorGetResumeMode), R(13), U8(1),
                B(Star), R(15),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(15),
                B(JumpIfTrue), U8(42),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(15),
                B(JumpIfTrue), U8(33),
                B(Jump), U8(2),
                B(LdaTrue),
                B(Star), R(17),
                B(Mov), R(14), R(16),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(16), U8(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(PopContext), R(2),
                B(Star), R(9),
                B(LdaZero),
                B(Star), R(8),
                B(Jump), U8(71),
                B(Ldar), R(14),
  /*   36 E> */ B(Throw),
                B(PopContext), R(2),
                B(LdaZero),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(JumpLoop), U8(214), I8(0),
                B(Jump), U8(44),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(8),
                B(PushContext), R(2),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(12),
                B(LdaSmi), I8(2),
                B(TestEqualStrict), R(12), U8(15),
                B(JumpIfFalse), U8(8),
                B(LdaSmi), I8(1),
                B(StaContextSlot), R(1), U8(9), U8(0),
                B(LdaImmutableCurrentContextSlot), U8(4),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kReThrow), R(12), U8(1),
                B(PopContext), R(2),
                B(LdaSmi), I8(-1),
                B(Star), R(8),
                B(Jump), U8(8),
                B(Star), R(9),
                B(LdaSmi), I8(1),
                B(Star), R(8),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(10),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaZero),
                B(TestEqualStrict), R(11), U8(16),
                B(JumpIfTrue), U8(150),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(11),
                B(LdaNamedProperty), R(11), U8(9), U8(17),
                B(StaContextSlot), R(1), U8(11), U8(0),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestUndetectable),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(127),
                B(LdaContextSlot), R(1), U8(9), U8(0),
                B(Star), R(11),
                B(LdaSmi), I8(1),
                B(TestEqualStrict), R(11), U8(20),
                B(JumpIfFalse), U8(69),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(TestTypeOf), U8(5),
                B(JumpIfFalse), U8(4),
                B(Jump), U8(18),
                B(Wide), B(LdaSmi), I16(130),
                B(Star), R(11),
                B(LdaConstant), U8(10),
                B(Star), R(12),
                B(CallRuntime), U16(Runtime::kNewTypeError), R(11), U8(2),
                B(Throw),
                B(Mov), R(context), R(11),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(12),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(13),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(12), U8(2),
                B(Jump), U8(20),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(11),
                B(Star), R(11),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Ldar), R(11),
                B(PushContext), R(2),
                B(PopContext), R(2),
                B(Jump), U8(47),
                B(LdaContextSlot), R(1), U8(11), U8(0),
                B(Star), R(11),
                B(LdaContextSlot), R(1), U8(7), U8(0),
                B(Star), R(12),
                B(InvokeIntrinsic), U8(Runtime::k_Call), R(11), U8(2),
                B(StaContextSlot), R(1), U8(12), U8(0),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(InvokeIntrinsic), U8(Runtime::k_IsJSReceiver), R(11), U8(1),
                B(JumpIfToBooleanFalse), U8(4),
                B(Jump), U8(13),
                B(LdaContextSlot), R(1), U8(12), U8(0),
                B(Star), R(11),
                B(CallRuntime), U16(Runtime::kThrowIteratorResultNotAnObject), R(11), U8(1),
                B(Ldar), R(10),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(8),
                B(JumpIfTrue), U8(10),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(8),
                B(JumpIfTrue), U8(17),
                B(Jump), U8(28),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaSmi), I8(1),
                B(Star), R(5),
                B(Mov), R(9), R(6),
                B(Jump), U8(47),
                B(PopContext), R(1),
                B(PopContext), R(1),
                B(LdaSmi), I8(2),
                B(Star), R(5),
                B(Mov), R(9), R(6),
                B(Jump), U8(34),
                B(PopContext), R(1),
                B(LdaUndefined),
                B(Star), R(8),
                B(LdaTrue),
                B(Star), R(9),
                B(InvokeIntrinsic), U8(Runtime::k_CreateIterResultObject), R(8), U8(2),
                B(Star), R(6),
                B(LdaSmi), I8(3),
                B(Star), R(5),
                B(Jump), U8(14),
                B(LdaSmi), I8(-1),
                B(Star), R(5),
                B(Jump), U8(8),
                B(Star), R(6),
                B(LdaSmi), I8(4),
                B(Star), R(5),
                B(LdaTheHole),
                B(SetPendingMessage),
                B(Star), R(7),
                B(LdaImmutableCurrentContextSlot), U8(5),
                B(Star), R(8),
                B(CallRuntime), U16(Runtime::k_GeneratorClose), R(8), U8(1),
                B(Ldar), R(7),
                B(SetPendingMessage),
                B(LdaZero),
                B(TestEqualStrictNoFeedback), R(5),
                B(JumpIfTrue), U8(28),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(5),
                B(JumpIfTrue), U8(25),
                B(LdaSmi), I8(2),
                B(TestEqualStrictNoFeedback), R(5),
                B(JumpIfTrue), U8(22),
                B(LdaSmi), I8(3),
                B(TestEqualStrictNoFeedback), R(5),
                B(JumpIfTrue), U8(19),
                B(LdaSmi), I8(4),
                B(TestEqualStrictNoFeedback), R(5),
                B(JumpIfTrue), U8(16),
                B(Jump), U8(17),
                B(Ldar), R(6),
  /*   44 S> */ B(Return),
                B(Ldar), R(6),
  /*   44 S> */ B(Return),
                B(Ldar), R(6),
                B(ReThrow),
                B(Ldar), R(6),
  /*   44 S> */ B(Return),
                B(Ldar), R(6),
                B(ReThrow),
                B(LdaUndefined),
  /*   44 S> */ B(Return),
]
constant pool: [
  FIXED_ARRAY_TYPE,
  TUPLE2_TYPE,
  SYMBOL_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["next"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["done"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["value"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE [".catch"],
  FIXED_ARRAY_TYPE,
  ONE_BYTE_INTERNALIZED_STRING_TYPE ["return"],
  ONE_BYTE_INTERNALIZED_STRING_TYPE [""],
  FIXED_ARRAY_TYPE,
  Smi [563],
]
handlers: [
  [51, 675, 681],
  [146, 437, 443],
  [149, 393, 395],
  [530, 546, 548],
]

