#
# Autogenerated by generate-bytecode-expectations.
#

---
wrap: no
test function name: f

---
snippet: "
  function* f() { }
  f();
"
frame size: 12
parameter count: 1
bytecode array length: 198
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(53),
                B(LdaSmi), I8(78),
                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),
                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, 140, 146],
]

---
snippet: "
  function* f() { yield 42 }
  f();
"
frame size: 12
parameter count: 1
bytecode array length: 289
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(59),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(1),
                B(JumpIfTrue), U8(128),
                B(LdaSmi), I8(78),
                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),
                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(111),
                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),
                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, 222, 228],
]

---
snippet: "
  function* f() { for (let x of [42]) yield x }
  f();
"
frame size: 18
parameter count: 1
bytecode array length: 752
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(59),
                B(LdaSmi), I8(1),
                B(TestEqualStrictNoFeedback), R(3),
                B(JumpIfTrue), U8(151),
                B(LdaSmi), I8(78),
                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),
                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(9),
                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(133),
                B(LdaSmi), I8(78),
                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(145),
                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),
                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(213), I8(0),
                B(Jump), U8(44),
                B(Star), R(12),
                B(Ldar), R(closure),
                B(CreateCatchContext), R(12), U8(7), U8(8),
                B(Star), R(11),
                B(PushContext), R(2),
                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(153),
                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(Star), R(11),
                B(TestUndetectable), R(11),
                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,
  CONSTANT_ELEMENTS_PAIR_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 [565],
]
handlers: [
  [51, 676, 682],
  [145, 435, 441],
  [148, 391, 393],
  [531, 547, 549],
]

